diff options
author | codeworkx <daniel.hillenbrand@codeworkx.de> | 2012-06-02 13:09:29 +0200 |
---|---|---|
committer | codeworkx <daniel.hillenbrand@codeworkx.de> | 2012-06-02 13:09:29 +0200 |
commit | c6da2cfeb05178a11c6d062a06f8078150ee492f (patch) | |
tree | f3b4021d252c52d6463a9b3c1bb7245e399b009c /sound/soc | |
parent | c6d7c4dbff353eac7919342ae6b3299a378160a6 (diff) | |
download | kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.zip kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.gz kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.bz2 |
samsung update 1
Diffstat (limited to 'sound/soc')
85 files changed, 89968 insertions, 573 deletions
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 98175a0..7db1513 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -96,6 +96,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_WM9705 if SND_SOC_AC97_BUS select SND_SOC_WM9712 if SND_SOC_AC97_BUS select SND_SOC_WM9713 if SND_SOC_AC97_BUS + select SND_SOC_MC1N2 if I2C help Normally ASoC codec drivers are only built if a machine driver which uses them is also built since they are only usable with a machine @@ -386,3 +387,5 @@ config SND_SOC_WM2000 config SND_SOC_WM9090 tristate + +source "sound/soc/codecs/mc1n2/Kconfig" diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile index fd85584..090ae93 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile @@ -172,6 +172,7 @@ obj-$(CONFIG_SND_SOC_WM9705) += snd-soc-wm9705.o obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o obj-$(CONFIG_SND_SOC_WM_HUBS) += snd-soc-wm-hubs.o +obj-$(CONFIG_SND_SOC_MC1N2) += mc1n2/ # Amp obj-$(CONFIG_SND_SOC_LM4857) += snd-soc-lm4857.o diff --git a/sound/soc/codecs/mc1n2/Kconfig b/sound/soc/codecs/mc1n2/Kconfig new file mode 100644 index 0000000..2b521c1 --- /dev/null +++ b/sound/soc/codecs/mc1n2/Kconfig @@ -0,0 +1,12 @@ +config SND_SOC_MC1N2 + tristate + depends on SND_SOC && I2C + select SND_HWDEP + +config SND_SOC_USE_EXTERNAL_MIC_BIAS + bool "Use External Mic Bias" + +config SND_SOC_MC1N2_DEBUG + bool "MC-1N2 verbose debug messages while core driver call" + select SND_DEBUG + depends on SND_SOC_MC1N2 diff --git a/sound/soc/codecs/mc1n2/Makefile b/sound/soc/codecs/mc1n2/Makefile new file mode 100644 index 0000000..9c6b1c0 --- /dev/null +++ b/sound/soc/codecs/mc1n2/Makefile @@ -0,0 +1,4 @@ +snd-soc-mc1n2-objs := mc1n2.o mc1n2_dbg.o \ + mcdevif.o mcdevprof.o mcdriver.o mcmachdep.o mcpacking.o mcresctrl.o mcservice.o mcdebuglog.o mcdriver_AA.o + +obj-$(CONFIG_SND_SOC_MC1N2) += snd-soc-mc1n2.o diff --git a/sound/soc/codecs/mc1n2/mc1n2.c b/sound/soc/codecs/mc1n2/mc1n2.c new file mode 100644 index 0000000..975f40b --- /dev/null +++ b/sound/soc/codecs/mc1n2/mc1n2.c @@ -0,0 +1,4563 @@ +/* + * MC-1N2 ASoC codec driver + * + * Copyright (c) 2010-2011 Yamaha Corporation + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#include <linux/delay.h> +#include <linux/errno.h> +#include <linux/slab.h> +#include <linux/i2c.h> +#include <linux/init.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/mutex.h> +#include <linux/types.h> +#include <sound/hwdep.h> +#include <sound/initval.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> +#include <sound/soc.h> +#include <sound/soc-dapm.h> +#include <sound/tlv.h> +#include "mc1n2.h" +#include "mc1n2_priv.h" + +#include <plat/gpio-cfg.h> +#include <mach/gpio.h> + +#ifdef CONFIG_TARGET_LOCALE_NAATT_TEMP +/* CONFIG_TARGET_LOCALE_NAATT_TEMP is intentionally introduced temporarily*/ + +#include "mc1n2_cfg_gsm.h" +#elif defined(CONFIG_MACH_Q1_BD) +#include "mc1n2_cfg_q1.h" +#elif defined(CONFIG_MACH_U1_KOR_LGT) +#include "mc1n2_cfg_lgt.h" +#elif defined(CONFIG_MACH_PX) +#include "mc1n2_cfg_px.h" +#else +#include "mc1n2_cfg.h" +#endif + +extern int mc1n2_set_mclk_source(bool on); +static int audio_ctrl_mic_bias_gpio(struct mc1n2_platform_data *pdata, int mic, bool on); + +#define MC1N2_DRIVER_VERSION "1.0.4" + +#define MC1N2_NAME "mc1n2" + +#define MC1N2_I2S_RATE (SNDRV_PCM_RATE_8000_48000) +#define MC1N2_I2S_FORMATS \ + (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \ + SNDRV_PCM_FMTBIT_S24_3LE) + +#define MC1N2_PCM_RATE (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000) +#define MC1N2_PCM_FORMATS \ + (SNDRV_PCM_FMTBIT_S8 | \ + SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE | \ + SNDRV_PCM_FMTBIT_A_LAW | SNDRV_PCM_FMTBIT_MU_LAW) + +#define MC1N2_HWDEP_ID "mc1n2" + +#define MC1N2_HW_ID_AA 0x78 +#define MC1N2_HW_ID_AB 0x79 + +#define MC1N2_WAITTIME_MICIN 100 + +#ifdef ALSA_VER_ANDROID_3_0 +static struct i2c_client *mc1n2_i2c; +#endif + +/* + * Driver private data structure + */ +static UINT8 mc1n2_hwid; + +static size_t mc1n2_path_channel_tbl[] = { + offsetof(MCDRV_PATH_INFO, asDit0[0]), + offsetof(MCDRV_PATH_INFO, asDit1[0]), + offsetof(MCDRV_PATH_INFO, asDit2[0]), + offsetof(MCDRV_PATH_INFO, asHpOut[0]), + offsetof(MCDRV_PATH_INFO, asHpOut[1]), + offsetof(MCDRV_PATH_INFO, asSpOut[0]), + offsetof(MCDRV_PATH_INFO, asSpOut[1]), + offsetof(MCDRV_PATH_INFO, asRcOut[0]), + offsetof(MCDRV_PATH_INFO, asLout1[0]), + offsetof(MCDRV_PATH_INFO, asLout1[1]), + offsetof(MCDRV_PATH_INFO, asLout2[0]), + offsetof(MCDRV_PATH_INFO, asLout2[1]), + offsetof(MCDRV_PATH_INFO, asDac[0]), + offsetof(MCDRV_PATH_INFO, asDac[1]), + offsetof(MCDRV_PATH_INFO, asAe[0]), + offsetof(MCDRV_PATH_INFO, asAdc0[0]), + offsetof(MCDRV_PATH_INFO, asAdc0[1]), + offsetof(MCDRV_PATH_INFO, asMix[0]), + offsetof(MCDRV_PATH_INFO, asBias[0]), +}; +#define MC1N2_N_PATH_CHANNELS (sizeof(mc1n2_path_channel_tbl) / sizeof(size_t)) + +struct mc1n2_port_params { + UINT8 rate; + UINT8 bits[SNDRV_PCM_STREAM_LAST+1]; + UINT8 pcm_mono[SNDRV_PCM_STREAM_LAST+1]; + UINT8 pcm_order[SNDRV_PCM_STREAM_LAST+1]; + UINT8 pcm_law[SNDRV_PCM_STREAM_LAST+1]; + UINT8 master; + UINT8 inv; + UINT8 format; + UINT8 bckfs; + UINT8 pcm_clkdown; + UINT8 channels; + UINT8 stream; /* bit0: Playback, bit1: Capture */ + UINT8 dir[MC1N2_N_PATH_CHANNELS]; /* path settings for DIR */ + MCDRV_CHANNEL dit; /* path settings for DIT */ +}; + +struct mc1n2_data { + struct mutex mutex; + struct mc1n2_setup setup; + struct mc1n2_port_params port[IOPORT_NUM]; + struct snd_hwdep *hwdep; + struct mc1n2_platform_data *pdata; + int clk_update; + MCDRV_PATH_INFO path_store; + MCDRV_VOL_INFO vol_store; + MCDRV_DIO_INFO dio_store; + MCDRV_DAC_INFO dac_store; + MCDRV_ADC_INFO adc_store; + MCDRV_SP_INFO sp_store; + MCDRV_DNG_INFO dng_store; + MCDRV_SYSEQ_INFO syseq_store; + MCDRV_AE_INFO ae_store; + MCDRV_PDM_INFO pdm_store; + UINT32 hdmicount; + UINT32 delay_mic1in; +}; + +struct mc1n2_info_store { + UINT32 get; + UINT32 set; + size_t offset; + UINT32 flags; +}; + +struct mc1n2_info_store mc1n2_info_store_tbl[] = { + {MCDRV_GET_DIGITALIO, MCDRV_SET_DIGITALIO, + offsetof(struct mc1n2_data, dio_store), 0x1ff}, + {MCDRV_GET_DAC, MCDRV_SET_DAC, + offsetof(struct mc1n2_data, dac_store), 0x7}, + {MCDRV_GET_ADC, MCDRV_SET_ADC, + offsetof(struct mc1n2_data, adc_store), 0x7}, + {MCDRV_GET_SP, MCDRV_SET_SP, + offsetof(struct mc1n2_data, sp_store), 0}, + {MCDRV_GET_DNG, MCDRV_SET_DNG, + offsetof(struct mc1n2_data, dng_store), 0x3f3f3f}, + {MCDRV_GET_SYSEQ, MCDRV_SET_SYSEQ, + offsetof(struct mc1n2_data, syseq_store), 0x3}, + {0, MCDRV_SET_AUDIOENGINE, + offsetof(struct mc1n2_data, ae_store), 0x1ff}, + {MCDRV_GET_PDM, MCDRV_SET_PDM, + offsetof(struct mc1n2_data, pdm_store), 0x7f}, + {MCDRV_GET_PATH, MCDRV_SET_PATH, + offsetof(struct mc1n2_data, path_store), 0}, + {MCDRV_GET_VOLUME, MCDRV_SET_VOLUME, + offsetof(struct mc1n2_data, vol_store), 0}, +}; +#define MC1N2_N_INFO_STORE (sizeof(mc1n2_info_store_tbl) / sizeof(struct mc1n2_info_store)) + +#define mc1n2_is_in_playback(p) ((p)->stream & (1 << SNDRV_PCM_STREAM_PLAYBACK)) +#define mc1n2_is_in_capture(p) ((p)->stream & (1 << SNDRV_PCM_STREAM_CAPTURE)) +#define get_port_id(id) (id-1) + +static int mc1n2_current_mode; + +#ifndef ALSA_VER_ANDROID_3_0 +static struct snd_soc_codec *mc1n2_codec; +#endif + +#ifndef ALSA_VER_ANDROID_3_0 +static struct snd_soc_codec *mc1n2_get_codec_data(void) +{ + return mc1n2_codec; +} + +static void mc1n2_set_codec_data(struct snd_soc_codec *codec) +{ + mc1n2_codec = codec; +} +#endif + +/* deliver i2c access to machdep */ +struct i2c_client *mc1n2_get_i2c_client(void) +{ +#ifdef ALSA_VER_ANDROID_3_0 + return mc1n2_i2c; +#else + return mc1n2_codec->control_data; +#endif +} + +static int audio_ctrl_mic_bias_gpio(struct mc1n2_platform_data *pdata, int mic, bool on) +{ + if (!pdata) { + pr_err("failed to control mic bias\n"); + return -EINVAL; + } + + if ((mic & MAIN_MIC) && (pdata->set_main_mic_bias != NULL)) + pdata->set_main_mic_bias(on); + + if ((mic & SUB_MIC) && (pdata->set_sub_mic_bias != NULL)) + pdata->set_sub_mic_bias(on); + + return 0; +} + +/* + * DAI (PCM interface) + */ +/* SRC_RATE settings @ 73728000Hz (ideal PLL output) */ +static int mc1n2_src_rate[][SNDRV_PCM_STREAM_LAST+1] = { + /* DIR, DIT */ + {32768, 4096}, /* MCDRV_FS_48000 */ + {30106, 4458}, /* MCDRV_FS_44100 */ + {21845, 6144}, /* MCDRV_FS_32000 */ + {0, 0}, /* N/A */ + {0, 0}, /* N/A */ + {15053, 8916}, /* MCDRV_FS_22050 */ + {10923, 12288}, /* MCDRV_FS_16000 */ + {0, 0}, /* N/A */ + {0, 0}, /* N/A */ + {7526, 17833}, /* MCDRV_FS_11025 */ + {5461, 24576}, /* MCDRV_FS_8000 */ +}; + +#define mc1n2_fs_to_srcrate(rate,dir) mc1n2_src_rate[(rate)][(dir)]; + +static int mc1n2_setup_dai(struct mc1n2_data *mc1n2, int id, int mode, int dir) +{ + MCDRV_DIO_INFO dio; + MCDRV_DIO_PORT *port = &dio.asPortInfo[id]; + struct mc1n2_setup *setup = &mc1n2->setup; + struct mc1n2_port_params *par = &mc1n2->port[id]; + UINT32 update = 0; + int i; + + memset(&dio, 0, sizeof(MCDRV_DIO_INFO)); + + if (par->stream == 0) { + port->sDioCommon.bMasterSlave = par->master; + port->sDioCommon.bAutoFs = MCDRV_AUTOFS_OFF; + port->sDioCommon.bFs = par->rate; + port->sDioCommon.bBckFs = par->bckfs; + port->sDioCommon.bInterface = mode; + port->sDioCommon.bBckInvert = par->inv; + if (mode == MCDRV_DIO_PCM) { + port->sDioCommon.bPcmHizTim = setup->pcm_hiz_redge[id]; + port->sDioCommon.bPcmClkDown = par->pcm_clkdown; + port->sDioCommon.bPcmFrame = par->format; + port->sDioCommon.bPcmHighPeriod = setup->pcm_hperiod[id]; + } + update |= MCDRV_DIO0_COM_UPDATE_FLAG; + } + + if (dir == SNDRV_PCM_STREAM_PLAYBACK) { + port->sDir.wSrcRate = mc1n2_fs_to_srcrate(par->rate, dir); + if (mode == MCDRV_DIO_DA) { + port->sDir.sDaFormat.bBitSel = par->bits[dir]; + port->sDir.sDaFormat.bMode = par->format; + } else { + port->sDir.sPcmFormat.bMono = par->pcm_mono[dir]; + port->sDir.sPcmFormat.bOrder = par->pcm_order[dir]; + if (setup->pcm_extend[id]) { + port->sDir.sPcmFormat.bOrder |= + (1 << setup->pcm_extend[id]); + } + port->sDir.sPcmFormat.bLaw = par->pcm_law[dir]; + port->sDir.sPcmFormat.bBitSel = par->bits[dir]; + } + for (i = 0; i < DIO_CHANNELS; i++) { + if (i && par->channels == 1) { + port->sDir.abSlot[i] = port->sDir.abSlot[i-1]; + } else { + port->sDir.abSlot[i] = setup->slot[id][dir][i]; + } + + } + update |= MCDRV_DIO0_DIR_UPDATE_FLAG; + } + + if (dir == SNDRV_PCM_STREAM_CAPTURE) { + port->sDit.wSrcRate = mc1n2_fs_to_srcrate(par->rate, dir); + if (mode == MCDRV_DIO_DA) { + port->sDit.sDaFormat.bBitSel = par->bits[dir]; + port->sDit.sDaFormat.bMode = par->format; + } else { + port->sDit.sPcmFormat.bMono = par->pcm_mono[dir]; + port->sDit.sPcmFormat.bOrder = par->pcm_order[dir]; + if (setup->pcm_extend[id]) { + port->sDit.sPcmFormat.bOrder |= + (1 << setup->pcm_extend[id]); + } + port->sDit.sPcmFormat.bLaw = par->pcm_law[dir]; + port->sDit.sPcmFormat.bBitSel = par->bits[dir]; + } + for (i = 0; i < DIO_CHANNELS; i++) { + port->sDit.abSlot[i] = setup->slot[id][dir][i]; + } + update |= MCDRV_DIO0_DIT_UPDATE_FLAG; + } + + return _McDrv_Ctrl(MCDRV_SET_DIGITALIO, &dio, update << (id*3)); +} + +static int mc1n2_control_dir(struct mc1n2_data *mc1n2, int id, int enable) +{ + MCDRV_PATH_INFO info; + MCDRV_CHANNEL *ch; + int activate; + int i; + + memset(&info, 0, sizeof(MCDRV_PATH_INFO)); + + for (i = 0; i < MC1N2_N_PATH_CHANNELS; i++) { + ch = (MCDRV_CHANNEL *)((void *)&info + mc1n2_path_channel_tbl[i]); + + switch (i) { + case 0: +#ifdef DIO0_DAI_ENABLE + activate = enable && mc1n2_is_in_capture(&mc1n2->port[0]); +#else + activate = enable; +#endif + break; + + case 1: +#ifdef DIO1_DAI_ENABLE + activate = enable && mc1n2_is_in_capture(&mc1n2->port[1]); +#else + activate = enable; +#endif + break; + case 2: +#ifdef DIO2_DAI_ENABLE + activate = enable && mc1n2_is_in_capture(&mc1n2->port[2]); +#else + activate = enable; +#endif + break; + default: + activate = enable; + break; + } + + if (mc1n2->port[id].dir[i]) { + ch->abSrcOnOff[3] = 0x1 << (id * 2 + !activate); + } + } + + return _McDrv_Ctrl(MCDRV_SET_PATH, &info, 0); +} + +static int mc1n2_control_dit(struct mc1n2_data *mc1n2, int id, int enable) +{ + MCDRV_PATH_INFO info; + MCDRV_CHANNEL *ch = info.asDit0 + id; + int stream; + int i; + + memset(&info, 0, sizeof(MCDRV_PATH_INFO)); + + for (i = 0; i < SOURCE_BLOCK_NUM; i++) { + if (i == 3) { + stream = 0; + +#ifdef DIO0_DAI_ENABLE + stream |= mc1n2_is_in_playback(&mc1n2->port[0]); +#endif +#ifdef DIO1_DAI_ENABLE + stream |= mc1n2_is_in_playback(&mc1n2->port[1]) << 2; +#endif +#ifdef DIO2_DAI_ENABLE + stream |= mc1n2_is_in_playback(&mc1n2->port[2]) << 4; +#endif + + ch->abSrcOnOff[3] = (stream & mc1n2->port[id].dit.abSrcOnOff[3]) << !enable; + } else { + ch->abSrcOnOff[i] = mc1n2->port[id].dit.abSrcOnOff[i] << !enable; + } + } + + return _McDrv_Ctrl(MCDRV_SET_PATH, &info, 0); +} + +static int mc1n2_update_clock(struct mc1n2_data *mc1n2) +{ + MCDRV_CLOCK_INFO info; + + memset(&info, 0, sizeof(MCDRV_CLOCK_INFO)); + info.bCkSel = mc1n2->setup.init.bCkSel; + info.bDivR0 = mc1n2->setup.init.bDivR0; + info.bDivF0 = mc1n2->setup.init.bDivF0; + info.bDivR1 = mc1n2->setup.init.bDivR1; + info.bDivF1 = mc1n2->setup.init.bDivF1; + + return _McDrv_Ctrl(MCDRV_UPDATE_CLOCK, &info, 0); +} + +static int mc1n2_set_clkdiv_common(struct mc1n2_data *mc1n2, int div_id, int div) +{ + struct mc1n2_setup *setup = &mc1n2->setup; + + switch (div_id) { + case MC1N2_CKSEL: + switch (div) { + case 0: + setup->init.bCkSel = MCDRV_CKSEL_CMOS; + break; + case 1: + setup->init.bCkSel = MCDRV_CKSEL_TCXO; + break; + case 2: + setup->init.bCkSel = MCDRV_CKSEL_CMOS_TCXO; + break; + case 3: + setup->init.bCkSel = MCDRV_CKSEL_TCXO_CMOS; + break; + default: + return -EINVAL; + } + break; + case MC1N2_DIVR0: + if ((div < 1) || (div > 127)) { + return -EINVAL; + } + setup->init.bDivR0 = div; + break; + case MC1N2_DIVF0: + if ((div < 1) || (div > 255)) { + return -EINVAL; + } + setup->init.bDivF0 = div; + break; + case MC1N2_DIVR1: + if ((div < 1) || (div > 127)) { + return -EINVAL; + } + setup->init.bDivR1 = div; + break; + case MC1N2_DIVF1: + if ((div < 1) || (div > 255)) { + return -EINVAL; + } + setup->init.bDivF1 = div; + break; + default: + return -EINVAL; + } + + mc1n2->clk_update = 1; + + return 0; +} + +static int mc1n2_set_fmt_common(struct mc1n2_port_params *port, unsigned int fmt) +{ + /* master */ + switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { + case SND_SOC_DAIFMT_CBM_CFM: + port->master = MCDRV_DIO_MASTER; + break; + case SND_SOC_DAIFMT_CBS_CFS: + port->master = MCDRV_DIO_SLAVE; + break; + default: + return -EINVAL; + } + + /* inv */ + switch (fmt & SND_SOC_DAIFMT_INV_MASK) { + case SND_SOC_DAIFMT_NB_NF: + port->inv = MCDRV_BCLK_NORMAL; + break; + case SND_SOC_DAIFMT_IB_NF: + port->inv = MCDRV_BCLK_INVERT; + break; + default: + return -EINVAL; + } + +#ifdef ALSA_VER_1_0_19 + /* clock */ + switch (fmt & SND_SOC_DAIFMT_CLOCK_MASK) { + case SND_SOC_DAIFMT_SYNC: + /* just validating */ + break; + default: + return -EINVAL; + } +#endif + + return 0; +} + +static int mc1n2_i2s_set_clkdiv(struct snd_soc_dai *dai, int div_id, int div) +{ + struct snd_soc_codec *codec = dai->codec; +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + struct mc1n2_port_params *port = &mc1n2->port[get_port_id(dai->id)]; + + switch (div_id) { + case MC1N2_BCLK_MULT: + switch (div) { + case MC1N2_LRCK_X32: + port->bckfs = MCDRV_BCKFS_32; + break; + case MC1N2_LRCK_X48: + port->bckfs = MCDRV_BCKFS_48; + break; + case MC1N2_LRCK_X64: + port->bckfs = MCDRV_BCKFS_64; + break; + default: + return -EINVAL; + } + break; + default: + return mc1n2_set_clkdiv_common(mc1n2, div_id, div); + } + + return 0; +} + +static int mc1n2_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) +{ + struct snd_soc_codec *codec = dai->codec; +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + struct mc1n2_port_params *port = &mc1n2->port[get_port_id(dai->id)]; + + /* format */ + switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { + case SND_SOC_DAIFMT_I2S: + port->format = MCDRV_DAMODE_I2S; + break; + case SND_SOC_DAIFMT_RIGHT_J: + port->format = MCDRV_DAMODE_TAILALIGN; + break; + case SND_SOC_DAIFMT_LEFT_J: + port->format = MCDRV_DAMODE_HEADALIGN; + break; + default: + return -EINVAL; + } + + return mc1n2_set_fmt_common(port, fmt); +} + +static int mc1n2_i2s_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params, + struct snd_soc_dai *dai) +{ +#ifdef ALSA_VER_ANDROID_3_0 + struct snd_soc_codec *codec = dai->codec; +#else + struct snd_soc_pcm_runtime *runtime = snd_pcm_substream_chip(substream); +#ifdef ALSA_VER_1_0_19 + struct snd_soc_codec *codec = runtime->socdev->codec; +#else + struct snd_soc_codec *codec = runtime->socdev->card->codec; +#endif +#endif +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + struct mc1n2_port_params *port = &mc1n2->port[get_port_id(dai->id)]; + int dir = substream->stream; + int rate; + int err = 0; + + dbg_info("hw_params: [%d] name=%s, dir=%d, rate=%d, bits=%d, ch=%d\n", + get_port_id(dai->id), substream->name, dir, + params_rate(params), params_format(params), params_channels(params)); + + /* format (bits) */ + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_S16_LE: + port->bits[dir] = MCDRV_BITSEL_16; + break; + case SNDRV_PCM_FORMAT_S20_3LE: + port->bits[dir] = MCDRV_BITSEL_20; + break; + case SNDRV_PCM_FORMAT_S24_3LE: + port->bits[dir] = MCDRV_BITSEL_24; + break; + default: + return -EINVAL; + } + + /* rate */ + switch (params_rate(params)) { + case 8000: + rate = MCDRV_FS_8000; + break; + case 11025: + rate = MCDRV_FS_11025; + break; + case 16000: + rate = MCDRV_FS_16000; + break; + case 22050: + rate = MCDRV_FS_22050; + break; + case 32000: + rate = MCDRV_FS_32000; + break; + case 44100: + rate = MCDRV_FS_44100; + break; + case 48000: + rate = MCDRV_FS_48000; + break; + default: + return -EINVAL; + } + + mutex_lock(&mc1n2->mutex); + + if ((port->stream & ~(1 << dir)) && (rate != port->rate)) { + err = -EBUSY; + goto error; + } + +#ifdef CONFIG_SND_SAMSUNG_RP + if ((dir == SNDRV_PCM_STREAM_PLAYBACK) && (get_port_id(dai->id) == 0) + && (port->stream & (1 << dir)) && (rate == port->rate)) { + /* During ULP Audio, DAI should not be touched + if i2s port already opened. */ + err = 0; + goto error; + } +#endif + + port->rate = rate; + port->channels = params_channels(params); + + err = mc1n2_update_clock(mc1n2); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in mc1n2_update_clock\n", err); + err = -EIO; + goto error; + } + + err = mc1n2_setup_dai(mc1n2, get_port_id(dai->id), MCDRV_DIO_DA, dir); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in mc1n2_setup_dai\n", err); + err = -EIO; + goto error; + } + + if (dir == SNDRV_PCM_STREAM_PLAYBACK) { + err = mc1n2_control_dir(mc1n2, get_port_id(dai->id), 1); + } else { + err = mc1n2_control_dit(mc1n2, get_port_id(dai->id), 1); + } + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in mc1n2_control_dir/dit\n", err); + err = -EIO; + goto error; + } + + port->stream |= (1 << dir); + +error: + mutex_unlock(&mc1n2->mutex); + + return err; +} + +static int mc1n2_hw_free(struct snd_pcm_substream *substream, + struct snd_soc_dai *dai) +{ +#ifdef ALSA_VER_ANDROID_3_0 + struct snd_soc_codec *codec = dai->codec; +#else + struct snd_soc_pcm_runtime *runtime = snd_pcm_substream_chip(substream); +#ifdef ALSA_VER_1_0_19 + struct snd_soc_codec *codec = runtime->socdev->codec; +#else + struct snd_soc_codec *codec = runtime->socdev->card->codec; +#endif +#endif +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + struct mc1n2_port_params *port = &mc1n2->port[get_port_id(dai->id)]; + int dir = substream->stream; + int err; + + mutex_lock(&mc1n2->mutex); + + if (!(port->stream & (1 << dir))) { + err = 0; + goto error; + } + +#ifdef CONFIG_SND_SAMSUNG_RP + if ((dir == SNDRV_PCM_STREAM_PLAYBACK) && (get_port_id(dai->id) == 0)) { + /* Leave codec opened during ULP Audio */ + err = 0; + goto error; + } +#endif + + if (dir == SNDRV_PCM_STREAM_PLAYBACK) { + err = mc1n2_control_dir(mc1n2, get_port_id(dai->id), 0); + } else { + err = mc1n2_control_dit(mc1n2, get_port_id(dai->id), 0); + } + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in mc1n2_control_dir/dit\n", err); + err = -EIO; + goto error; + } + + port->stream &= ~(1 << dir); + +error: + mutex_unlock(&mc1n2->mutex); + + return err; +} + +static int mc1n2_pcm_set_clkdiv(struct snd_soc_dai *dai, int div_id, int div) +{ + struct snd_soc_codec *codec = dai->codec; +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + struct mc1n2_port_params *port = &mc1n2->port[get_port_id(dai->id)]; + + switch (div_id) { + case MC1N2_BCLK_MULT: + switch (div) { + case MC1N2_LRCK_X8: + port->bckfs = MCDRV_BCKFS_16; + port->pcm_clkdown = MCDRV_PCM_CLKDOWN_HALF; + break; + case MC1N2_LRCK_X16: + port->bckfs = MCDRV_BCKFS_16; + port->pcm_clkdown = MCDRV_PCM_CLKDOWN_OFF; + break; + case MC1N2_LRCK_X24: + port->bckfs = MCDRV_BCKFS_48; + port->pcm_clkdown = MCDRV_PCM_CLKDOWN_HALF; + break; + case MC1N2_LRCK_X32: + port->bckfs = MCDRV_BCKFS_32; + port->pcm_clkdown = MCDRV_PCM_CLKDOWN_OFF; + break; + case MC1N2_LRCK_X48: + port->bckfs = MCDRV_BCKFS_48; + port->pcm_clkdown = MCDRV_PCM_CLKDOWN_OFF; + break; + case MC1N2_LRCK_X64: + port->bckfs = MCDRV_BCKFS_64; + port->pcm_clkdown = MCDRV_PCM_CLKDOWN_OFF; + break; + case MC1N2_LRCK_X128: + port->bckfs = MCDRV_BCKFS_128; + port->pcm_clkdown = MCDRV_PCM_CLKDOWN_OFF; + break; + case MC1N2_LRCK_X256: + port->bckfs = MCDRV_BCKFS_256; + port->pcm_clkdown = MCDRV_PCM_CLKDOWN_OFF; + break; + case MC1N2_LRCK_X512: + port->bckfs = MCDRV_BCKFS_512; + port->pcm_clkdown = MCDRV_PCM_CLKDOWN_OFF; + break; + } + break; + default: + return mc1n2_set_clkdiv_common(mc1n2, div_id, div); + } + + return 0; +} + +static int mc1n2_pcm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) +{ + struct snd_soc_codec *codec = dai->codec; +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + struct mc1n2_port_params *port = &mc1n2->port[get_port_id(dai->id)]; + + /* format */ + switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { + case SND_SOC_DAIFMT_DSP_A: + port->format = MCDRV_PCM_SHORTFRAME; + break; + case SND_SOC_DAIFMT_DSP_B: + port->format = MCDRV_PCM_LONGFRAME; + break; + default: + return -EINVAL; + } + + return mc1n2_set_fmt_common(port, fmt); +} + +static int mc1n2_pcm_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params, + struct snd_soc_dai *dai) +{ +#ifdef ALSA_VER_ANDROID_3_0 + struct snd_soc_codec *codec = dai->codec; +#else + struct snd_soc_pcm_runtime *runtime = snd_pcm_substream_chip(substream); +#ifdef ALSA_VER_1_0_19 + struct snd_soc_codec *codec = runtime->socdev->codec; +#else + struct snd_soc_codec *codec = runtime->socdev->card->codec; +#endif +#endif +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + struct mc1n2_port_params *port = &mc1n2->port[get_port_id(dai->id)]; + int dir = substream->stream; + int rate; + int err; + + dbg_info("hw_params: [%d] name=%s, dir=%d, rate=%d, bits=%d, ch=%d\n", + get_port_id(dai->id), substream->name, dir, + params_rate(params), params_format(params), params_channels(params)); + + /* channels */ + switch (params_channels(params)) { + case 1: + port->pcm_mono[dir] = MCDRV_PCM_MONO; + break; + case 2: + port->pcm_mono[dir] = MCDRV_PCM_STEREO; + break; + default: + return -EINVAL; + } + + /* format (bits) */ + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_S8: + port->bits[dir] = MCDRV_PCM_BITSEL_8; + port->pcm_order[dir] = MCDRV_PCM_MSB_FIRST; + port->pcm_law[dir] = MCDRV_PCM_LINEAR; + break; + case SNDRV_PCM_FORMAT_S16_LE: + port->bits[dir] = MCDRV_PCM_BITSEL_16; + port->pcm_order[dir] = MCDRV_PCM_LSB_FIRST; + port->pcm_law[dir] = MCDRV_PCM_LINEAR; + break; + case SNDRV_PCM_FORMAT_S16_BE: + port->bits[dir] = MCDRV_PCM_BITSEL_16; + port->pcm_order[dir] = MCDRV_PCM_MSB_FIRST; + port->pcm_law[dir] = MCDRV_PCM_LINEAR; + break; + case SNDRV_PCM_FORMAT_A_LAW: + port->bits[dir] = MCDRV_PCM_BITSEL_8; + port->pcm_order[dir] = MCDRV_PCM_MSB_FIRST; + port->pcm_law[dir] = MCDRV_PCM_ALAW; + break; + case SNDRV_PCM_FORMAT_MU_LAW: + port->bits[dir] = MCDRV_PCM_BITSEL_8; + port->pcm_order[dir] = MCDRV_PCM_MSB_FIRST; + port->pcm_law[dir] = MCDRV_PCM_MULAW; + break; + default: + return -EINVAL; + } + + /* rate */ + switch (params_rate(params)) { + case 8000: + rate = MCDRV_FS_8000; + break; + case 16000: + rate = MCDRV_FS_16000; + break; + default: + return -EINVAL; + } + + mutex_lock(&mc1n2->mutex); + + if ((port->stream & ~(1 << dir)) && (rate != port->rate)) { + err = -EBUSY; + goto error; + } + + port->rate = rate; + port->channels = params_channels(params); + + err = mc1n2_update_clock(mc1n2); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in mc1n2_update_clock\n", err); + err = -EIO; + goto error; + } + + err = mc1n2_setup_dai(mc1n2, get_port_id(dai->id), MCDRV_DIO_PCM, dir); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in mc1n2_setup_dai\n", err); + err = -EIO; + goto error; + } + + if (dir == SNDRV_PCM_STREAM_PLAYBACK) { + err = mc1n2_control_dir(mc1n2, get_port_id(dai->id), 1); + } else { + err = mc1n2_control_dit(mc1n2, get_port_id(dai->id), 1); + } + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in mc1n2_control_dir/dit\n", err); + err = -EIO; + goto error; + } + + port->stream |= (1 << dir); + +error: + mutex_unlock(&mc1n2->mutex); + + return err; +} + +#ifndef ALSA_VER_1_0_19 +static struct snd_soc_dai_ops mc1n2_dai_ops[] = { + { + .set_clkdiv = mc1n2_i2s_set_clkdiv, + .set_fmt = mc1n2_i2s_set_fmt, + .hw_params = mc1n2_i2s_hw_params, + .hw_free = mc1n2_hw_free, + }, + { + .set_clkdiv = mc1n2_pcm_set_clkdiv, + .set_fmt = mc1n2_pcm_set_fmt, + .hw_params = mc1n2_pcm_hw_params, + .hw_free = mc1n2_hw_free, + }, + { + .set_clkdiv = mc1n2_i2s_set_clkdiv, + .set_fmt = mc1n2_i2s_set_fmt, + .hw_params = mc1n2_i2s_hw_params, + .hw_free = mc1n2_hw_free, + }, + { + .set_clkdiv = mc1n2_pcm_set_clkdiv, + .set_fmt = mc1n2_pcm_set_fmt, + .hw_params = mc1n2_pcm_hw_params, + .hw_free = mc1n2_hw_free, + }, + { + .set_clkdiv = mc1n2_i2s_set_clkdiv, + .set_fmt = mc1n2_i2s_set_fmt, + .hw_params = mc1n2_i2s_hw_params, + .hw_free = mc1n2_hw_free, + }, + { + .set_clkdiv = mc1n2_pcm_set_clkdiv, + .set_fmt = mc1n2_pcm_set_fmt, + .hw_params = mc1n2_pcm_hw_params, + .hw_free = mc1n2_hw_free, + } +}; +#endif + + +#ifdef ALSA_VER_ANDROID_3_0 +struct snd_soc_dai_driver mc1n2_dai[] = { +#else +struct snd_soc_dai mc1n2_dai[] = { +#endif + { + .name = MC1N2_NAME "-da0i", + .id = 1, + .playback = { + .stream_name = "Playback", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_I2S_RATE, + .formats = MC1N2_I2S_FORMATS, + }, + .capture = { + .stream_name = "Capture", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_I2S_RATE, + .formats = MC1N2_I2S_FORMATS, + }, +#ifdef ALSA_VER_1_0_19 + .ops = { + .set_clkdiv = mc1n2_i2s_set_clkdiv, + .set_fmt = mc1n2_i2s_set_fmt, + .hw_params = mc1n2_i2s_hw_params, + .hw_free = mc1n2_hw_free, + } +#else + .ops = &mc1n2_dai_ops[0] +#endif + }, + { + .name = MC1N2_NAME "-da0p", + .id = 1, + .playback = { + .stream_name = "Playback", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_PCM_RATE, + .formats = MC1N2_PCM_FORMATS, + }, + .capture = { + .stream_name = "Capture", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_PCM_RATE, + .formats = MC1N2_PCM_FORMATS, + }, +#ifdef ALSA_VER_1_0_19 + .ops = { + .set_clkdiv = mc1n2_pcm_set_clkdiv, + .set_fmt = mc1n2_pcm_set_fmt, + .hw_params = mc1n2_pcm_hw_params, + .hw_free = mc1n2_hw_free, + } +#else + .ops = &mc1n2_dai_ops[1] +#endif + }, + { + .name = MC1N2_NAME "-da1i", + .id = 2, + .playback = { + .stream_name = "Playback", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_I2S_RATE, + .formats = MC1N2_I2S_FORMATS, + }, + .capture = { + .stream_name = "Capture", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_I2S_RATE, + .formats = MC1N2_I2S_FORMATS, + }, +#ifdef ALSA_VER_1_0_19 + .ops = { + .set_clkdiv = mc1n2_i2s_set_clkdiv, + .set_fmt = mc1n2_i2s_set_fmt, + .hw_params = mc1n2_i2s_hw_params, + .hw_free = mc1n2_hw_free, + } +#else + .ops = &mc1n2_dai_ops[2] +#endif + }, + { + .name = MC1N2_NAME "-da1p", + .id = 2, + .playback = { + .stream_name = "Playback", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_PCM_RATE, + .formats = MC1N2_PCM_FORMATS, + }, + .capture = { + .stream_name = "Capture", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_PCM_RATE, + .formats = MC1N2_PCM_FORMATS, + }, +#ifdef ALSA_VER_1_0_19 + .ops = { + .set_clkdiv = mc1n2_pcm_set_clkdiv, + .set_fmt = mc1n2_pcm_set_fmt, + .hw_params = mc1n2_pcm_hw_params, + .hw_free = mc1n2_hw_free, + } +#else + .ops = &mc1n2_dai_ops[3] +#endif + }, + { + .name = MC1N2_NAME "-da2i", + .id = 3, + .playback = { + .stream_name = "Playback", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_I2S_RATE, + .formats = MC1N2_I2S_FORMATS, + }, + .capture = { + .stream_name = "Capture", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_I2S_RATE, + .formats = MC1N2_I2S_FORMATS, + }, +#ifdef ALSA_VER_1_0_19 + .ops = { + .set_clkdiv = mc1n2_i2s_set_clkdiv, + .set_fmt = mc1n2_i2s_set_fmt, + .hw_params = mc1n2_i2s_hw_params, + .hw_free = mc1n2_hw_free, + } +#else + .ops = &mc1n2_dai_ops[4] +#endif + }, + { + .name = MC1N2_NAME "-da2p", + .id = 3, + .playback = { + .stream_name = "Playback", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_PCM_RATE, + .formats = MC1N2_PCM_FORMATS, + }, + .capture = { + .stream_name = "Capture", + .channels_min = 1, + .channels_max = 2, + .rates = MC1N2_PCM_RATE, + .formats = MC1N2_PCM_FORMATS, + }, +#ifdef ALSA_VER_1_0_19 + .ops = { + .set_clkdiv = mc1n2_pcm_set_clkdiv, + .set_fmt = mc1n2_pcm_set_fmt, + .hw_params = mc1n2_pcm_hw_params, + .hw_free = mc1n2_hw_free, + } +#else + .ops = &mc1n2_dai_ops[5] +#endif + }, +}; +#ifndef ALSA_VER_ANDROID_3_0 +EXPORT_SYMBOL_GPL(mc1n2_dai); +#endif + +/* + * Control interface + */ +/* + * Virtual register + * + * 16bit software registers are implemented for volumes and mute + * switches (as an exception, no mute switches for MIC and HP gain). + * Register contents are stored in codec's register cache. + * + * 15 14 8 7 6 0 + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * |swR| volume-R |swL| volume-L | + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + */ +struct mc1n2_vreg_info { + size_t offset; + SINT16 *volmap; +}; + +/* volmap for Digital Volumes */ +static SINT16 mc1n2_vol_digital[] = { + 0xa000, 0xb600, 0xb700, 0xb800, 0xb900, 0xba00, 0xbb00, 0xbc00, + 0xbd00, 0xbe00, 0xbf00, 0xc000, 0xc100, 0xc200, 0xc300, 0xc400, + 0xc500, 0xc600, 0xc700, 0xc800, 0xc900, 0xca00, 0xcb00, 0xcc00, + 0xcd00, 0xce00, 0xcf00, 0xd000, 0xd100, 0xd200, 0xd300, 0xd400, + 0xd500, 0xd600, 0xd700, 0xd800, 0xd900, 0xda00, 0xdb00, 0xdc00, + 0xdd00, 0xde00, 0xdf00, 0xe000, 0xe100, 0xe200, 0xe300, 0xe400, + 0xe500, 0xe600, 0xe700, 0xe800, 0xe900, 0xea00, 0xeb00, 0xec00, + 0xed00, 0xee00, 0xef00, 0xf000, 0xf100, 0xf200, 0xf300, 0xf400, + 0xf500, 0xf600, 0xf700, 0xf800, 0xf900, 0xfa00, 0xfb00, 0xfc00, + 0xfd00, 0xfe00, 0xff00, 0x0000, 0x0100, 0x0200, 0x0300, 0x0400, + 0x0500, 0x0600, 0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, + 0x0d00, 0x0e00, 0x0f00, 0x1000, 0x1100, 0x1200, +}; + +/* volmap for ADC Analog Volume */ +static SINT16 mc1n2_vol_adc[] = { + 0xa000, 0xe500, 0xe680, 0xe800, 0xe980, 0xeb00, 0xec80, 0xee00, + 0xef80, 0xf100, 0xf280, 0xf400, 0xf580, 0xf700, 0xf880, 0xfa00, + 0xfb80, 0xfd00, 0xfe80, 0x0000, 0x0180, 0x0300, 0x0480, 0x0600, + 0x0780, 0x0900, 0x0a80, 0x0c00, 0x0d80, 0x0f00, 0x1080, 0x1200, +}; + +/* volmap for LINE/MIC Input Volumes */ +static SINT16 mc1n2_vol_ain[] = { + 0xa000, 0xe200, 0xe380, 0xe500, 0xe680, 0xe800, 0xe980, 0xeb00, + 0xec80, 0xee00, 0xef80, 0xf100, 0xf280, 0xf400, 0xf580, 0xf700, + 0xf880, 0xfa00, 0xfb80, 0xfd00, 0xfe80, 0x0000, 0x0180, 0x0300, + 0x0480, 0x0600, 0x0780, 0x0900, 0x0a80, 0x0c00, 0x0d80, 0x0f00, +}; + +/* volmap for HP/SP Output Volumes */ +static SINT16 mc1n2_vol_hpsp[] = { + 0xa000, 0xdc00, 0xe400, 0xe800, 0xea00, 0xec00, 0xee00, 0xf000, + 0xf100, 0xf200, 0xf300, 0xf400, 0xf500, 0xf600, 0xf700, 0xf800, + 0xf880, 0xf900, 0xf980, 0xfa00, 0xfa80, 0xfb00, 0xfb80, 0xfc00, + 0xfc80, 0xfd00, 0xfd80, 0xfe00, 0xfe80, 0xff00, 0xff80, 0x0000, +}; + +/* volmap for RC/LINE Output Volumes */ +static SINT16 mc1n2_vol_aout[] = { + 0xa000, 0xe200, 0xe300, 0xe400, 0xe500, 0xe600, 0xe700, 0xe800, + 0xe900, 0xea00, 0xeb00, 0xec00, 0xed00, 0xee00, 0xef00, 0xf000, + 0xf100, 0xf200, 0xf300, 0xf400, 0xf500, 0xf600, 0xf700, 0xf800, + 0xf900, 0xfa00, 0xfb00, 0xfc00, 0xfd00, 0xfe00, 0xff00, 0x0000, +}; + +/* volmap for MIC Gain Volumes */ +static SINT16 mc1n2_vol_micgain[] = { + 0x0f00, 0x1400, 0x1900, 0x1e00, +}; + +/* volmap for HP Gain Volume */ +static SINT16 mc1n2_vol_hpgain[] = { + 0x0000, 0x0180, 0x0300, 0x0600, +}; + +struct mc1n2_vreg_info mc1n2_vreg_map[MC1N2_N_VOL_REG] = { + {offsetof(MCDRV_VOL_INFO, aswD_Ad0), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Aeng6), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Pdm), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Dir0), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Dir1), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Dir2), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Ad0Att), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Dir0Att), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Dir1Att), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Dir2Att), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_SideTone), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_DacMaster), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_DacVoice), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_DacAtt), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Dit0), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Dit1), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswD_Dit2), mc1n2_vol_digital}, + {offsetof(MCDRV_VOL_INFO, aswA_Ad0), mc1n2_vol_adc}, + {offsetof(MCDRV_VOL_INFO, aswA_Lin1), mc1n2_vol_ain}, + {offsetof(MCDRV_VOL_INFO, aswA_Mic1), mc1n2_vol_ain}, + {offsetof(MCDRV_VOL_INFO, aswA_Mic2), mc1n2_vol_ain}, + {offsetof(MCDRV_VOL_INFO, aswA_Mic3), mc1n2_vol_ain}, + {offsetof(MCDRV_VOL_INFO, aswA_Hp), mc1n2_vol_hpsp}, + {offsetof(MCDRV_VOL_INFO, aswA_Sp), mc1n2_vol_hpsp}, + {offsetof(MCDRV_VOL_INFO, aswA_Rc), mc1n2_vol_hpsp}, + {offsetof(MCDRV_VOL_INFO, aswA_Lout1), mc1n2_vol_aout}, + {offsetof(MCDRV_VOL_INFO, aswA_Lout2), mc1n2_vol_aout}, + {offsetof(MCDRV_VOL_INFO, aswA_Mic1Gain), mc1n2_vol_micgain}, + {offsetof(MCDRV_VOL_INFO, aswA_Mic2Gain), mc1n2_vol_micgain}, + {offsetof(MCDRV_VOL_INFO, aswA_Mic3Gain), mc1n2_vol_micgain}, + {offsetof(MCDRV_VOL_INFO, aswA_HpGain), mc1n2_vol_hpgain}, +}; + +#ifdef ALSA_VER_ANDROID_3_0 +static int cache_read(struct snd_soc_codec *codec, unsigned int reg) +{ + int ret; + unsigned int val; + + ret = snd_soc_cache_read(codec, reg, &val); + if (ret != 0) { + dev_err(codec->dev, "Cache read to %x failed: %d\n", reg, ret); + return -EIO; + } + return val; +} +static int cache_write(struct snd_soc_codec *codec, + unsigned int reg, unsigned int value) +{ + return ((int)snd_soc_cache_write(codec, reg, value)); +} +#else +static int cache_read(struct snd_soc_codec *codec, unsigned int reg) +{ + return ((u16 *)codec->reg_cache)[reg]; +} +static int cache_write(struct snd_soc_codec *codec, + unsigned int reg, unsigned int value) +{ + u16 *cp = (u16 *)codec->reg_cache + reg; + *cp = value; + return 0; +} +#endif + +static unsigned int mc1n2_read_reg(struct snd_soc_codec *codec, unsigned int reg) +{ + int ret; + + ret = cache_read(codec, reg); + if (ret < 0) { + return -EIO; + } + return (unsigned int)ret; +} + +#ifdef ALSA_VER_ANDROID_3_0 +#define REG_CACHE_READ(reg) (mc1n2_read_reg(codec, reg)) +#else +#define REG_CACHE_READ(reg) ((u16 *)codec->reg_cache)[reg] +#endif + +static int write_reg_vol(struct snd_soc_codec *codec, + unsigned int reg, unsigned int value) +{ + MCDRV_VOL_INFO update; + SINT16 *vp; + int ret; + int err, i; + + memset(&update, 0, sizeof(MCDRV_VOL_INFO)); + vp = (SINT16 *)((void *)&update + mc1n2_vreg_map[reg].offset); + + for (i = 0; i < 2; i++, vp++) { + unsigned int v = (value >> (i*8)) & 0xff; + unsigned int c = (mc1n2_read_reg(codec, reg) >> (i*8)) & 0xff; + if (v != c) { + int sw, vol; + SINT16 db; + sw = (reg < MC1N2_AVOL_MIC1_GAIN) ? (v & 0x80) : 1; + vol = sw ? (v & 0x7f) : 0; + db = mc1n2_vreg_map[reg].volmap[vol]; + *vp = db | MCDRV_VOL_UPDATE; + } + } + + err = _McDrv_Ctrl(MCDRV_SET_VOLUME, &update, 0); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in MCDRV_SET_VOLUME\n", err); + return -EIO; + } + ret = cache_write(codec, reg, value); + if (ret != 0) { + dev_err(codec->dev, "Cache write to %x failed: %d\n", reg, ret); + } + + return 0; +} + +static int mc1n2_hwdep_ioctl_set_path(struct snd_soc_codec *codec, + void *info, unsigned int update); + +static int write_reg_path(struct snd_soc_codec *codec, + unsigned int reg, unsigned int value) +{ + MCDRV_PATH_INFO update; + MCDRV_CHANNEL *pch; + MCDRV_AE_INFO *pae; + int ret = 0; + int err; + + memset(&update, 0, sizeof(MCDRV_PATH_INFO)); + + ret = cache_write(codec, reg, value); + if (ret != 0) { + dev_err(codec->dev, "Cache write to %x failed: %d\n",reg, ret); + } + + switch (reg) { + case MC1N2_ADCL_MIC1_SW: + if (value) { + update.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_ADCL_MIC2_SW: + if (value) { + update.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_ADCL_MIC3_SW: + if (value) { + update.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + case MC1N2_ADCL_LINE_SW: + case MC1N2_ADCL_LINE_SRC: + if (REG_CACHE_READ(MC1N2_ADCL_LINE_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_ADCL_LINE_SW)) { + update.asAdc0[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_ON; + } + else { + update.asAdc0[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_ADCL_LINE_SW)) { + update.asAdc0[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_ON; + } + else { + update.asAdc0[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF; + } + } + break; + case MC1N2_ADCR_MIC1_SW: + if (value) { + update.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_ADCR_MIC2_SW: + if (value) { + update.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_ADCR_MIC3_SW: + if (value) { + update.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + case MC1N2_ADCR_LINE_SW: + case MC1N2_ADCR_LINE_SRC: + if (REG_CACHE_READ(MC1N2_ADCR_LINE_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_ADCR_LINE_SW)) { + update.asAdc0[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_ON; + } + else { + update.asAdc0[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_ADCR_LINE_SW)) { + update.asAdc0[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_ON; + } + else { + update.asAdc0[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF; + } + } + break; + case MC1N2_HPL_MIC1_SW: + if (value) { + update.asHpOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asHpOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_HPL_MIC2_SW: + if (value) { + update.asHpOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asHpOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_HPL_MIC3_SW: + if (value) { + update.asHpOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asHpOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + case MC1N2_HPL_LINE_SW: + case MC1N2_HPL_LINE_SRC: + if (REG_CACHE_READ(MC1N2_HPL_LINE_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_HPL_LINE_SW)) { + update.asHpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_ON; + } + else { + update.asHpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_HPL_LINE_SW)) { + update.asHpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_ON; + } + else { + update.asHpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF; + } + } + break; + case MC1N2_HPL_DAC_SW: + case MC1N2_HPL_DAC_SRC: + if (REG_CACHE_READ(MC1N2_HPL_DAC_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_HPL_DAC_SW)) { + update.asHpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON; + } + else { + update.asHpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_HPL_DAC_SW)) { + update.asHpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_ON; + } + else { + update.asHpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF; + } + } + break; + case MC1N2_HPR_MIC1_SW: + if (value) { + update.asHpOut[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asHpOut[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_HPR_MIC2_SW: + if (value) { + update.asHpOut[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asHpOut[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_HPR_MIC3_SW: + if (value) { + update.asHpOut[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asHpOut[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + case MC1N2_HPR_LINER_SW: + if (value) { + update.asHpOut[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_ON; + } + else { + update.asHpOut[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_OFF; + } + break; + case MC1N2_HPR_DACR_SW: + if (value) { + update.asHpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON; + } + else { + update.asHpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_OFF; + } + break; + case MC1N2_SPL_LINE_SW: + case MC1N2_SPL_LINE_SRC: + if (REG_CACHE_READ(MC1N2_SPL_LINE_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_SPL_LINE_SW)) { + update.asSpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_ON; + } + else { + update.asSpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_SPL_LINE_SW)) { + update.asSpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_ON; + } + else { + update.asSpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF; + } + } + break; + case MC1N2_SPL_DAC_SW: + case MC1N2_SPL_DAC_SRC: + if (REG_CACHE_READ(MC1N2_SPL_DAC_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_SPL_DAC_SW)) { + update.asSpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON; + } + else { + update.asSpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_SPL_DAC_SW)) { + update.asSpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_ON; + } + else { + update.asSpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF; + } + } + break; + case MC1N2_SPR_LINE_SW: + case MC1N2_SPR_LINE_SRC: + if (REG_CACHE_READ(MC1N2_SPR_LINE_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_SPR_LINE_SW)) { + update.asSpOut[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_ON; + } + else { + update.asSpOut[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_SPR_LINE_SW)) { + update.asSpOut[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_ON; + } + else { + update.asSpOut[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF; + } + } + break; + case MC1N2_SPR_DAC_SW: + case MC1N2_SPR_DAC_SRC: + if (REG_CACHE_READ(MC1N2_SPR_DAC_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_SPR_DAC_SW)) { + update.asSpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON; + } + else { + update.asSpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_SPR_DAC_SW)) { + update.asSpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_ON; + } + else { + update.asSpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF; + } + } + break; + case MC1N2_RC_MIC1_SW: + if (value) { + update.asRcOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asRcOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_RC_MIC2_SW: + if (value) { + update.asRcOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asRcOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_RC_MIC3_SW: + if (value) { + update.asRcOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asRcOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + case MC1N2_RC_LINEMONO_SW: + if (value) { + update.asRcOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_ON; + } + else { + update.asRcOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF; + } + break; + case MC1N2_RC_DACL_SW: + if (value) { + update.asRcOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON; + } + else { + update.asRcOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_OFF; + } + break; + case MC1N2_RC_DACR_SW: + if (value) { + update.asRcOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON; + } + else { + update.asRcOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_OFF; + } + break; + case MC1N2_LOUT1L_MIC1_SW: + if (value) { + update.asLout1[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asLout1[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_LOUT1L_MIC2_SW: + if (value) { + update.asLout1[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asLout1[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_LOUT1L_MIC3_SW: + if (value) { + update.asLout1[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asLout1[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + case MC1N2_LOUT1L_LINE_SW: + case MC1N2_LOUT1L_LINE_SRC: + if (REG_CACHE_READ(MC1N2_LOUT1L_LINE_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_LOUT1L_LINE_SW)) { + update.asLout1[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_ON; + } + else { + update.asLout1[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_LOUT1L_LINE_SW)) { + update.asLout1[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_ON; + } + else { + update.asLout1[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF; + } + } + break; + case MC1N2_LOUT1L_DAC_SW: + case MC1N2_LOUT1L_DAC_SRC: + if (REG_CACHE_READ(MC1N2_LOUT1L_DAC_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_LOUT1L_DAC_SW)) { + update.asLout1[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON; + } + else { + update.asLout1[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_OFF; + } + } + else { + if (value) { + update.asLout1[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_ON; + } + else { + update.asLout1[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF; + } + } + break; + case MC1N2_LOUT1R_MIC1_SW: + if (value) { + update.asLout1[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asLout1[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_LOUT1R_MIC2_SW: + if (value) { + update.asLout1[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asLout1[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_LOUT1R_MIC3_SW: + if (value) { + update.asLout1[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asLout1[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + case MC1N2_LOUT1R_LINER_SW: + if (value) { + update.asLout1[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_ON; + } + else { + update.asLout1[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_OFF; + } + break; + case MC1N2_LOUT1R_DACR_SW: + if (value) { + update.asLout1[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON; + } + else { + update.asLout1[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_OFF; + } + break; + case MC1N2_LOUT2L_MIC1_SW: + if (value) { + update.asLout2[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asLout2[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_LOUT2L_MIC2_SW: + if (value) { + update.asLout2[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asLout2[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_LOUT2L_MIC3_SW: + if (value) { + update.asLout2[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asLout2[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + case MC1N2_LOUT2L_LINE_SW: + case MC1N2_LOUT2L_LINE_SRC: + if (REG_CACHE_READ(MC1N2_LOUT2L_LINE_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_LOUT2L_LINE_SW)) { + update.asLout2[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_ON; + } + else { + update.asLout2[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_L_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_LOUT2L_LINE_SW)) { + update.asLout2[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_ON; + } + else { + update.asLout2[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF; + } + } + break; + case MC1N2_LOUT2L_DAC_SW: + case MC1N2_LOUT2L_DAC_SRC: + if (REG_CACHE_READ(MC1N2_LOUT2L_DAC_SRC) == 0) { + if (REG_CACHE_READ(MC1N2_LOUT2L_DAC_SW)) { + update.asLout2[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON; + } + else { + update.asLout2[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_OFF; + } + } + else { + if (REG_CACHE_READ(MC1N2_LOUT2L_DAC_SW)) { + update.asLout2[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_ON; + } + else { + update.asLout2[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF; + } + } + break; + case MC1N2_LOUT2R_MIC1_SW: + if (value) { + update.asLout2[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asLout2[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_LOUT2R_MIC2_SW: + if (value) { + update.asLout2[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asLout2[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_LOUT2R_MIC3_SW: + if (value) { + update.asLout2[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asLout2[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + case MC1N2_LOUT2R_LINER_SW: + if (value) { + update.asLout2[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_ON; + } + else { + update.asLout2[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_R_OFF; + } + break; + case MC1N2_LOUT2R_DACR_SW: + if (value) { + update.asLout2[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON; + } + else { + update.asLout2[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_OFF; + } + break; + case MC1N2_DACMAIN_SRC: + case MC1N2_DACVOICE_SRC: + case MC1N2_DIT0_SRC: + case MC1N2_DIT1_SRC: + case MC1N2_DIT2_SRC: + if (reg == MC1N2_DACMAIN_SRC) { + pch = &update.asDac[0]; + } + else if (reg == MC1N2_DACVOICE_SRC) { + pch = &update.asDac[1]; + } + else if (reg == MC1N2_DIT0_SRC) { + pch = &update.asDit0[0]; + } + else if (reg == MC1N2_DIT1_SRC) { + pch = &update.asDit1[0]; + } + else if (reg == MC1N2_DIT2_SRC) { + pch = &update.asDit2[0]; + } + + switch (value) { + case MC1N2_DSOURCE_OFF: + pch->abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + pch->abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + break; + case MC1N2_DSOURCE_ADC: /* ADC */ + pch->abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_ADC) { + pch->abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + if (REG_CACHE_READ(MC1N2_ADC_PDM_SEL)) { + pch->abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_ON; + } + else { + pch->abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF; + } + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR0: /* DIR0 */ + pch->abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR0) { + pch->abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + pch->abSrcOnOff[3] = + MCDRV_SRC3_DIR0_ON | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR1: /* DIR1 */ + pch->abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR1) { + pch->abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + pch->abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_ON | MCDRV_SRC3_DIR2_OFF; + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR2: /* DIR2 */ + pch->abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR2) { + pch->abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + pch->abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_ON; + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_MIX: /* MIX */ + pch->abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + pch->abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_MIX) { + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + pch->abSrcOnOff[6] = MCDRV_SRC6_MIX_ON | MCDRV_SRC6_AE_OFF; + } + break; + } + break; + case MC1N2_AE_SRC: + case MC1N2_ADC_PDM_SEL: + switch (REG_CACHE_READ(MC1N2_AE_SRC)) { + case MC1N2_DSOURCE_OFF: + update.asAe[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asAe[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asAe[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF; + break; + case MC1N2_DSOURCE_ADC: /* ADC */ + if (REG_CACHE_READ(MC1N2_ADC_PDM_SEL)) { + update.asAe[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_ON; + } + else { + update.asAe[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF; + } + update.asAe[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asAe[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF; + break; + case MC1N2_DSOURCE_DIR0: /* DIR0 */ + update.asAe[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asAe[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_ON | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asAe[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF; + break; + case MC1N2_DSOURCE_DIR1:/* DIR1 */ + update.asAe[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asAe[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_ON | MCDRV_SRC3_DIR2_OFF; + update.asAe[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF; + break; + case MC1N2_DSOURCE_DIR2:/* DIR2 */ + update.asAe[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asAe[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_ON; + update.asAe[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF; + break; + case MC1N2_DSOURCE_MIX: /* MIX */ + update.asAe[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asAe[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asAe[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON; + break; + } + + switch (REG_CACHE_READ(MC1N2_DACMAIN_SRC)) { + case MC1N2_DSOURCE_ADC: /* ADC */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_ADC) { + update.asDac[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + if (REG_CACHE_READ(MC1N2_ADC_PDM_SEL)) { + update.asDac[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_ON; + } + else { + update.asDac[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF; + } + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR0: /* DIR0 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR0) { + update.asDac[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDac[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_ON | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR1: /* DIR1 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR1) { + update.asDac[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDac[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_ON | MCDRV_SRC3_DIR2_OFF; + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR2: /* DIR2 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR2) { + update.asDac[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDac[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_ON; + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_MIX: /* MIX */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_MIX) { + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON | MCDRV_SRC6_AE_OFF; + } + break; + } + + switch (REG_CACHE_READ(MC1N2_DACVOICE_SRC)) { + case MC1N2_DSOURCE_ADC: /* ADC */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_ADC) { + update.asDac[1].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + if (REG_CACHE_READ(MC1N2_ADC_PDM_SEL)) { + update.asDac[1].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_ON; + } + else { + update.asDac[1].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF; + } + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR0: /* DIR0 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR0) { + update.asDac[1].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDac[1].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_ON | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR1: /* DIR1 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR1) { + update.asDac[1].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDac[1].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_ON | MCDRV_SRC3_DIR2_OFF; + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR2: /* DIR2 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR2) { + update.asDac[1].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDac[1].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_ON; + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_MIX: /* MIX */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_MIX) { + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDac[1].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON | MCDRV_SRC6_AE_OFF; + } + break; + } + + switch (REG_CACHE_READ(MC1N2_DIT0_SRC)) { + case MC1N2_DSOURCE_ADC: /* ADC */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_ADC) { + update.asDit0[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + if (REG_CACHE_READ(MC1N2_ADC_PDM_SEL)) { + update.asDit0[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_ON; + } + else { + update.asDit0[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF; + } + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR0: /* DIR0 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR0) { + update.asDit0[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit0[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_ON | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR1: /* DIR1 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR1) { + update.asDit0[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit0[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_ON | MCDRV_SRC3_DIR2_OFF; + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR2: /* DIR2 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR2) { + update.asDit0[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit0[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_ON; + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_MIX: /* MIX */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_MIX) { + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON | MCDRV_SRC6_AE_OFF; + } + break; + } + + switch (REG_CACHE_READ(MC1N2_DIT1_SRC)) { + case MC1N2_DSOURCE_ADC: /* ADC */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_ADC) { + update.asDit1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + if (REG_CACHE_READ(MC1N2_ADC_PDM_SEL)) { + update.asDit1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_ON; + } + else { + update.asDit1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF; + } + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR0: /* DIR0 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR0) { + update.asDit1[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit1[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_ON | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR1: /* DIR1 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR1) { + update.asDit1[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit1[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_ON | MCDRV_SRC3_DIR2_OFF; + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR2: /* DIR2 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR2) { + update.asDit1[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit1[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_ON; + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_MIX: /* MIX */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_MIX) { + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON | MCDRV_SRC6_AE_OFF; + } + break; + } + + switch (REG_CACHE_READ(MC1N2_DIT2_SRC)) { + case MC1N2_DSOURCE_ADC: /* ADC */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_ADC) { + update.asDit2[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + if (REG_CACHE_READ(MC1N2_ADC_PDM_SEL)) { + update.asDit2[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_ON; + } + else { + update.asDit2[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF; + } + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR0: /* DIR0 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR0) { + update.asDit2[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit2[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_ON | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR1: /* DIR1 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR1) { + update.asDit2[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit2[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_ON | MCDRV_SRC3_DIR2_OFF; + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_DIR2: /* DIR2 */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_DIR2) { + update.asDit2[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_OFF; + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit2[0].abSrcOnOff[3] = + MCDRV_SRC3_DIR0_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR2_ON; + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_OFF; + } + break; + case MC1N2_DSOURCE_MIX: /* MIX */ + if (REG_CACHE_READ(MC1N2_AE_SRC) == MC1N2_DSOURCE_MIX) { + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_OFF | MCDRV_SRC6_AE_ON; + } + else { + update.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON | MCDRV_SRC6_AE_OFF; + } + break; + } + + break; + case MC1N2_DMIX_ADC_SW: + if (value) { + if (REG_CACHE_READ(MC1N2_ADC_PDM_SEL)) { + update.asMix[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_ON; + } + else { + update.asMix[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF; + } + } + else { + update.asMix[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF; + } + break; + case MC1N2_DMIX_DIR0_SW: + if (value) { + update.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_ON; + } + else { + update.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + } + break; + case MC1N2_DMIX_DIR1_SW: + if (value) { + update.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR1_ON; + } + else { + update.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR1_OFF; + } + break; + case MC1N2_DMIX_DIR2_SW: + if (value) { + update.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_ON; + } + else { + update.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_OFF; + } + break; + case MC1N2_AE_PARAM_SEL: + switch (value) { + case MC1N2_AE_PARAM_1: + pae = &sAeInfo_1; + break; + case MC1N2_AE_PARAM_2: + pae = &sAeInfo_2; + break; + case MC1N2_AE_PARAM_3: + pae = &sAeInfo_3; + break; + case MC1N2_AE_PARAM_4: + pae = &sAeInfo_4; + break; + case MC1N2_AE_PARAM_5: + pae = &sAeInfo_5; + break; + default: + pae = NULL; + break; + } + err = _McDrv_Ctrl(MCDRV_SET_AUDIOENGINE, pae, 0x1FF); + return err; + break; + case MC1N2_MICBIAS1: + if (value) { + update.asBias[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON; + } + else { + update.asBias[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_OFF; + } + break; + case MC1N2_MICBIAS2: + if (value) { + update.asBias[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON; + } + else { + update.asBias[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_OFF; + } + break; + case MC1N2_MICBIAS3: + if (value) { + update.asBias[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON; + } + else { + update.asBias[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF; + } + break; + } + + mc1n2_hwdep_ioctl_set_path(codec, &update, 0); + err = _McDrv_Ctrl(MCDRV_SET_PATH, &update, 0); + + return err; +} + +static int mc1n2_write_reg(struct snd_soc_codec *codec, + unsigned int reg, unsigned int value) +{ + int err; + + if (reg < MC1N2_N_VOL_REG) { + err = write_reg_vol(codec, reg, value); + } + else { + err = write_reg_path(codec, reg, value); + } + + return err; +} + +static int mc1n2_get_codec_status(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + + return 0; +} + +static int mc1n2_set_codec_status(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); + SINT16 *vol = (SINT16 *)&mc1n2->vol_store; + + int control_data = ucontrol->value.integer.value[0]; + int err, i; + + dev_info(codec->dev, "%s: Recovery [%d]\n", __func__, control_data); + + switch(control_data) + { + case CMD_CODEC_EMERGENCY_RECOVERY: + mutex_lock(&mc1n2->mutex); + + mc1n2_set_mclk_source(1); + + /* store parameters */ + for (i = 0; i < MC1N2_N_INFO_STORE; i++) { + struct mc1n2_info_store *store + = &mc1n2_info_store_tbl[i]; + if (store->get) { + err = _McDrv_Ctrl(store->get, + (void *)mc1n2 + store->offset, 0); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, + "%d: Error in MCDRV_GET\n", + err); + } + } + } + + err = _McDrv_Ctrl(MCDRV_TERM, NULL, 0); + if (err != MCDRV_SUCCESS) + dev_err(codec->dev, "%d: Error in MCDRV_TERM\n", err); + + err = _McDrv_Ctrl(MCDRV_INIT, &mc1n2->setup.init, 0); + if (err != MCDRV_SUCCESS) + dev_err(codec->dev, "%d: Error in MCDRV_INIT\n", err); + + /* restore parameters */ + for (i = 0; i < sizeof(MCDRV_VOL_INFO)/sizeof(SINT16); + i++, vol++) { + *vol |= 0x0001; + } + + for (i = 0; i < MC1N2_N_INFO_STORE; i++) { + struct mc1n2_info_store *store = + &mc1n2_info_store_tbl[i]; + if (store->set) { + err = _McDrv_Ctrl(store->set, + (void *) mc1n2 + store->offset, + store->flags); + + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, + "%d: Error in MCDRV_Set\n", + err); + } + } + } + + err = mc1n2_update_clock(mc1n2); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, + "%d: Error in mc1n2_update_clock\n", err); + } + + mutex_unlock(&mc1n2->mutex); + + dev_info(codec->dev, "%s: Recovery Done\n", __func__); + break; + + default: + break; + } + + return 0; +} + +static const DECLARE_TLV_DB_SCALE(mc1n2_tlv_digital, -7500, 100, 1); +static const DECLARE_TLV_DB_SCALE(mc1n2_tlv_adc, -2850, 150, 1); +static const DECLARE_TLV_DB_SCALE(mc1n2_tlv_ain, -3150, 150, 1); +static const DECLARE_TLV_DB_SCALE(mc1n2_tlv_aout, -3100, 100, 1); +static const DECLARE_TLV_DB_SCALE(mc1n2_tlv_micgain, 1500, 500, 0); + +static unsigned int mc1n2_tlv_hpsp[] = { + TLV_DB_RANGE_HEAD(5), + 0, 2, TLV_DB_SCALE_ITEM(-4400, 800, 1), + 2, 3, TLV_DB_SCALE_ITEM(-2800, 400, 0), + 3, 7, TLV_DB_SCALE_ITEM(-2400, 200, 0), + 7, 15, TLV_DB_SCALE_ITEM(-1600, 100, 0), + 15, 31, TLV_DB_SCALE_ITEM(-800, 50, 0), +}; + +static unsigned int mc1n2_tlv_hpgain[] = { + TLV_DB_RANGE_HEAD(2), + 0, 2, TLV_DB_SCALE_ITEM(0, 150, 0), + 2, 3, TLV_DB_SCALE_ITEM(300, 300, 0), +}; + +static const char *codec_status_control[] = { + "REC_OFF", "REC_ON", "RESET_ON", "RESET_OFF" +}; + +static const struct soc_enum path_control_enum[] = { + SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(codec_status_control), codec_status_control), +}; + +static const struct snd_kcontrol_new mc1n2_snd_controls[] = { + /* + * digital volumes and mute switches + */ + SOC_DOUBLE_TLV("AD Digital Volume", + MC1N2_DVOL_AD0, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("AD Digital Switch", + MC1N2_DVOL_AD0, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("AENG6 Volume", + MC1N2_DVOL_AENG6, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("AENG6 Switch", + MC1N2_DVOL_AENG6, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("PDM Volume", + MC1N2_DVOL_PDM, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("PDM Switch", + MC1N2_DVOL_PDM, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DIR#0 Volume", + MC1N2_DVOL_DIR0, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DIR#0 Switch", + MC1N2_DVOL_DIR0, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DIR#1 Volume", + MC1N2_DVOL_DIR1, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DIR#1 Switch", + MC1N2_DVOL_DIR1, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DIR#2 Volume", + MC1N2_DVOL_DIR2, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DIR#2 Switch", + MC1N2_DVOL_DIR2, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("AD ATT Volume", + MC1N2_DVOL_AD0_ATT, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("AD ATT Switch", + MC1N2_DVOL_AD0_ATT, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DIR#0 ATT Volume", + MC1N2_DVOL_DIR0_ATT, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DIR#0 ATT Switch", + MC1N2_DVOL_DIR0_ATT, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DIR#1 ATT Volume", + MC1N2_DVOL_DIR1_ATT, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DIR#1 ATT Switch", + MC1N2_DVOL_DIR1_ATT, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DIR#2 ATT Volume", + MC1N2_DVOL_DIR2_ATT, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DIR#2 ATT Switch", + MC1N2_DVOL_DIR2_ATT, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("Side Tone Playback Volume", + MC1N2_DVOL_SIDETONE, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("Side Tone Playback Switch", + MC1N2_DVOL_SIDETONE, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("Master Playback Volume", + MC1N2_DVOL_DAC_MASTER, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("Master Playback Switch", + MC1N2_DVOL_DAC_MASTER, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("Voice Playback Volume", + MC1N2_DVOL_DAC_VOICE, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("Voice Playback Switch", + MC1N2_DVOL_DAC_VOICE, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DAC Playback Volume", + MC1N2_DVOL_DAC_ATT, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DAC Playback Switch", + MC1N2_DVOL_DAC_ATT, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DIT#0 Capture Volume", + MC1N2_DVOL_DIT0, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DIT#0 Capture Switch", + MC1N2_DVOL_DIT0, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DIT#1 Capture Volume", + MC1N2_DVOL_DIT1, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DIT#1 Capture Switch", + MC1N2_DVOL_DIT1, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("DIT#2 Capture Volume", + MC1N2_DVOL_DIT2, 0, 8, 93, 0, mc1n2_tlv_digital), + SOC_DOUBLE("DIT#2 Capture Switch", + MC1N2_DVOL_DIT2, 7, 15, 1, 0), + + /* + * analog volumes and mute switches + */ + SOC_DOUBLE_TLV("AD Analog Volume", + MC1N2_AVOL_AD0, 0, 8, 31, 0, mc1n2_tlv_adc), + SOC_DOUBLE("AD Analog Switch", + MC1N2_AVOL_AD0, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("Line Bypass Playback Volume", + MC1N2_AVOL_LIN1, 0, 8, 31, 0, mc1n2_tlv_ain), + SOC_DOUBLE("Line Bypass Playback Switch", + MC1N2_AVOL_LIN1, 7, 15, 1, 0), + + SOC_SINGLE_TLV("Mic 1 Bypass Playback Volume", + MC1N2_AVOL_MIC1, 0, 31, 0, mc1n2_tlv_ain), + SOC_SINGLE("Mic 1 Bypass Playback Switch", + MC1N2_AVOL_MIC1, 7, 1, 0), + + SOC_SINGLE_TLV("Mic 2 Bypass Playback Volume", + MC1N2_AVOL_MIC2, 0, 31, 0, mc1n2_tlv_ain), + SOC_SINGLE("Mic 2 Bypass Playback Switch", + MC1N2_AVOL_MIC2, 7, 1, 0), + + SOC_SINGLE_TLV("Mic 3 Bypass Playback Volume", + MC1N2_AVOL_MIC3, 0, 31, 0, mc1n2_tlv_ain), + SOC_SINGLE("Mic 3 Bypass Playback Switch", + MC1N2_AVOL_MIC3, 7, 1, 0), + + SOC_DOUBLE_TLV("Headphone Playback Volume", + MC1N2_AVOL_HP, 0, 8, 31, 0, mc1n2_tlv_hpsp), + SOC_DOUBLE("Headphone Playback Switch", + MC1N2_AVOL_HP, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("Speaker Playback Volume", + MC1N2_AVOL_SP, 0, 8, 31, 0, mc1n2_tlv_hpsp), + SOC_DOUBLE("Speaker Playback Switch", + MC1N2_AVOL_SP, 7, 15, 1, 0), + + SOC_SINGLE_TLV("Receiver Playback Volume", + MC1N2_AVOL_RC, 0, 31, 0, mc1n2_tlv_hpsp), + SOC_SINGLE("Receiver Playback Switch", + MC1N2_AVOL_RC, 7, 1, 0), + + SOC_DOUBLE_TLV("Line 1 Playback Volume", + MC1N2_AVOL_LOUT1, 0, 8, 31, 0, mc1n2_tlv_aout), + SOC_DOUBLE("Line 1 Playback Switch", + MC1N2_AVOL_LOUT1, 7, 15, 1, 0), + + SOC_DOUBLE_TLV("Line 2 Playback Volume", + MC1N2_AVOL_LOUT2, 0, 8, 31, 0, mc1n2_tlv_aout), + SOC_DOUBLE("Line 2 Playback Switch", + MC1N2_AVOL_LOUT2, 7, 15, 1, 0), + + SOC_SINGLE_TLV("Mic 1 Gain Volume", + MC1N2_AVOL_MIC1_GAIN, 0, 3, 0, mc1n2_tlv_micgain), + + SOC_SINGLE_TLV("Mic 2 Gain Volume", + MC1N2_AVOL_MIC2_GAIN, 0, 3, 0, mc1n2_tlv_micgain), + + SOC_SINGLE_TLV("Mic 3 Gain Volume", + MC1N2_AVOL_MIC3_GAIN, 0, 3, 0, mc1n2_tlv_micgain), + + SOC_SINGLE_TLV("HP Gain Playback Volume", + MC1N2_AVOL_HP_GAIN, 0, 3, 0, mc1n2_tlv_hpgain), + + SOC_ENUM_EXT("Codec Status", path_control_enum[0], + mc1n2_get_codec_status, mc1n2_set_codec_status), +}; + +/* + * Same as snd_soc_add_controls supported in alsa-driver 1.0.19 or later. + * This function is implimented for compatibility with linux 2.6.29. + */ +static int mc1n2_add_controls(struct snd_soc_codec *codec, + const struct snd_kcontrol_new *controls, int n) +{ + int err, i; + + for (i = 0; i < n; i++, controls++) { +#ifdef ALSA_VER_ANDROID_3_0 + if ((err = snd_ctl_add((struct snd_card *)codec->card->snd_card, + snd_soc_cnew(controls, codec, NULL, NULL))) < 0) { + return err; + } +#else + if ((err = snd_ctl_add(codec->card, + snd_soc_cnew(controls, codec, NULL))) < 0) { + return err; + } +#endif + } + + return 0; +} + +static const struct snd_kcontrol_new adcl_mix[] = { + SOC_DAPM_SINGLE("Mic1 Switch", MC1N2_ADCL_MIC1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic2 Switch", MC1N2_ADCL_MIC2_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic3 Switch", MC1N2_ADCL_MIC3_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Line Switch", MC1N2_ADCL_LINE_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new adcr_mix[] = { + SOC_DAPM_SINGLE("Mic1 Switch", MC1N2_ADCR_MIC1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic2 Switch", MC1N2_ADCR_MIC2_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic3 Switch", MC1N2_ADCR_MIC3_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Line Switch", MC1N2_ADCR_LINE_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new hpl_mix[] = { + SOC_DAPM_SINGLE("Mic1 Switch", MC1N2_HPL_MIC1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic2 Switch", MC1N2_HPL_MIC2_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic3 Switch", MC1N2_HPL_MIC3_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Line Switch", MC1N2_HPL_LINE_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Dac Switch", MC1N2_HPL_DAC_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new hpr_mix[] = { + SOC_DAPM_SINGLE("Mic1 Switch", MC1N2_HPR_MIC1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic2 Switch", MC1N2_HPR_MIC2_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic3 Switch", MC1N2_HPR_MIC3_SW, 0, 1, 0), + SOC_DAPM_SINGLE("LineR Switch", MC1N2_HPR_LINER_SW, 0, 1, 0), + SOC_DAPM_SINGLE("DacR Switch", MC1N2_HPR_DACR_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new spl_mix[] = { + SOC_DAPM_SINGLE("Line Switch", MC1N2_SPL_LINE_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Dac Switch", MC1N2_SPL_DAC_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new spr_mix[] = { + SOC_DAPM_SINGLE("Line Switch", MC1N2_SPR_LINE_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Dac Switch", MC1N2_SPR_DAC_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new rc_mix[] = { + SOC_DAPM_SINGLE("Mic1 Switch", MC1N2_RC_MIC1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic2 Switch", MC1N2_RC_MIC2_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic3 Switch", MC1N2_RC_MIC3_SW, 0, 1, 0), + SOC_DAPM_SINGLE("LineMono Switch", MC1N2_RC_LINEMONO_SW, 0, 1, 0), + SOC_DAPM_SINGLE("DacL Switch", MC1N2_RC_DACL_SW, 0, 1, 0), + SOC_DAPM_SINGLE("DacR Switch", MC1N2_RC_DACR_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new lout1l_mix[] = { + SOC_DAPM_SINGLE("Mic1 Switch", MC1N2_LOUT1L_MIC1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic2 Switch", MC1N2_LOUT1L_MIC2_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic3 Switch", MC1N2_LOUT1L_MIC3_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Line Switch", MC1N2_LOUT1L_LINE_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Dac Switch", MC1N2_LOUT1L_DAC_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new lout1r_mix[] = { + SOC_DAPM_SINGLE("Mic1 Switch", MC1N2_LOUT1R_MIC1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic2 Switch", MC1N2_LOUT1R_MIC2_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic3 Switch", MC1N2_LOUT1R_MIC3_SW, 0, 1, 0), + SOC_DAPM_SINGLE("LineR Switch", MC1N2_LOUT1R_LINER_SW, 0, 1, 0), + SOC_DAPM_SINGLE("DacR Switch", MC1N2_LOUT1R_DACR_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new lout2l_mix[] = { + SOC_DAPM_SINGLE("Mic1 Switch", MC1N2_LOUT2L_MIC1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic2 Switch", MC1N2_LOUT2L_MIC2_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic3 Switch", MC1N2_LOUT2L_MIC3_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Line Switch", MC1N2_LOUT2L_LINE_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Dac Switch", MC1N2_LOUT2L_DAC_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new lout2r_mix[] = { + SOC_DAPM_SINGLE("Mic1 Switch", MC1N2_LOUT2R_MIC1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic2 Switch", MC1N2_LOUT2R_MIC2_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Mic3 Switch", MC1N2_LOUT2R_MIC3_SW, 0, 1, 0), + SOC_DAPM_SINGLE("LineR Switch", MC1N2_LOUT2R_LINER_SW, 0, 1, 0), + SOC_DAPM_SINGLE("DacR Switch", MC1N2_LOUT2R_DACR_SW, 0, 1, 0), +}; + +static const struct snd_kcontrol_new digital_mix[] = { + SOC_DAPM_SINGLE("Adc Switch", MC1N2_DMIX_ADC_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Dir0 Switch", MC1N2_DMIX_DIR0_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Dir1 Switch", MC1N2_DMIX_DIR1_SW, 0, 1, 0), + SOC_DAPM_SINGLE("Dir2 Switch", MC1N2_DMIX_DIR2_SW, 0, 1, 0), +}; + +static const char *dsource_text[] = { + "OFF", "ADC", "DIR0", "DIR1", "DIR2", "MIX", +}; + +static const char *linel_mode_text[] = { + "LINEL", "LINEMONO", +}; + +static const char *liner_mode_text[] = { + "LINER", "LINEMONO", +}; + +static const char *dacl_mode_text[] = { + "DACL", "DACMONO", +}; + +static const char *dacr_mode_text[] = { + "DACR", "DACMONO", +}; + +static const char *ae_param_text[] = { + "PARAM1", "PARAM2", "PARAM3", "PARAM4", "PARAM5", +}; + +static const char *adc_pdm_text[] = { + "ADC", "PDM", +}; + +static const struct soc_enum dacmain_source_enum = + SOC_ENUM_SINGLE(MC1N2_DACMAIN_SRC, 0, 6, dsource_text); + +static const struct soc_enum dacvoice_source_enum = + SOC_ENUM_SINGLE(MC1N2_DACVOICE_SRC, 0, 6, dsource_text); + +static const struct soc_enum dit0_source_enum = + SOC_ENUM_SINGLE(MC1N2_DIT0_SRC, 0, 6, dsource_text); + +static const struct soc_enum dit1_source_enum = + SOC_ENUM_SINGLE(MC1N2_DIT1_SRC, 0, 6, dsource_text); + +static const struct soc_enum dit2_source_enum = + SOC_ENUM_SINGLE(MC1N2_DIT2_SRC, 0, 6, dsource_text); + +static const struct soc_enum ae_source_enum = + SOC_ENUM_SINGLE(MC1N2_AE_SRC, 0, 6, dsource_text); + +static const struct soc_enum adcl_line_enum = + SOC_ENUM_SINGLE(MC1N2_ADCL_LINE_SRC, 0, 2, linel_mode_text); + +static const struct soc_enum adcr_line_enum = + SOC_ENUM_SINGLE(MC1N2_ADCR_LINE_SRC, 0, 2, liner_mode_text); + +static const struct soc_enum hpl_line_enum = + SOC_ENUM_SINGLE(MC1N2_HPL_LINE_SRC, 0, 2, linel_mode_text); + +static const struct soc_enum hpl_dac_enum = + SOC_ENUM_SINGLE(MC1N2_HPL_DAC_SRC, 0, 2, dacl_mode_text); + +static const struct soc_enum spl_line_enum = + SOC_ENUM_SINGLE(MC1N2_SPL_LINE_SRC, 0, 2, linel_mode_text); + +static const struct soc_enum spl_dac_enum = + SOC_ENUM_SINGLE(MC1N2_SPL_DAC_SRC, 0, 2, dacl_mode_text); + +static const struct soc_enum spr_line_enum = + SOC_ENUM_SINGLE(MC1N2_SPR_LINE_SRC, 0, 2, liner_mode_text); + +static const struct soc_enum spr_dac_enum = + SOC_ENUM_SINGLE(MC1N2_SPR_DAC_SRC, 0, 2, dacr_mode_text); + +static const struct soc_enum lout1l_line_enum = + SOC_ENUM_SINGLE(MC1N2_LOUT1L_LINE_SRC, 0, 2, linel_mode_text); + +static const struct soc_enum lout1l_dac_enum = + SOC_ENUM_SINGLE(MC1N2_LOUT1L_DAC_SRC, 0, 2, dacl_mode_text); + +static const struct soc_enum lout2l_line_enum = + SOC_ENUM_SINGLE(MC1N2_LOUT2L_LINE_SRC, 0, 2, linel_mode_text); + +static const struct soc_enum lout2l_dac_enum = + SOC_ENUM_SINGLE(MC1N2_LOUT2L_DAC_SRC, 0, 2, dacl_mode_text); + +static const struct soc_enum ae_param_enum = + SOC_ENUM_SINGLE(MC1N2_AE_PARAM_SEL, 0, 5, ae_param_text); + +static const struct soc_enum adc_pdm_enum = + SOC_ENUM_SINGLE(MC1N2_ADC_PDM_SEL, 0, 2, adc_pdm_text); + +static const struct snd_kcontrol_new dacmain_mux = + SOC_DAPM_ENUM("DACMAIN SRC MUX", dacmain_source_enum); + +static const struct snd_kcontrol_new dacvoice_mux = + SOC_DAPM_ENUM("DACVOICE SRC MUX", dacvoice_source_enum); + +static const struct snd_kcontrol_new dit0_mux = + SOC_DAPM_ENUM("DIT0 SRC MUX", dit0_source_enum); + +static const struct snd_kcontrol_new dit1_mux = + SOC_DAPM_ENUM("DIT1 SRC MUX", dit1_source_enum); + +static const struct snd_kcontrol_new dit2_mux = + SOC_DAPM_ENUM("DIT2 SRC MUX", dit2_source_enum); + +static const struct snd_kcontrol_new ae_mux = + SOC_DAPM_ENUM("AE SRC MUX", ae_source_enum); + +static const struct snd_kcontrol_new adcl_line_mux = + SOC_DAPM_ENUM("ADCL LINE MUX", adcl_line_enum); + +static const struct snd_kcontrol_new adcr_line_mux = + SOC_DAPM_ENUM("ADCR LINE MUX", adcr_line_enum); + +static const struct snd_kcontrol_new hpl_line_mux = + SOC_DAPM_ENUM("HPL LINE MUX", hpl_line_enum); + +static const struct snd_kcontrol_new hpl_dac_mux = + SOC_DAPM_ENUM("HPL DAC MUX", hpl_dac_enum); + +static const struct snd_kcontrol_new spl_line_mux = + SOC_DAPM_ENUM("SPL LINE MUX", spl_line_enum); + +static const struct snd_kcontrol_new spl_dac_mux = + SOC_DAPM_ENUM("SPL DAC MUX", spl_dac_enum); + +static const struct snd_kcontrol_new spr_line_mux = + SOC_DAPM_ENUM("SPR LINE MUX", spr_line_enum); + +static const struct snd_kcontrol_new spr_dac_mux = + SOC_DAPM_ENUM("SPR DAC MUX", spr_dac_enum); + +static const struct snd_kcontrol_new lout1l_line_mux = + SOC_DAPM_ENUM("LOUT1L LINE MUX", lout1l_line_enum); + +static const struct snd_kcontrol_new lout1l_dac_mux = + SOC_DAPM_ENUM("LOUT1L DAC MUX", lout1l_dac_enum); + +static const struct snd_kcontrol_new lout2l_line_mux = + SOC_DAPM_ENUM("LOUT2L LINE MUX", lout2l_line_enum); + +static const struct snd_kcontrol_new lout2l_dac_mux = + SOC_DAPM_ENUM("LOUT2L DAC MUX", lout2l_dac_enum); + +static const struct snd_kcontrol_new ae_param_mux = + SOC_DAPM_ENUM("AE PARAMETER", ae_param_enum); + +static const struct snd_kcontrol_new adc_pdm_mux = + SOC_DAPM_ENUM("ADC PDM MUX", adc_pdm_enum); + +static const struct snd_kcontrol_new bias1_sw = + SOC_DAPM_SINGLE("Switch", MC1N2_MICBIAS1, 0, 1, 0); + +static const struct snd_kcontrol_new bias2_sw = + SOC_DAPM_SINGLE("Switch", MC1N2_MICBIAS2, 0, 1, 0); + +static const struct snd_kcontrol_new bias3_sw = + SOC_DAPM_SINGLE("Switch", MC1N2_MICBIAS3, 0, 1, 0); + +static const struct snd_soc_dapm_widget mc1n2_widgets[] = { +SND_SOC_DAPM_INPUT("MIC1"), +SND_SOC_DAPM_INPUT("MIC2"), +SND_SOC_DAPM_INPUT("MIC3"), +SND_SOC_DAPM_INPUT("LINEIN"), + +SND_SOC_DAPM_INPUT("DIR0"), +SND_SOC_DAPM_INPUT("DIR1"), +SND_SOC_DAPM_INPUT("DIR2"), + +SND_SOC_DAPM_INPUT("PDM"), + +SND_SOC_DAPM_INPUT("AE1"), +SND_SOC_DAPM_INPUT("AE2"), +SND_SOC_DAPM_INPUT("AE3"), +SND_SOC_DAPM_INPUT("AE4"), +SND_SOC_DAPM_INPUT("AE5"), + +SND_SOC_DAPM_INPUT("BIAS1"), +SND_SOC_DAPM_INPUT("BIAS2"), +SND_SOC_DAPM_INPUT("BIAS3"), + +SND_SOC_DAPM_OUTPUT("DIT0"), +SND_SOC_DAPM_OUTPUT("DIT1"), +SND_SOC_DAPM_OUTPUT("DIT2"), + +SND_SOC_DAPM_ADC("ADC", NULL, SND_SOC_NOPM, 0, 0), +SND_SOC_DAPM_DAC("DAC", NULL, SND_SOC_NOPM, 0, 0), + +SND_SOC_DAPM_MIXER("ADCL MIXER", SND_SOC_NOPM, 0, 0, adcl_mix, ARRAY_SIZE(adcl_mix)), +SND_SOC_DAPM_MIXER("ADCR MIXER", SND_SOC_NOPM, 0, 0, adcr_mix, ARRAY_SIZE(adcr_mix)), +SND_SOC_DAPM_MIXER("HPL MIXER", SND_SOC_NOPM, 0, 0, hpl_mix, ARRAY_SIZE(hpl_mix)), +SND_SOC_DAPM_MIXER("HPR MIXER", SND_SOC_NOPM, 0, 0, hpr_mix, ARRAY_SIZE(hpr_mix)), +SND_SOC_DAPM_MIXER("SPL MIXER", SND_SOC_NOPM, 0, 0, spl_mix, ARRAY_SIZE(spl_mix)), +SND_SOC_DAPM_MIXER("SPR MIXER", SND_SOC_NOPM, 0, 0, spr_mix, ARRAY_SIZE(spr_mix)), +SND_SOC_DAPM_MIXER("RC MIXER", SND_SOC_NOPM, 0, 0, rc_mix, ARRAY_SIZE(rc_mix)), +SND_SOC_DAPM_MIXER("LINEOUT1L MIXER", SND_SOC_NOPM, 0, 0, lout1l_mix, ARRAY_SIZE(lout1l_mix)), +SND_SOC_DAPM_MIXER("LINEOUT1R MIXER", SND_SOC_NOPM, 0, 0, lout1r_mix, ARRAY_SIZE(lout1r_mix)), +SND_SOC_DAPM_MIXER("LINEOUT2L MIXER", SND_SOC_NOPM, 0, 0, lout2l_mix, ARRAY_SIZE(lout2l_mix)), +SND_SOC_DAPM_MIXER("LINEOUT2R MIXER", SND_SOC_NOPM, 0, 0, lout2r_mix, ARRAY_SIZE(lout2r_mix)), + +SND_SOC_DAPM_MIXER("DIGITAL MIXER", SND_SOC_NOPM, 0, 0, digital_mix, ARRAY_SIZE(digital_mix)), + +SND_SOC_DAPM_MUX("DACMAIN SRC", SND_SOC_NOPM, 0, 0, &dacmain_mux), +SND_SOC_DAPM_MUX("DACVOICE SRC", SND_SOC_NOPM, 0, 0, &dacvoice_mux), +SND_SOC_DAPM_MUX("DIT0 SRC", SND_SOC_NOPM, 0, 0, &dit0_mux), +SND_SOC_DAPM_MUX("DIT1 SRC", SND_SOC_NOPM, 0, 0, &dit1_mux), +SND_SOC_DAPM_MUX("DIT2 SRC", SND_SOC_NOPM, 0, 0, &dit2_mux), + +SND_SOC_DAPM_MUX("AE SRC", SND_SOC_NOPM, 0, 0, &ae_mux), + +SND_SOC_DAPM_MUX("ADCL LINE MIXMODE", SND_SOC_NOPM, 0, 0, &adcl_line_mux), +SND_SOC_DAPM_MUX("ADCR LINE MIXMODE", SND_SOC_NOPM, 0, 0, &adcr_line_mux), + +SND_SOC_DAPM_MUX("HPL LINE MIXMODE", SND_SOC_NOPM, 0, 0, &hpl_line_mux), +SND_SOC_DAPM_MUX("HPL DAC MIXMODE", SND_SOC_NOPM, 0, 0, &hpl_dac_mux), + +SND_SOC_DAPM_MUX("SPL LINE MIXMODE", SND_SOC_NOPM, 0, 0, &spl_line_mux), +SND_SOC_DAPM_MUX("SPL DAC MIXMODE", SND_SOC_NOPM, 0, 0, &spl_dac_mux), +SND_SOC_DAPM_MUX("SPR LINE MIXMODE", SND_SOC_NOPM, 0, 0, &spr_line_mux), +SND_SOC_DAPM_MUX("SPR DAC MIXMODE", SND_SOC_NOPM, 0, 0, &spr_dac_mux), + +SND_SOC_DAPM_MUX("LINEOUT1L LINE MIXMODE", SND_SOC_NOPM, 0, 0, &lout1l_line_mux), +SND_SOC_DAPM_MUX("LINEOUT1L DAC MIXMODE", SND_SOC_NOPM, 0, 0, &lout1l_dac_mux), + +SND_SOC_DAPM_MUX("LINEOUT2L LINE MIXMODE", SND_SOC_NOPM, 0, 0, &lout2l_line_mux), +SND_SOC_DAPM_MUX("LINEOUT2L DAC MIXMODE", SND_SOC_NOPM, 0, 0, &lout2l_dac_mux), + +SND_SOC_DAPM_MUX("AE PARAMETER SEL", SND_SOC_NOPM, 0, 0, &ae_param_mux), + +SND_SOC_DAPM_MUX("ADC PDM SEL", SND_SOC_NOPM, 0, 0, &adc_pdm_mux), + +SND_SOC_DAPM_SWITCH("MB1", SND_SOC_NOPM, 0, 0, &bias1_sw), +SND_SOC_DAPM_SWITCH("MB2", SND_SOC_NOPM, 0, 0, &bias2_sw), +SND_SOC_DAPM_SWITCH("MB3", SND_SOC_NOPM, 0, 0, &bias3_sw), +}; + +static const struct snd_soc_dapm_route intercon[] = { + {"ADCL LINE MIXMODE", "LINEL", "LINEIN"}, + {"ADCL LINE MIXMODE", "LINEMONO", "LINEIN"}, + {"ADCR LINE MIXMODE", "LINER", "LINEIN"}, + {"ADCR LINE MIXMODE", "LINEMONO", "LINEIN"}, + + {"HPL LINE MIXMODE", "LINEL", "LINEIN"}, + {"HPL LINE MIXMODE", "LINEMONO", "LINEIN"}, + {"HPL DAC MIXMODE", "DACL", "DAC"}, + {"HPL DAC MIXMODE", "DACMONO", "DAC"}, + + {"SPL LINE MIXMODE", "LINEL", "LINEIN"}, + {"SPL LINE MIXMODE", "LINEMONO", "LINEIN"}, + {"SPL DAC MIXMODE", "DACL", "DAC"}, + {"SPL DAC MIXMODE", "DACMONO", "DAC"}, + + {"SPR LINE MIXMODE", "LINER", "LINEIN"}, + {"SPR LINE MIXMODE", "LINEMONO", "LINEIN"}, + {"SPR DAC MIXMODE", "DACR", "DAC"}, + {"SPR DAC MIXMODE", "DACMONO", "DAC"}, + + {"LINEOUT1L LINE MIXMODE", "LINEL", "LINEIN"}, + {"LINEOUT1L LINE MIXMODE", "LINEMONO", "LINEIN"}, + {"LINEOUT1L DAC MIXMODE", "DACL", "DAC"}, + {"LINEOUT1L DAC MIXMODE", "DACMONO", "DAC"}, + + {"LINEOUT2L LINE MIXMODE", "LINEL", "LINEIN"}, + {"LINEOUT2L LINE MIXMODE", "LINEMONO", "LINEIN"}, + {"LINEOUT2L DAC MIXMODE", "DACL", "DAC"}, + {"LINEOUT2L DAC MIXMODE", "DACMONO", "DAC"}, + + {"ADCL MIXER", "Mic1 Switch", "MIC1"}, + {"ADCL MIXER", "Mic2 Switch", "MIC2"}, + {"ADCL MIXER", "Mic3 Switch", "MIC3"}, + {"ADCL MIXER", "Line Switch", "ADCL LINE MIXMODE"}, + + {"ADCR MIXER", "Mic1 Switch", "MIC1"}, + {"ADCR MIXER", "Mic2 Switch", "MIC2"}, + {"ADCR MIXER", "Mic3 Switch", "MIC3"}, + {"ADCR MIXER", "Line Switch", "ADCR LINE MIXMODE"}, + + {"HPL MIXER", "Mic1 Switch", "MIC1"}, + {"HPL MIXER", "Mic2 Switch", "MIC2"}, + {"HPL MIXER", "Mic3 Switch", "MIC3"}, + {"HPL MIXER", "Line Switch", "HPL LINE MIXMODE"}, + {"HPL MIXER", "Dac Switch", "HPL DAC MIXMODE"}, + + {"HPR MIXER", "Mic1 Switch", "MIC1"}, + {"HPR MIXER", "Mic2 Switch", "MIC2"}, + {"HPR MIXER", "Mic3 Switch", "MIC3"}, + {"HPR MIXER", "LineR Switch", "LINEIN"}, + {"HPR MIXER", "DacR Switch", "DAC"}, + + {"SPL MIXER", "Line Switch", "SPL LINE MIXMODE"}, + {"SPL MIXER", "Dac Switch", "SPL DAC MIXMODE"}, + + {"SPR MIXER", "Line Switch", "SPR LINE MIXMODE"}, + {"SPR MIXER", "Dac Switch", "SPR DAC MIXMODE"}, + + {"RC MIXER", "Mic1 Switch", "MIC1"}, + {"RC MIXER", "Mic2 Switch", "MIC2"}, + {"RC MIXER", "Mic3 Switch", "MIC3"}, + {"RC MIXER", "LineMono Switch", "LINEIN"}, + {"RC MIXER", "DacL Switch", "DAC"}, + {"RC MIXER", "DacR Switch", "DAC"}, + + {"LINEOUT1L MIXER", "Mic1 Switch", "MIC1"}, + {"LINEOUT1L MIXER", "Mic2 Switch", "MIC2"}, + {"LINEOUT1L MIXER", "Mic3 Switch", "MIC3"}, + {"LINEOUT1L MIXER", "Line Switch", "LINEOUT1L LINE MIXMODE"}, + {"LINEOUT1L MIXER", "Dac Switch", "LINEOUT1L DAC MIXMODE"}, + + {"LINEOUT1R MIXER", "Mic1 Switch", "MIC1"}, + {"LINEOUT1R MIXER", "Mic2 Switch", "MIC2"}, + {"LINEOUT1R MIXER", "Mic3 Switch", "MIC3"}, + {"LINEOUT1R MIXER", "LineR Switch", "LINEIN"}, + {"LINEOUT1R MIXER", "DacR Switch", "DAC"}, + + {"LINEOUT2L MIXER", "Mic1 Switch", "MIC1"}, + {"LINEOUT2L MIXER", "Mic2 Switch", "MIC2"}, + {"LINEOUT2L MIXER", "Mic3 Switch", "MIC3"}, + + {"LINEOUT2L MIXER", "Line Switch", "LINEOUT2L LINE MIXMODE"}, + {"LINEOUT2L MIXER", "Dac Switch", "LINEOUT2L DAC MIXMODE"}, + + {"LINEOUT2R MIXER", "Mic1 Switch", "MIC1"}, + {"LINEOUT2R MIXER", "Mic2 Switch", "MIC2"}, + {"LINEOUT2R MIXER", "Mic3 Switch", "MIC3"}, + {"LINEOUT2R MIXER", "LineR Switch", "LINEIN"}, + {"LINEOUT2R MIXER", "DacR Switch", "DAC"}, + + {"ADC", NULL, "ADCL MIXER"}, + {"ADC", NULL, "ADCR MIXER"}, + + {"DIGITAL MIXER", "Adc Switch", "ADC PDM SEL"}, + {"DIGITAL MIXER", "Dir0 Switch", "DIR0"}, + {"DIGITAL MIXER", "Dir1 Switch", "DIR1"}, + {"DIGITAL MIXER", "Dir2 Switch", "DIR2"}, + + {"AE SRC", "ADC", "ADCL MIXER"}, + {"AE SRC", "ADC", "ADCR MIXER"}, + {"AE SRC", "DIR0", "DIR0"}, + {"AE SRC", "DIR1", "DIR1"}, + {"AE SRC", "DIR2", "DIR2"}, + {"AE SRC", "MIX", "DIGITAL MIXER"}, + + {"DACMAIN SRC", "ADC", "ADC PDM SEL"}, + {"DACMAIN SRC", "DIR0", "DIR0"}, + {"DACMAIN SRC", "DIR1", "DIR1"}, + {"DACMAIN SRC", "DIR2", "DIR2"}, + {"DACMAIN SRC", "MIX", "DIGITAL MIXER"}, + + {"DACVOICE SRC", "ADC", "ADC PDM SEL"}, + {"DACVOICE SRC", "DIR0", "DIR0"}, + {"DACVOICE SRC", "DIR1", "DIR1"}, + {"DACVOICE SRC", "DIR2", "DIR2"}, + {"DACVOICE SRC", "MIX", "DIGITAL MIXER"}, + + {"DIT0 SRC", "ADC", "ADC PDM SEL"}, + {"DIT0 SRC", "DIR0", "DIR0"}, + {"DIT0 SRC", "DIR1", "DIR1"}, + {"DIT0 SRC", "DIR2", "DIR2"}, + {"DIT0 SRC", "MIX", "DIGITAL MIXER"}, + + {"DIT1 SRC", "ADC", "ADC PDM SEL"}, + {"DIT1 SRC", "DIR0", "DIR0"}, + {"DIT1 SRC", "DIR1", "DIR1"}, + {"DIT1 SRC", "DIR2", "DIR2"}, + {"DIT1 SRC", "MIX", "DIGITAL MIXER"}, + + {"DIT2 SRC", "ADC", "ADC PDM SEL"}, + {"DIT2 SRC", "DIR0", "DIR0"}, + {"DIT2 SRC", "DIR1", "DIR1"}, + {"DIT2 SRC", "DIR2", "DIR2"}, + {"DIT2 SRC", "MIX", "DIGITAL MIXER"}, + + {"AE PARAMETER SEL", "PARAM1", "AE1"}, + {"AE PARAMETER SEL", "PARAM2", "AE2"}, + {"AE PARAMETER SEL", "PARAM3", "AE3"}, + {"AE PARAMETER SEL", "PARAM4", "AE4"}, + {"AE PARAMETER SEL", "PARAM5", "AE5"}, + + {"ADC PDM SEL", "ADC", "ADC"}, + {"ADC PDM SEL", "PDM", "PDM"}, + + {"MB1", "Switch", "BIAS1"}, + {"MB2", "Switch", "BIAS2"}, + {"MB3", "Switch", "BIAS3"}, + + {"MIC1", NULL, "MB1"}, + {"MIC2", NULL, "MB2"}, + {"MIC3", NULL, "MB3"}, +}; + +#ifdef ALSA_VER_ANDROID_3_0 +static int mc1n2_add_widgets(struct snd_soc_codec *codec) +{ + int err; + + err = snd_soc_dapm_new_controls(&codec->dapm, mc1n2_widgets, + ARRAY_SIZE(mc1n2_widgets)); + if(err < 0) { + return err; + } + + err = snd_soc_dapm_add_routes(&codec->dapm, intercon, ARRAY_SIZE(intercon)); + if(err < 0) { + return err; + } + + err = snd_soc_dapm_new_widgets(&codec->dapm); + if(err < 0) { + return err; + } + + return 0; +} +#else +static int mc1n2_add_widgets(struct snd_soc_codec *codec) +{ + int err; + + err = snd_soc_dapm_new_controls(codec, mc1n2_widgets, + ARRAY_SIZE(mc1n2_widgets)); + if(err < 0) { + return err; + } + + err = snd_soc_dapm_add_routes(codec, intercon, ARRAY_SIZE(intercon)); + if(err < 0) { + return err; + } + + err = snd_soc_dapm_new_widgets(codec); + if(err < 0) { + return err; + } + + return 0; +} +#endif + +/* + * Hwdep interface + */ +static int mc1n2_hwdep_open(struct snd_hwdep * hw, struct file *file) +{ + /* Nothing to do */ + return 0; +} + +static int mc1n2_hwdep_release(struct snd_hwdep *hw, struct file *file) +{ + /* Nothing to do */ + return 0; +} + +static int mc1n2_hwdep_map_error(int err) +{ + switch (err) { + case MCDRV_SUCCESS: + return 0; + case MCDRV_ERROR_ARGUMENT: + return -EINVAL; + case MCDRV_ERROR_STATE: + return -EBUSY; + case MCDRV_ERROR_TIMEOUT: + return -EIO; + default: + /* internal error */ + return -EIO; + } +} + +static int mc1n2_hwdep_ioctl_set_path(struct snd_soc_codec *codec, + void *info, unsigned int update) +{ +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + MCDRV_CHANNEL *ch; + int i, j; + MCDRV_PATH_INFO *path = (MCDRV_PATH_INFO *) info; + + mutex_lock(&mc1n2->mutex); + + /* preserve DIR settings */ + for (i = 0; i < MC1N2_N_PATH_CHANNELS; i++) { + ch = (MCDRV_CHANNEL *)(info + mc1n2_path_channel_tbl[i]); +#ifdef DIO0_DAI_ENABLE + switch ((ch->abSrcOnOff[3]) & 0x3) { + case 1: + mc1n2->port[0].dir[i] = 1; + break; + case 2: + mc1n2->port[0].dir[i] = 0; + break; + } +#endif +#ifdef DIO1_DAI_ENABLE + switch ((ch->abSrcOnOff[3] >> 2) & 0x3) { + case 1: + mc1n2->port[1].dir[i] = 1; + break; + case 2: + mc1n2->port[1].dir[i] = 0; + break; + } +#endif +#ifdef DIO2_DAI_ENABLE + switch ((ch->abSrcOnOff[3] >> 4) & 0x3) { + case 1: + mc1n2->port[2].dir[i] = 1; + break; + case 2: + mc1n2->port[2].dir[i] = 0; + break; + } +#endif + } + + /* preserve DIT settings */ +#ifdef DIO0_DAI_ENABLE + ch = (MCDRV_CHANNEL *)(info + mc1n2_path_channel_tbl[0]); + for (j = 0; j < SOURCE_BLOCK_NUM; j++) { + mc1n2->port[0].dit.abSrcOnOff[j] |= + ch->abSrcOnOff[j] & 0x55; + mc1n2->port[0].dit.abSrcOnOff[j] &= + ~((ch->abSrcOnOff[j] & 0xaa) >> 1); + } +#endif +#ifdef DIO1_DAI_ENABLE + ch = (MCDRV_CHANNEL *)(info + mc1n2_path_channel_tbl[1]); + for (j = 0; j < SOURCE_BLOCK_NUM; j++) { + mc1n2->port[1].dit.abSrcOnOff[j] |= + ch->abSrcOnOff[j] & 0x55; + mc1n2->port[1].dit.abSrcOnOff[j] &= + ~((ch->abSrcOnOff[j] & 0xaa) >> 1); + } +#endif +#ifdef DIO2_DAI_ENABLE + ch = (MCDRV_CHANNEL *)(info + mc1n2_path_channel_tbl[2]); + for (j = 0; j < SOURCE_BLOCK_NUM; j++) { + mc1n2->port[2].dit.abSrcOnOff[j] |= + ch->abSrcOnOff[j] & 0x55; + mc1n2->port[2].dit.abSrcOnOff[j] &= + ~((ch->abSrcOnOff[j] & 0xaa) >> 1); + } +#endif + + /* modify path */ + for (i = 0; i < MC1N2_N_PATH_CHANNELS; i++) { + ch = (MCDRV_CHANNEL *)(info + mc1n2_path_channel_tbl[i]); + +#ifdef DIO0_DAI_ENABLE + if (!mc1n2_is_in_playback(&mc1n2->port[0])) { + ch->abSrcOnOff[3] &= ~(0x3); + } +#endif +#ifdef DIO1_DAI_ENABLE + if (!mc1n2_is_in_playback(&mc1n2->port[1])) { + ch->abSrcOnOff[3] &= ~(0x3 << 2); + } +#endif +#ifdef DIO2_DAI_ENABLE + if (!mc1n2_is_in_playback(&mc1n2->port[2])) { + ch->abSrcOnOff[3] &= ~(0x3 << 4); + } +#endif + } + +#ifdef DIO0_DAI_ENABLE + ch = (MCDRV_CHANNEL *)(info + mc1n2_path_channel_tbl[0]); + for (j = 0; j < SOURCE_BLOCK_NUM; j++) { + if (!mc1n2_is_in_capture(&mc1n2->port[0])) { + ch->abSrcOnOff[j] = 0; + } + } +#endif +#ifdef DIO1_DAI_ENABLE + ch = (MCDRV_CHANNEL *)(info + mc1n2_path_channel_tbl[1]); + for (j = 0; j < SOURCE_BLOCK_NUM; j++) { + if (!mc1n2_is_in_capture(&mc1n2->port[1])) { + ch->abSrcOnOff[j] = 0; + } + } +#endif +#ifdef DIO2_DAI_ENABLE + ch = (MCDRV_CHANNEL *)(info + mc1n2_path_channel_tbl[2]); + for (j = 0; j < SOURCE_BLOCK_NUM; j++) { + if (!mc1n2_is_in_capture(&mc1n2->port[2])) { + ch->abSrcOnOff[j] = 0; + } + } +#endif + + /* select mic path */ + if ((path->asAdc0[0].abSrcOnOff[0] & MCDRV_SRC0_MIC1_OFF) && (path->asAdc0[1].abSrcOnOff[0] & MCDRV_SRC0_MIC1_OFF)) { + audio_ctrl_mic_bias_gpio(mc1n2->pdata, MAIN_MIC, 0); + } else { + audio_ctrl_mic_bias_gpio(mc1n2->pdata, MAIN_MIC, 1); + mdelay(mc1n2->delay_mic1in); + } + + if ((path->asAdc0[0].abSrcOnOff[0] & MCDRV_SRC0_MIC3_OFF) && (path->asAdc0[1].abSrcOnOff[0] & MCDRV_SRC0_MIC3_OFF)) { + audio_ctrl_mic_bias_gpio(mc1n2->pdata, SUB_MIC, 0); + } else + audio_ctrl_mic_bias_gpio(mc1n2->pdata, SUB_MIC, 1); + + mutex_unlock(&mc1n2->mutex); + + return 0; +} + +static int mc1n2_hwdep_ioctl_set_ae(struct snd_soc_codec *codec, + void *info, unsigned int update) +{ +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + UINT8 onoff = ((MCDRV_AE_INFO *)info)->bOnOff; + unsigned int mask = update & 0x0f; /* bit mask for bOnOff */ + int i; + + struct mc1n2_ae_copy { + UINT32 flag; + size_t offset; + size_t size; + }; + + struct mc1n2_ae_copy tbl[] = { + {MCDRV_AEUPDATE_FLAG_BEX, + offsetof(MCDRV_AE_INFO, abBex), BEX_PARAM_SIZE}, + {MCDRV_AEUPDATE_FLAG_WIDE, + offsetof(MCDRV_AE_INFO, abWide), WIDE_PARAM_SIZE}, + {MCDRV_AEUPDATE_FLAG_DRC, + offsetof(MCDRV_AE_INFO, abDrc), DRC_PARAM_SIZE}, + {MCDRV_AEUPDATE_FLAG_EQ5, + offsetof(MCDRV_AE_INFO, abEq5), EQ5_PARAM_SIZE}, + {MCDRV_AEUPDATE_FLAG_EQ3, + offsetof(MCDRV_AE_INFO, abEq3), EQ3_PARAM_SIZE}, + }; + + mutex_lock(&mc1n2->mutex); + + mc1n2->ae_store.bOnOff = (mc1n2->ae_store.bOnOff & ~mask) | onoff; + + for (i = 0; i < sizeof(tbl)/sizeof(struct mc1n2_ae_copy); i++) { + if (update & tbl[i].flag) { + memcpy((void *)&mc1n2->ae_store + tbl[i].offset, + info + tbl[i].offset, tbl[i].size); + } + } + + mutex_unlock(&mc1n2->mutex); + + return 0; +} + +struct mc1n2_hwdep_func { + int cmd; + size_t size; + int (*callback)(struct snd_soc_codec *, void *, unsigned int); +}; + +struct mc1n2_hwdep_func mc1n2_hwdep_func_map[] = { + {0, 0, NULL}, /* INIT */ + {0, 0, NULL}, /* TERM */ + {MC1N2_IOCTL_NR_BOTH, sizeof(MCDRV_REG_INFO), NULL}, /* READ_REG */ + {0, 0, NULL}, /* WRITE_REG */ + {MC1N2_IOCTL_NR_GET, sizeof(MCDRV_PATH_INFO), NULL}, /* GET_PATH */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_PATH_INFO), + mc1n2_hwdep_ioctl_set_path}, /* SET_PATH */ + {0, 0, NULL}, /* GET_VOLUME */ + {0, 0, NULL}, /* SET_VOLUME */ + {MC1N2_IOCTL_NR_GET, sizeof(MCDRV_DIO_INFO), NULL}, /* GET_DIGITALIO */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_DIO_INFO), NULL}, /* SET_DIGITALIO */ + {MC1N2_IOCTL_NR_GET, sizeof(MCDRV_DAC_INFO), NULL}, /* GET_DAC */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_DAC_INFO), NULL}, /* SET_DAC */ + {MC1N2_IOCTL_NR_GET, sizeof(MCDRV_ADC_INFO), NULL}, /* GET_ADC */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_ADC_INFO), NULL}, /* SET_ADC */ + {MC1N2_IOCTL_NR_GET, sizeof(MCDRV_SP_INFO), NULL}, /* GET_SP */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_SP_INFO), NULL}, /* SET_SP */ + {MC1N2_IOCTL_NR_GET, sizeof(MCDRV_DNG_INFO), NULL}, /* GET_DNG */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_DNG_INFO), NULL}, /* SET_DNG */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_AE_INFO), + mc1n2_hwdep_ioctl_set_ae}, /* SET_AE */ + {0, 0, NULL}, /* SET_AE_EX */ + {0, 0, NULL}, /* SET_CDSP */ + {0, 0, NULL}, /* GET_CDSP_PARAM */ + {0, 0, NULL}, /* SET_CDSP_PARAM */ + {0, 0, NULL}, /* REG_CDSP_CB */ + {MC1N2_IOCTL_NR_GET, sizeof(MCDRV_PDM_INFO), NULL}, /* GET PDM */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_PDM_INFO), NULL}, /* SET_PDM */ + {0, 0, NULL}, /* SET_DTMF */ + {0, 0, NULL}, /* CONFIG_GP */ + {0, 0, NULL}, /* MASK_GP */ + {0, 0, NULL}, /* GETSET_GP */ + {0, 0, NULL}, /* GET_PEAK */ + {0, 0, NULL}, /* IRQ */ + {0, 0, NULL}, /* UPDATE_CLOCK */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_CLKSW_INFO), NULL}, /* SWITCH_CLOCK */ + {MC1N2_IOCTL_NR_GET, sizeof(MCDRV_SYSEQ_INFO), NULL}, /* GET SYSEQ */ + {MC1N2_IOCTL_NR_SET, sizeof(MCDRV_SYSEQ_INFO), NULL}, /* SET_SYSEQ */ +}; +#define MC1N2_HWDEP_N_FUNC_MAP \ + (sizeof(mc1n2_hwdep_func_map)/sizeof(struct mc1n2_hwdep_func)) + +static int mc1n2_hwdep_ioctl_get_ctrl(struct snd_soc_codec *codec, + struct mc1n2_ctrl_args *args) +{ + struct mc1n2_hwdep_func *func = &mc1n2_hwdep_func_map[args->dCmd]; + void *info; + int err; + + if (func->cmd != MC1N2_IOCTL_NR_GET) { + return -EINVAL; + } + + if (!access_ok(VERIFY_WRITE, args->pvPrm, func->size)) { + return -EFAULT; + } + + if (!(info = kzalloc(func->size, GFP_KERNEL))) { + return -ENOMEM; + } + + err = _McDrv_Ctrl(args->dCmd, info, args->dPrm); + err = mc1n2_hwdep_map_error(err); + if (err < 0) { + goto error; + } + + if (func->callback) { /* call post-process */ + func->callback(codec, info, args->dPrm); + } + + if (copy_to_user(args->pvPrm, info, func->size) != 0) { + err = -EFAULT; + goto error; + } + +error: + kfree(info); + return err; +} + +static int mc1n2_hwdep_ioctl_set_ctrl(struct snd_soc_codec *codec, + struct mc1n2_ctrl_args *args) +{ + struct mc1n2_hwdep_func *func = &mc1n2_hwdep_func_map[args->dCmd]; + void *info; + int err; + + if (func->cmd != MC1N2_IOCTL_NR_SET) { + return -EINVAL; + } + + if (!access_ok(VERIFY_READ, args->pvPrm, func->size)) { + return -EFAULT; + } + + if (!(info = kzalloc(func->size, GFP_KERNEL))) { + return -ENOMEM; + } + + if (copy_from_user(info, args->pvPrm, func->size) != 0) { + kfree(info); + return -EFAULT; + } + + if (func->callback) { /* call pre-process */ + func->callback(codec, info, args->dPrm); + } + + if (args->dCmd == MCDRV_SET_DIGITALIO) { +#ifdef DIO0_DAI_ENABLE + args->dPrm &= ~(MCDRV_DIO0_COM_UPDATE_FLAG | MCDRV_DIO0_DIR_UPDATE_FLAG | MCDRV_DIO0_DIT_UPDATE_FLAG); +#endif +#ifdef DIO1_DAI_ENABLE + args->dPrm &= ~(MCDRV_DIO1_COM_UPDATE_FLAG | MCDRV_DIO1_DIR_UPDATE_FLAG | MCDRV_DIO1_DIT_UPDATE_FLAG); +#endif +#ifdef DIO2_DAI_ENABLE + args->dPrm &= ~(MCDRV_DIO2_COM_UPDATE_FLAG | MCDRV_DIO2_DIR_UPDATE_FLAG | MCDRV_DIO2_DIT_UPDATE_FLAG); +#endif + } + + err = _McDrv_Ctrl(args->dCmd, info, args->dPrm); + + kfree(info); + + return mc1n2_hwdep_map_error(err); +} + +static int mc1n2_hwdep_ioctl_read_reg(struct mc1n2_ctrl_args *args) +{ + struct mc1n2_hwdep_func *func = &mc1n2_hwdep_func_map[args->dCmd]; + MCDRV_REG_INFO info; + int err; + + if (func->cmd != MC1N2_IOCTL_NR_BOTH) { + return -EINVAL; + } + + if (!access_ok(VERIFY_WRITE, args->pvPrm, sizeof(MCDRV_REG_INFO))) { + return -EFAULT; + } + + if (copy_from_user(&info, args->pvPrm, sizeof(MCDRV_REG_INFO)) != 0) { + return -EFAULT; + } + + err = _McDrv_Ctrl(args->dCmd, &info, args->dPrm); + if (err != MCDRV_SUCCESS) { + return mc1n2_hwdep_map_error(err); + } + + if (copy_to_user(args->pvPrm, &info, sizeof(MCDRV_REG_INFO)) != 0) { + return -EFAULT; + } + + return 0; +} + +static int mc1n2_hwdep_ioctl_notify(struct snd_soc_codec *codec, + struct mc1n2_ctrl_args *args) +{ + MCDRV_PATH_INFO path; + int err; + +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + + switch (args->dCmd) { + case MCDRV_NOTIFY_CALL_START: + case MCDRV_NOTIFY_2MIC_CALL_START: + mc1n2_current_mode |= MC1N2_MODE_CALL_ON; + err = mc1n2->pdata->set_adc_power_constraints(0); + if (err < 0) { + dev_err(codec->dev, + "%s:%d:Error VADC_3.3V[On]\n", __func__, err); + } + break; + case MCDRV_NOTIFY_CALL_STOP: + mc1n2_current_mode &= ~MC1N2_MODE_CALL_ON; + err = mc1n2->pdata->set_adc_power_constraints(1); + if (err < 0) { + dev_err(codec->dev, + "%s:%d:Error VADC_3.3V[Off]\n", __func__, err); + } + break; + case MCDRV_NOTIFY_MEDIA_PLAY_START: + break; + case MCDRV_NOTIFY_MEDIA_PLAY_STOP: + break; + case MCDRV_NOTIFY_FM_PLAY_START: + mc1n2_current_mode |= MC1N2_MODE_FM_ON; + break; + case MCDRV_NOTIFY_FM_PLAY_STOP: + mc1n2_current_mode &= ~MC1N2_MODE_FM_ON; + break; + case MCDRV_NOTIFY_BT_SCO_ENABLE: + break; + case MCDRV_NOTIFY_BT_SCO_DISABLE: + break; + case MCDRV_NOTIFY_VOICE_REC_START: + mc1n2->delay_mic1in = MC1N2_WAITTIME_MICIN; + break; + case MCDRV_NOTIFY_VOICE_REC_STOP: + mc1n2->delay_mic1in = 0; + break; + case MCDRV_NOTIFY_HDMI_START: + if (mc1n2->hdmicount == 0) { + memset(&path, 0, sizeof(path)); + path.asDit0[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asDit1[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asDit2[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asDac[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asDac[1].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asAe[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + _McDrv_Ctrl(MCDRV_SET_PATH, &path, 0); + } + + (mc1n2->hdmicount)++; + break; + case MCDRV_NOTIFY_HDMI_STOP: + if (mc1n2->hdmicount != 0) { + if (mc1n2->hdmicount == 1) { + memset(&path, 0, sizeof(path)); + path.asDit0[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asDit1[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asDit2[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asDac[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asDac[1].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asAe[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + path.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_OFF; + _McDrv_Ctrl(MCDRV_SET_PATH, &path, 0); + } + + (mc1n2->hdmicount)--; + } + break; + case MCDRV_NOTIFY_RECOVER: + { + int err, i; + SINT16 *vol = (SINT16 *)&mc1n2->vol_store; + + mutex_lock(&mc1n2->mutex); + + /* store parameters */ + for (i = 0; i < MC1N2_N_INFO_STORE; i++) { + struct mc1n2_info_store *store = &mc1n2_info_store_tbl[i]; + if (store->get) { + err = _McDrv_Ctrl(store->get, (void *)mc1n2 + store->offset, 0); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, + "%d: Error in MCDRV_GET_xxx\n", err); + err = -EIO; + goto error_recover; + } else { + err = 0; + } + } + } + + err = _McDrv_Ctrl(MCDRV_TERM, NULL, 0); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in MCDRV_TERM\n", err); + err = -EIO; + } else { + err = 0; + } + + err = _McDrv_Ctrl(MCDRV_INIT, &mc1n2->setup.init, 0); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in MCDRV_INIT\n", err); + err = -EIO; + goto error_recover; + } else { + err = 0; + } + + /* restore parameters */ + for (i = 0; i < sizeof(MCDRV_VOL_INFO)/sizeof(SINT16); i++, vol++) { + *vol |= 0x0001; + } + + for (i = 0; i < MC1N2_N_INFO_STORE; i++) { + struct mc1n2_info_store *store = &mc1n2_info_store_tbl[i]; + if (store->set) { + err = _McDrv_Ctrl(store->set, (void *)mc1n2 + store->offset, + store->flags); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, + "%d: Error in MCDRV_SET_xxx\n", err); + err = -EIO; + goto error_recover; + } else { + err = 0; + } + } + } + +error_recover: + mutex_unlock(&mc1n2->mutex); + return err; + break; + } + } + + return 0; +} + +static int mc1n2_hwdep_ioctl(struct snd_hwdep *hw, struct file *file, + unsigned int cmd, unsigned long arg) +{ + struct mc1n2_ctrl_args ctrl_args; + struct snd_soc_codec *codec = hw->private_data; + int err; + + if (!access_ok(VERIFY_READ, (struct mc1n2_ctrl_args *)arg, + sizeof(struct mc1n2_ctrl_args))) { + return -EFAULT; + } + + if (copy_from_user(&ctrl_args, (struct mc1n2_ctrl_args *)arg, + sizeof(struct mc1n2_ctrl_args)) != 0) { + return -EFAULT; + } + + if (cmd == MC1N2_IOCTL_NOTIFY) { + return mc1n2_hwdep_ioctl_notify(codec, &ctrl_args); + } + + if (ctrl_args.dCmd >= MC1N2_HWDEP_N_FUNC_MAP) { + return -EINVAL; + } + + switch (cmd) { + case MC1N2_IOCTL_GET_CTRL: + err = mc1n2_hwdep_ioctl_get_ctrl(codec, &ctrl_args); + break; + case MC1N2_IOCTL_SET_CTRL: + err = mc1n2_hwdep_ioctl_set_ctrl(codec, &ctrl_args); + break; + case MC1N2_IOCTL_READ_REG: + err = mc1n2_hwdep_ioctl_read_reg(&ctrl_args); + break; + default: + err = -EINVAL; + } + + return err; +} + +static int mc1n2_add_hwdep(struct snd_soc_codec *codec) +{ + struct snd_hwdep *hw; +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + int err; + +#ifdef ALSA_VER_ANDROID_3_0 + err = snd_hwdep_new((struct snd_card *)codec->card->snd_card, + MC1N2_HWDEP_ID, 0, &hw); +#else + err = snd_hwdep_new(codec->card, MC1N2_HWDEP_ID, 0, &hw); +#endif + if (err < 0) { + return err; + } + + hw->iface = SNDRV_HWDEP_IFACE_MC1N2; + hw->private_data = codec; + hw->ops.open = mc1n2_hwdep_open; + hw->ops.release = mc1n2_hwdep_release; + hw->ops.ioctl = mc1n2_hwdep_ioctl; + hw->exclusive = 1; + strcpy(hw->name, MC1N2_HWDEP_ID); + mc1n2->hwdep = hw; + + return 0; +} + +/* + * Codec device + */ +#ifdef ALSA_VER_ANDROID_3_0 +static int mc1n2_probe(struct snd_soc_codec *codec) +#else +static int mc1n2_probe(struct platform_device *pdev) +#endif +{ +#ifdef ALSA_VER_ANDROID_3_0 + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); + struct device *dev = codec->dev; + struct mc1n2_setup *setup = &mc1n2_cfg_setup; +#else + struct snd_soc_device *socdev = platform_get_drvdata(pdev); + struct snd_soc_codec *codec = mc1n2_get_codec_data(); +#ifdef ALSA_VER_ANDROID_2_6_35 + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif + struct mc1n2_setup *setup = socdev->codec_data; + struct device *dev = socdev->dev; +#endif + int err; + UINT32 update = 0; + + TRACE_FUNC(); + + if (!codec) { + dev_err(dev, "I2C bus is not probed successfully\n"); + err = -ENODEV; + goto error_codec_data; + } +#ifndef ALSA_VER_ANDROID_3_0 +#ifdef ALSA_VER_1_0_19 + socdev->codec = codec; +#else + socdev->card->codec = codec; +#endif +#endif + + /* init hardware */ + if (!setup) { + dev_err(dev, "No initialization parameters given\n"); + err = -EINVAL; + goto error_init_hw; + } + memcpy(&mc1n2->setup, setup, sizeof(struct mc1n2_setup)); + err = _McDrv_Ctrl(MCDRV_INIT, &mc1n2->setup.init, 0); + if (err != MCDRV_SUCCESS) { + dev_err(dev, "%d: Error in MCDRV_INIT\n", err); + err = -EIO; + goto error_init_hw; + } + + /* pcm */ +#ifndef ALSA_VER_ANDROID_3_0 + err = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1); + if (err < 0) { + dev_err(dev, "%d: Error in snd_soc_new_pcms\n", err); + goto error_new_pcm; + } +#endif + + /* controls */ + err = mc1n2_add_controls(codec, mc1n2_snd_controls, + ARRAY_SIZE(mc1n2_snd_controls)); + if (err < 0) { + dev_err(dev, "%d: Error in mc1n2_add_controls\n", err); + goto error_add_ctl; + } + + err = mc1n2_add_widgets(codec); + if (err < 0) { + dev_err(dev, "%d: Error in mc1n2_add_widgets\n", err); + goto error_add_ctl; + } + + /* hwdep */ + err = mc1n2_add_hwdep(codec); + if (err < 0) { + dev_err(dev, "%d: Error in mc1n2_add_hwdep\n", err); + goto error_add_hwdep; + } + +#if (defined ALSA_VER_1_0_19) || (defined ALSA_VER_1_0_21) + err = snd_soc_init_card(socdev); + if (err < 0) { + dev_err(dev, "%d: Error in snd_soc_init_card\n", err); + goto error_init_card; + } +#endif + +#ifndef DIO0_DAI_ENABLE + update |= (MCDRV_DIO0_COM_UPDATE_FLAG | MCDRV_DIO0_DIR_UPDATE_FLAG | MCDRV_DIO0_DIT_UPDATE_FLAG); +#endif + +#ifndef DIO1_DAI_ENABLE + update |= (MCDRV_DIO1_COM_UPDATE_FLAG | MCDRV_DIO1_DIR_UPDATE_FLAG | MCDRV_DIO1_DIT_UPDATE_FLAG); +#endif + +#ifndef DIO2_DAI_ENABLE + update |= (MCDRV_DIO2_COM_UPDATE_FLAG | MCDRV_DIO2_DIR_UPDATE_FLAG | MCDRV_DIO2_DIT_UPDATE_FLAG); +#endif + + err = _McDrv_Ctrl(MCDRV_SET_DIGITALIO, (void *)&stDioInfo_Default, update); + if (err < 0) { + dev_err(dev, "%d: Error in MCDRV_SET_DIGITALIO\n", err); + goto error_set_mode; + } + + err = _McDrv_Ctrl(MCDRV_SET_DAC, (void *)&stDacInfo_Default, 0x7); + if (err < 0) { + dev_err(dev, "%d: Error in MCDRV_SET_DAC\n", err); + goto error_set_mode; + } + + err = _McDrv_Ctrl(MCDRV_SET_ADC, (void *)&stAdcInfo_Default, 0x7); + if (err < 0) { + dev_err(dev, "%d: Error in MCDRV_SET_ADC\n", err); + goto error_set_mode; + } + + err = _McDrv_Ctrl(MCDRV_SET_SP, (void *)&stSpInfo_Default, 0); + if (err < 0) { + dev_err(dev, "%d: Error in MCDRV_SET_SP\n", err); + goto error_set_mode; + } + + err = _McDrv_Ctrl(MCDRV_SET_DNG, (void *)&stDngInfo_Default, 0x3F3F3F); + if (err < 0) { + dev_err(dev, "%d: Error in MCDRV_SET_DNG\n", err); + goto error_set_mode; + } + + if (mc1n2_hwid == MC1N2_HW_ID_AB) { + err = _McDrv_Ctrl(MCDRV_SET_SYSEQ, (void *)&stSyseqInfo_Default, 0x3); + + if (err < 0) { + dev_err(dev, "%d: Error in MCDRV_SET_SYSEQ\n", err); + goto error_set_mode; + } + } + + return 0; + +error_set_mode: +#if (defined ALSA_VER_1_0_19) || (defined ALSA_VER_1_0_21) +error_init_card: +#endif +error_add_hwdep: +error_add_ctl: +#ifndef ALSA_VER_ANDROID_3_0 + snd_soc_free_pcms(socdev); +error_new_pcm: +#endif + _McDrv_Ctrl(MCDRV_TERM, NULL, 0); +error_init_hw: +#ifndef ALSA_VER_ANDROID_3_0 +#ifdef ALSA_VER_1_0_19 + socdev->codec = NULL; +#else + socdev->card->codec = NULL; +#endif +#endif +error_codec_data: + return err; +} + +#ifdef ALSA_VER_ANDROID_3_0 +static int mc1n2_remove(struct snd_soc_codec *codec) +{ + int err; + + TRACE_FUNC(); + + if (codec) { + err = _McDrv_Ctrl(MCDRV_TERM, NULL, 0); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in MCDRV_TERM\n", err); + return -EIO; + } + } + return 0; +} +#else +static int mc1n2_remove(struct platform_device *pdev) +{ + struct snd_soc_device *socdev = platform_get_drvdata(pdev); + int err; + + TRACE_FUNC(); + +#ifdef ALSA_VER_1_0_19 + if (socdev->codec) { +#else + if (socdev->card->codec) { +#endif + snd_soc_free_pcms(socdev); + + err = _McDrv_Ctrl(MCDRV_TERM, NULL, 0); + if (err != MCDRV_SUCCESS) { + dev_err(socdev->dev, "%d: Error in MCDRV_TERM\n", err); + return -EIO; + } + } + + return 0; +} +#endif + +#ifdef ALSA_VER_ANDROID_3_0 +static int mc1n2_suspend(struct snd_soc_codec *codec, pm_message_t state) +#else +static int mc1n2_suspend(struct platform_device *pdev, pm_message_t state) +#endif +{ +#ifdef ALSA_VER_ANDROID_3_0 + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct snd_soc_device *socdev = platform_get_drvdata(pdev); +#ifdef ALSA_VER_1_0_19 + struct snd_soc_codec *codec = socdev->codec; +#else + struct snd_soc_codec *codec = socdev->card->codec; +#endif +#ifdef ALSA_VER_ANDROID_2_6_35 + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif +#endif + int err, i; + + TRACE_FUNC(); + + mutex_lock(&mc1n2->mutex); + + /* store parameters */ + for (i = 0; i < MC1N2_N_INFO_STORE; i++) { + struct mc1n2_info_store *store = &mc1n2_info_store_tbl[i]; + if (store->get) { + err = _McDrv_Ctrl(store->get, (void *)mc1n2 + store->offset, 0); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, + "%d: Error in mc1n2_suspend\n", err); + err = -EIO; + goto error; + } else { + err = 0; + } + } + } + + /* Do not enter suspend mode for voice call */ + if(mc1n2_current_mode != MC1N2_MODE_IDLE) { + err = 0; + goto error; + } + + err = _McDrv_Ctrl(MCDRV_TERM, NULL, 0); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in MCDRV_TERM\n", err); + err = -EIO; + } else { + err = 0; + } + + /* Suepend MCLK */ + mc1n2_set_mclk_source(0); + +error: + mutex_unlock(&mc1n2->mutex); + + return err; +} + +#ifdef ALSA_VER_ANDROID_3_0 +static int mc1n2_resume(struct snd_soc_codec *codec) +#else +static int mc1n2_resume(struct platform_device *pdev) +#endif +{ +#ifdef ALSA_VER_ANDROID_3_0 + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct snd_soc_device *socdev = platform_get_drvdata(pdev); +#ifdef ALSA_VER_1_0_19 + struct snd_soc_codec *codec = socdev->codec; +#else + struct snd_soc_codec *codec = socdev->card->codec; +#endif +#ifdef ALSA_VER_ANDROID_2_6_35 + struct mc1n2_data *mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + struct mc1n2_data *mc1n2 = codec->private_data; +#endif +#endif + SINT16 *vol = (SINT16 *)&mc1n2->vol_store; + int err, i; + + TRACE_FUNC(); + + mutex_lock(&mc1n2->mutex); + + /* Resume MCLK */ + mc1n2_set_mclk_source(1); + + err = _McDrv_Ctrl(MCDRV_INIT, &mc1n2->setup.init, 0); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, "%d: Error in MCDRV_INIT\n", err); + err = -EIO; + goto error; + } else { + err = 0; + } + + /* restore parameters */ + for (i = 0; i < sizeof(MCDRV_VOL_INFO)/sizeof(SINT16); i++, vol++) { + *vol |= 0x0001; + } + + for (i = 0; i < MC1N2_N_INFO_STORE; i++) { + struct mc1n2_info_store *store = &mc1n2_info_store_tbl[i]; + if (store->set) { + err = _McDrv_Ctrl(store->set, (void *)mc1n2 + store->offset, + store->flags); + if (err != MCDRV_SUCCESS) { + dev_err(codec->dev, + "%d: Error in mc1n2_resume\n", err); + err = -EIO; + goto error; + } else { + err = 0; + } + } + } + +error: + mutex_unlock(&mc1n2->mutex); + + return err; +} + +#ifdef ALSA_VER_ANDROID_3_0 +struct snd_soc_codec_driver soc_codec_dev_mc1n2 = { + .probe = mc1n2_probe, + .remove = mc1n2_remove, + .suspend = mc1n2_suspend, + .resume = mc1n2_resume, + .read = mc1n2_read_reg, + .write = mc1n2_write_reg, + .reg_cache_size = MC1N2_N_REG, + .reg_word_size = sizeof(u16), + .reg_cache_step = 1 +}; +#else +struct snd_soc_codec_device soc_codec_dev_mc1n2 = { + .probe = mc1n2_probe, + .remove = mc1n2_remove, + .suspend = mc1n2_suspend, + .resume = mc1n2_resume +}; +EXPORT_SYMBOL_GPL(soc_codec_dev_mc1n2); +#endif + +/* + * I2C client + */ +static int mc1n2_i2c_detect(struct i2c_client *client, struct i2c_board_info *info) +{ + UINT8 bHwid = mc1n2_i2c_read_byte(client, 8); + + if (bHwid != MC1N2_HW_ID_AB && bHwid != MC1N2_HW_ID_AA) { + return -ENODEV; + } + mc1n2_hwid = bHwid; + + return 0; +} + +static int mc1n2_i2c_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct snd_soc_codec *codec; + struct mc1n2_data *mc1n2; + int err; + + TRACE_FUNC(); + + /* setup codec data */ + if (!(codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL))) { + err = -ENOMEM; + goto err_alloc_codec; + } + codec->name = MC1N2_NAME; +// codec->owner = THIS_MODULE; + mutex_init(&codec->mutex); + codec->dev = &client->dev; + + if (!(mc1n2 = kzalloc(sizeof(struct mc1n2_data), GFP_KERNEL))) { + err = -ENOMEM; + goto err_alloc_data; + } + mutex_init(&mc1n2->mutex); +#if (defined ALSA_VER_ANDROID_2_6_35) || (defined ALSA_VER_ANDROID_3_0) + snd_soc_codec_set_drvdata(codec, mc1n2); +#else + codec->private_data = mc1n2; +#endif + + mc1n2->hdmicount = 0; + + mc1n2->pdata = client->dev.platform_data; + + /* setup i2c client data */ + if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { + err = -ENODEV; + goto err_i2c; + } + + if ((err = mc1n2_i2c_detect(client, NULL)) < 0) { + goto err_i2c; + } + + +#ifdef ALSA_VER_ANDROID_3_0 + i2c_set_clientdata(client, mc1n2); +#else + i2c_set_clientdata(client, codec); + + codec->control_data = client; + codec->read = mc1n2_read_reg; + codec->write = mc1n2_write_reg; + codec->hw_write = NULL; + codec->hw_read = NULL; + codec->reg_cache = kzalloc(sizeof(u16) * MC1N2_N_REG, GFP_KERNEL); + if (codec->reg_cache == NULL) { + err = -ENOMEM; + goto err_alloc_cache; + } + codec->reg_cache_size = MC1N2_N_REG; + codec->reg_cache_step = 1; + INIT_LIST_HEAD(&codec->dapm_widgets); + INIT_LIST_HEAD(&codec->dapm_paths); + codec->dai = mc1n2_dai; + codec->num_dai = ARRAY_SIZE(mc1n2_dai); + mc1n2_set_codec_data(codec); +#endif + +#ifdef ALSA_VER_ANDROID_3_0 + if ((err = snd_soc_register_codec(&client->dev, &soc_codec_dev_mc1n2, + mc1n2_dai, ARRAY_SIZE(mc1n2_dai))) < 0) { + goto err_reg_codec; + } + + mc1n2_i2c = client; +#else + if ((err = snd_soc_register_codec(codec)) < 0) { + goto err_reg_codec; + } + + /* setup DAI data */ + for (i = 0; i < ARRAY_SIZE(mc1n2_dai); i++) { + mc1n2_dai[i].dev = &client->dev; + } + if ((err = snd_soc_register_dais(mc1n2_dai, ARRAY_SIZE(mc1n2_dai))) < 0) { + goto err_reg_dai; + } +#endif + + return 0; + +#ifndef ALSA_VER_ANDROID_3_0 +err_reg_dai: + snd_soc_unregister_codec(codec); +#endif +err_reg_codec: +#ifndef ALSA_VER_ANDROID_3_0 + kfree(codec->reg_cache); +err_alloc_cache: +#endif + i2c_set_clientdata(client, NULL); +err_i2c: + kfree(mc1n2); +err_alloc_data: + kfree(codec); +err_alloc_codec: + dev_err(&client->dev, "err=%d: failed to probe MC-1N2\n", err); + return err; +} + +static int mc1n2_i2c_remove(struct i2c_client *client) +{ +#ifndef ALSA_VER_ANDROID_3_0 + struct snd_soc_codec *codec = i2c_get_clientdata(client); +#endif + struct mc1n2_data *mc1n2; + + TRACE_FUNC(); + +#ifdef ALSA_VER_ANDROID_3_0 + mc1n2 = (struct mc1n2_data*)(i2c_get_clientdata(client)); + mutex_destroy(&mc1n2->mutex); + snd_soc_unregister_codec(&client->dev); +#else + if (codec) { +#ifdef ALSA_VER_ANDROID_2_6_35 + mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + mc1n2 = codec->private_data; +#endif + snd_soc_unregister_dais(mc1n2_dai, ARRAY_SIZE(mc1n2_dai)); + snd_soc_unregister_codec(codec); + + mutex_destroy(&mc1n2->mutex); + kfree(mc1n2); + + mutex_destroy(&codec->mutex); + kfree(codec); + } +#endif + + return 0; +} + +#ifdef CONFIG_TARGET_LOCALE_KOR +/* + * Function to prevent tick-noise when reboot menu selected. + * if you have Power-Off sound and same problem, use this function + */ +static void mc1n2_i2c_shutdown(struct i2c_client *client) +{ +#ifndef ALSA_VER_ANDROID_3_0 + struct snd_soc_codec *codec = i2c_get_clientdata(client); +#endif + struct mc1n2_data *mc1n2; + int err, i; + + pr_info("%s\n", __func__); + + TRACE_FUNC(); + +#ifdef ALSA_VER_ANDROID_3_0 + mc1n2 = (struct mc1n2_data *)(i2c_get_clientdata(client)); +#else +#ifdef ALSA_VER_ANDROID_2_6_35 + mc1n2 = snd_soc_codec_get_drvdata(codec); +#else + mc1n2 = codec->private_data; +#endif +#endif + + mutex_lock(&mc1n2->mutex); + + /* store parameters */ + for (i = 0; i < MC1N2_N_INFO_STORE; i++) { + struct mc1n2_info_store *store = &mc1n2_info_store_tbl[i]; + if (store->get) { + err = _McDrv_Ctrl(store->get, + (void *)mc1n2 + store->offset, 0); + if (err != MCDRV_SUCCESS) { + pr_err("%d: Error in mc1n2_suspend\n", err); + err = -EIO; + goto error; + } else { + err = 0; + } + } + } + + /* Do not enter suspend mode for voice call */ + if (mc1n2_current_mode != MC1N2_MODE_IDLE) { + err = 0; + goto error; + } + + err = _McDrv_Ctrl(MCDRV_TERM, NULL, 0); + if (err != MCDRV_SUCCESS) { + pr_err("%d: Error in MCDRV_TERM\n", err); + err = -EIO; + } else { + err = 0; + } + + /* Suepend MCLK */ + mc1n2_set_mclk_source(0); + + pr_info("%s done\n", __func__); + +error: + mutex_unlock(&mc1n2->mutex); + + if (err != 0) + pr_err("%s: err = %d\n", __func__, err); + + return; +} +#endif + +static const struct i2c_device_id mc1n2_i2c_id[] = { + {MC1N2_NAME, 0}, + {}, +}; +MODULE_DEVICE_TABLE(i2c, mc1n2_i2c_id); + +static struct i2c_driver mc1n2_i2c_driver = { + .driver = { + .name = MC1N2_NAME, + .owner = THIS_MODULE, + }, + .probe = mc1n2_i2c_probe, + .remove = mc1n2_i2c_remove, +#ifdef CONFIG_TARGET_LOCALE_KOR + .shutdown = mc1n2_i2c_shutdown, +#endif + .id_table = mc1n2_i2c_id, +}; + +/* + * Module init and exit + */ +static int __init mc1n2_init(void) +{ + return i2c_add_driver(&mc1n2_i2c_driver); +} +module_init(mc1n2_init); + +static void __exit mc1n2_exit(void) +{ + i2c_del_driver(&mc1n2_i2c_driver); +} +module_exit(mc1n2_exit); + +MODULE_AUTHOR("Yamaha Corporation"); +MODULE_DESCRIPTION("Yamaha MC-1N2 ALSA SoC codec driver"); +MODULE_LICENSE("GPL"); +MODULE_VERSION(MC1N2_DRIVER_VERSION); diff --git a/sound/soc/codecs/mc1n2/mc1n2.h b/sound/soc/codecs/mc1n2/mc1n2.h new file mode 100644 index 0000000..4587273 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mc1n2.h @@ -0,0 +1,124 @@ +/* + * MC-1N2 ASoC codec driver + * + * Copyright (c) 2010-2011 Yamaha Corporation + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef MC1N2_H +#define MC1N2_H + +#include "mcdriver.h" +#include <linux/mfd/mc1n2_pdata.h> + +/* + * dai: set_sysclk + */ +/* clk_id */ +#define MC1N2_CLKI 0 + +/* default freq for MC1N2_CLKI */ +#define MC1N2_DEFAULT_CLKI 19200000 + +/* + * dai: set_clkdiv + */ +/* div_id */ +#define MC1N2_CKSEL 0 +#define MC1N2_DIVR0 1 +#define MC1N2_DIVF0 2 +#define MC1N2_DIVR1 3 +#define MC1N2_DIVF1 4 +#define MC1N2_BCLK_MULT 5 + +/* div for MC1N2_BCLK_MULT */ +#define MC1N2_LRCK_X8 0 +#define MC1N2_LRCK_X16 1 +#define MC1N2_LRCK_X24 2 +#define MC1N2_LRCK_X32 3 +#define MC1N2_LRCK_X48 4 +#define MC1N2_LRCK_X64 5 +#define MC1N2_LRCK_X128 6 +#define MC1N2_LRCK_X256 7 +#define MC1N2_LRCK_X512 8 + +/* + * hwdep: ioctl + */ +#define MC1N2_MAGIC 'N' +#define MC1N2_IOCTL_NR_GET 1 +#define MC1N2_IOCTL_NR_SET 2 +#define MC1N2_IOCTL_NR_BOTH 3 +#define MC1N2_IOCTL_NR_NOTIFY 4 + +#define MC1N2_IOCTL_GET_CTRL \ + _IOR(MC1N2_MAGIC, MC1N2_IOCTL_NR_GET, struct mc1n2_ctrl_args) +#define MC1N2_IOCTL_SET_CTRL \ + _IOW(MC1N2_MAGIC, MC1N2_IOCTL_NR_SET, struct mc1n2_ctrl_args) + +#define MC1N2_IOCTL_READ_REG \ + _IOWR(MC1N2_MAGIC, MC1N2_IOCTL_NR_BOTH, struct mc1n2_ctrl_args) + +#define MC1N2_IOCTL_NOTIFY \ + _IOW(MC1N2_MAGIC, MC1N2_IOCTL_NR_NOTIFY, struct mc1n2_ctrl_args) + +struct mc1n2_ctrl_args { + unsigned long dCmd; + void *pvPrm; + unsigned long dPrm; +}; + +/* + * MC1N2_IOCTL_NOTIFY dCmd definitions + */ +#define MCDRV_NOTIFY_CALL_START 0x00000000 +#define MCDRV_NOTIFY_CALL_STOP 0x00000001 +#define MCDRV_NOTIFY_MEDIA_PLAY_START 0x00000002 +#define MCDRV_NOTIFY_MEDIA_PLAY_STOP 0x00000003 +#define MCDRV_NOTIFY_FM_PLAY_START 0x00000004 +#define MCDRV_NOTIFY_FM_PLAY_STOP 0x00000005 +#define MCDRV_NOTIFY_BT_SCO_ENABLE 0x00000006 +#define MCDRV_NOTIFY_BT_SCO_DISABLE 0x00000007 +#define MCDRV_NOTIFY_VOICE_REC_START 0x00000008 +#define MCDRV_NOTIFY_VOICE_REC_STOP 0x00000009 +#define MCDRV_NOTIFY_HDMI_START 0x0000000A +#define MCDRV_NOTIFY_HDMI_STOP 0x0000000B +#define MCDRV_NOTIFY_RECOVER 0x0000000C +#define MCDRV_NOTIFY_2MIC_CALL_START 0x0000000D + +#define MC1N2_MODE_IDLE (0x00) +#define MC1N2_MODE_CALL_ON (0x1<<0) +#define MC1N2_MODE_FM_ON (0x1<<1) + +/* + * Setup parameters + */ +struct mc1n2_setup { + MCDRV_INIT_INFO init; + unsigned char pcm_extend[IOPORT_NUM]; + unsigned char pcm_hiz_redge[IOPORT_NUM]; + unsigned char pcm_hperiod[IOPORT_NUM]; + unsigned char slot[IOPORT_NUM][SNDRV_PCM_STREAM_LAST+1][DIO_CHANNELS]; +}; + +/* + * Codec Status definitions (for backward compatibility) + */ +#define CMD_CODEC_EMERGENCY_RECOVERY 9 // Emergency recovery for Error like -EIO, -ESTRPIPE, and etc. + +#endif diff --git a/sound/soc/codecs/mc1n2/mc1n2_cfg.h b/sound/soc/codecs/mc1n2/mc1n2_cfg.h new file mode 100644 index 0000000..dc7ce48 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mc1n2_cfg.h @@ -0,0 +1,1199 @@ +/* + * MC-1N2 ASoC codec driver + * + * Copyright (c) 2010-2011 Yamaha Corporation + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef MC1N2_CFG_H +#define MC1N2_CFG_H + +#include "mcdriver.h" + +/* + * ALSA Version + */ +/* #define ALSA_VER_1_0_19 */ +/* #define ALSA_VER_1_0_21 */ +/* #define ALSA_VER_1_0_23 */ +/* #define ALSA_VER_ANDROID_2_6_35 */ +#define ALSA_VER_ANDROID_3_0 + +#define DIO0_DAI_ENABLE +/* #define DIO1_DAI_ENABLE */ +/* #define DIO2_DAI_ENABLE */ + +#ifdef ALSA_VER_ANDROID_3_0 +static struct mc1n2_setup mc1n2_cfg_setup = { + { /* MCDRV_INIT_INFO */ + MCDRV_CKSEL_CMOS, /* bCkSel */ + 41, /* bDivR0 */ + 126, /* bDivF0 */ + 41, /* bDivR1 */ + 126, /* bDivF1 */ + 0, /* bRange0*/ + 0, /* bRange1*/ + 0, /* bBypass*/ + MCDRV_DAHIZ_LOW, /* bDioSdo0Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo1Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo2Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk0Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk1Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk2Hiz */ + MCDRV_PCMHIZ_HIZ, /* bPcmHiz */ + MCDRV_LINE_STEREO,/* bLineIn1Dif */ + 0, /* bLineIn2Dif */ + MCDRV_LINE_STEREO,/* bLineOut1Dif */ + MCDRV_LINE_STEREO,/* bLineOUt2Dif */ + MCDRV_SPMN_ON, /* bSpmn */ + MCDRV_MIC_DIF, /* bMic1Sng */ + MCDRV_MIC_DIF, /* bMic2Sng */ + MCDRV_MIC_DIF, /* bMic3Sng */ + MCDRV_POWMODE_NORMAL, /* bPowerMode */ + MCDRV_SPHIZ_PULLDOWN, /* bSpHiz */ + MCDRV_LDO_ON, /* bLdo */ + MCDRV_PAD_GPIO, /* bPad0Func */ + MCDRV_PAD_GPIO, /* bPad1Func */ + MCDRV_PAD_GPIO, /* bPad2Func */ + MCDRV_OUTLEV_4, /* bAvddLev */ + 0, /* bVrefLev */ + MCDRV_DCLGAIN_12, /* bDclGain */ + MCDRV_DCLLIMIT_0, /* bDclLimit */ + 1, /* set Hi-power mode 0: HP mode 1: normal */ + 0, /* bReserved1 */ + 0, /* bReserved2 */ + 0, /* bReserved3 */ + 0, /* bReserved4 */ + 0, /* bReserved5 */ + { /* sWaitTime */ + 130000, /* dAdHpf */ + 25000, /* dMic1Cin */ + 25000, /* dMic2Cin */ + 25000, /* dMic3Cin */ + 25000, /* dLine1Cin */ + 25000, /* dLine2Cin */ + 5000, /* dVrefRdy1 */ + 15000, /* dVrefRdy2 */ + 9000, /* dHpRdy */ + 13000, /* dSpRdy */ + 0, /* dPdm */ + 1000, /* dAnaRdyInterval */ + 1000, /* dSvolInterval */ + 1000, /* dAnaRdyTimeOut */ + 1000 /* dSvolTimeOut */ + } + }, /* MCDRV_INIT_INFO end */ + { /* pcm_extend */ + 0, 0, 0 + }, /* pcm_extend end */ + { /* pcm_hiz_redge */ + MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING + }, /* pcm_hiz_redge end */ + { /* pcm_hperiod */ + 1, 1, 1 + }, /* pcm_hperiod end */ + { /* slot */ + { {0, 1}, {0, 1} }, + { {0, 1}, {0, 1} }, + { {0, 1}, {0, 1} } + } /* slot end */ +}; +#endif + +static const MCDRV_DIO_INFO stDioInfo_Default = { + { + /* DIO port 0 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_44100, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_DA, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 1} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + }, + /* DIO port 1 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_SLAVE, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_8000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_DA, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_INVERT, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {1, 1} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {1, 0} + } + }, + /* DIO port 2 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_8000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_PCM, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 0} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + } + } +}; + +/* ======================================== + DAC settings + ========================================*/ +static const MCDRV_DAC_INFO stDacInfo_Default = { + /* bMasterSwap : DAC Master Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bVoiceSwap : DAC Voice Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono (-6dB) */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bDcCut : HP, SP Protection DC-ct Filter Setting */ + /* MCDRV_DCCUT_ON (0) : DC-cut Filter ON */ + /* MCDRV_DCCUT_OFF(1) : DC-cut Filter OFF */ + MCDRV_DCCUT_ON +}; + +/* ======================================== + ADC settings + ========================================*/ + +static const MCDRV_ADC_INFO stAdcInfo_Default = { + /* bAgcAdjust : AGC Gain Control Range */ + /* MCDRV_AGCADJ_24(0) : -3dB to +24dB */ + /* MCDRV_AGCADJ_18(1) : -3dB to +18dB */ + /* MCDRV_AGCADJ_12(2) : -3dB to +12dB */ + /* MCDRV_AGCADJ_0 (3) : -3dB to +0dB */ + MCDRV_AGCADJ_0, + /* bAgcOn : AGC ON/OFF Setting */ + /* MCDRV_AGC_OFF(0) : OFF */ + /* MCDRV_AGC_ON (1) : ON */ + MCDRV_AGC_OFF, + /* bMonot : Mono / Stereo Setting */ + /* MCDRV_ADC_STEREO(0) : Stereo */ + /* MCDRV_ADC_MONO (1) : Mono */ + MCDRV_ADC_STEREO +}; + +/* ======================================== + SP settings + ========================================*/ +static const MCDRV_SP_INFO stSpInfo_Default = { + /* bSwap : Swap setting */ + /* MCDRV_SPSWAP_OFF (0) : No SWAP */ + /* MCDRV_SPSWAP_SWAP(1) : SWAP */ + MCDRV_SPSWAP_OFF +}; + +/* ======================================== + DNG settings + ========================================*/ +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff[] : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + {MCDRV_DNG_OFF, MCDRV_DNG_OFF, MCDRV_DNG_OFF}, + + /* bThreshold[] : Threshold Setting */ + /* MCDRV_DNG_THRES_30 (0) */ + /* MCDRV_DNG_THRES_36 (1) */ + /* MCDRV_DNG_THRES_42 (2) */ + /* MCDRV_DNG_THRES_48 (3) */ + /* MCDRV_DNG_THRES_54 (4) */ + /* MCDRV_DNG_THRES_60 (5) */ + /* MCDRV_DNG_THRES_66 (6) */ + /* MCDRV_DNG_THRES_72 (7) */ + /* MCDRV_DNG_THRES_78 (8) */ + /* MCDRV_DNG_THRES_84 (9) */ + {MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60}, + + /* bHold[] : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + {MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500}, + + /* bAttack[] : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_100 (1) : 100ms */ + /* MCDRV_DNG_ATTACK_400 (2) : 400ms */ + /* MCDRV_DNG_ATTACK_800 (3) : 800ms */ + {MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100}, + + /* bRelease[] : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + {MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940}, + + /* bTarget[] : Target Volume Setting */ + /* MCDRV_DNG_TARGET_6 (0) : -6dB */ + /* MCDRV_DNG_TARGET_9 (1) : -9dB */ + /* MCDRV_DNG_TARGET_12 (2) : -12dB */ + /* MCDRV_DNG_TARGET_15 (3) : -15dB */ + /* MCDRV_DNG_TARGET_18 (4) : -18dB */ + /* MCDRV_DNG_TARGET_MUTE (5) : Mute */ + {MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE}, +}; +#if 0 +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + MCDRV_DNG_OFF, + + /* bThreshold : Threshold Setting */ + /* MCDRV_DNG_THRES_5BIT (0) */ + /* MCDRV_DNG_THRES_7BIT (1) */ + /* MCDRV_DNG_THRES_9BIT (2) */ + /* MCDRV_DNG_THRES_11BIT (3) */ + /* MCDRV_DNG_THRES_13BIT (4) */ + /* MCDRV_DNG_THRES_15BIT (5) */ + /* MCDRV_DNG_THRES_17BIT (6) */ + /* MCDRV_DNG_THRES_21BIT (7) */ + MCDRV_DNG_THRES_11BIT, + + /* bHold : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + MCDRV_DNG_HOLD_500, + + /* bAttack : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_800 (1) : 800ms */ + /* MCDRV_DNG_ATTACK_1100 (2) : 1100ms */ + MCDRV_DNG_ATTACK_1100, + + /* bRelease : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + MCDRV_DNG_RELEASE_940, + +}; +#endif + +/* ======================================== + AudioEngine settings + ========================================*/ +static MCDRV_AE_INFO sAeInfo_1 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_2 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_3 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_4 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_5 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +/* ======================================== + System EQ settings + ========================================*/ +static MCDRV_SYSEQ_INFO stSyseqInfo_Default = { + /* On/Off */ + 0x00, + /* EQ */ + { + 0x10,0xc4,0x50,0x12,0xc4,0x40,0x02,0xa9, + 0x60,0xed,0x3b,0xc0,0xfc,0x92,0x40, + }, +}; + +#endif diff --git a/sound/soc/codecs/mc1n2/mc1n2_cfg_gsm.h b/sound/soc/codecs/mc1n2/mc1n2_cfg_gsm.h new file mode 100755 index 0000000..7ec50a7 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mc1n2_cfg_gsm.h @@ -0,0 +1,1159 @@ +/* + * MC-1N2 ASoC codec driver + * + * Copyright (c) 2010 Yamaha Corporation + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef MC1N2_CFG_H +#define MC1N2_CFG_H + +#include "mcdriver.h" + +/* + * ALSA Version + */ +/* #define ALSA_VER_1_0_19 */ +/* #define ALSA_VER_1_0_21 */ +/* #define ALSA_VER_1_0_23 */ +#define ALSA_VER_ANDROID_3_0 + +#define DIO0_DAI_ENABLE +/* #define DIO1_DAI_ENABLE */ +/* #define DIO2_DAI_ENABLE */ + +#ifdef ALSA_VER_ANDROID_3_0 +static struct mc1n2_setup mc1n2_cfg_setup = { + { /* MCDRV_INIT_INFO */ + MCDRV_CKSEL_CMOS, /* bCkSel */ + 28, /* bDivR0 20MHz *//* 28 for 24, 19 for 20 */ + 86, /* bDivF0 20MHz *//* 86 for 24, 70 for 20 */ + 28, /* bDivR1 */ + 86, /* bDivF1 */ + 0, /* bRange0 */ + 0, /* bRange1 */ + 0, /* bBypass */ + MCDRV_DAHIZ_LOW, /* bDioSdo0Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo1Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo2Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk0Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk1Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk2Hiz */ + MCDRV_PCMHIZ_HIZ, /* bPcmHiz */ + MCDRV_LINE_STEREO, /* bLineIn1Dif */ + 0, /* bLineIn2Dif */ + MCDRV_LINE_STEREO, /* bLineOut1Dif */ + MCDRV_LINE_STEREO, /* bLineOUt2Dif */ + MCDRV_SPMN_ON, /* bSpmn */ + MCDRV_MIC_DIF, /* bMic1Sng */ + MCDRV_MIC_DIF, /* bMic2Sng */ + MCDRV_MIC_DIF, /* bMic3Sng */ + MCDRV_POWMODE_NORMAL, /* bPowerMode */ + MCDRV_SPHIZ_PULLDOWN, /* bSpHiz */ + MCDRV_LDO_ON, /* bLdo */ + MCDRV_PAD_GPIO, /* bPad0Func */ + MCDRV_PAD_GPIO, /* bPad1Func */ + MCDRV_PAD_GPIO, /* bPad2Func */ + MCDRV_OUTLEV_4, /* bAvddLev */ + 0, /* bVrefLev */ + MCDRV_DCLGAIN_12, /* bDclGain */ + MCDRV_DCLLIMIT_0, /* bDclLimit */ + 1, /* set Hi-power mode 0: HP mode 1: normal */ + 0, /* bReserved1 */ + 0, /* bReserved2 */ + 0, /* bReserved3 */ + 0, /* bReserved4 */ + 0, /* bReserved5 */ + { /* sWaitTime */ + 130000, /* dAdHpf */ + 25000, /* dMic1Cin */ + 25000, /* dMic2Cin */ + 25000, /* dMic3Cin */ + 25000, /* dLine1Cin */ + 25000, /* dLine2Cin */ + 5000, /* dVrefRdy1 */ + 15000, /* dVrefRdy2 */ + 9000, /* dHpRdy */ + 13000, /* dSpRdy */ + 0, /* dPdm */ + 1000, /* dAnaRdyInterval */ + 1000, /* dSvolInterval */ + 1000, /* dAnaRdyTimeOut */ + 1000 /* dSvolTimeOut */ + } + }, /* MCDRV_INIT_INFO end */ + { /* pcm_extend */ + 0, 0, 0}, /* pcm_extend end */ + { /* pcm_hiz_redge */ + MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING}, /* pcm_hiz_redge end */ + { /* pcm_hperiod */ + 1, 1, 1}, /* pcm_hperiod end */ + { /* slot */ + {{0, 1}, {0, 1} }, + {{0, 1}, {0, 1} }, + {{0, 1}, {0, 1} } + }, +}; +#endif + +static const MCDRV_DIO_INFO stDioInfo_Default = { + { + /* DIO port 0 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON, + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_44100, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_DA, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S}, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO, + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8}, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 1} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S}, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO, + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8}, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + }, + /* DIO port 1 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON, + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_16000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_DA, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S}, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO, + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16}, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 0} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S}, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO, + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16}, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {1, 0} + } + }, + /* DIO port 2 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON, + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_8000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_PCM, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN}, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO, + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16}, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 0} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN}, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO, + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16}, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + } + } +}; + +/* ======================================== + DAC settings + ========================================*/ +static const MCDRV_DAC_INFO stDacInfo_Default = { + /* bMasterSwap : DAC Master Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bVoiceSwap : DAC Voice Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono (-6dB) */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bDcCut : HP, SP Protection DC-ct Filter Setting */ + /* MCDRV_DCCUT_ON (0) : DC-cut Filter ON */ + /* MCDRV_DCCUT_OFF(1) : DC-cut Filter OFF */ + MCDRV_DCCUT_ON +}; + +/* ======================================== + ADC settings + ========================================*/ + +static const MCDRV_ADC_INFO stAdcInfo_Default = { + /* bAgcAdjust : AGC Gain Control Range */ + /* MCDRV_AGCADJ_24(0) : -3dB to +24dB */ + /* MCDRV_AGCADJ_18(1) : -3dB to +18dB */ + /* MCDRV_AGCADJ_12(2) : -3dB to +12dB */ + /* MCDRV_AGCADJ_0 (3) : -3dB to +0dB */ + MCDRV_AGCADJ_0, + /* bAgcOn : AGC ON/OFF Setting */ + /* MCDRV_AGC_OFF(0) : OFF */ + /* MCDRV_AGC_ON (1) : ON */ + MCDRV_AGC_OFF, + /* bMonot : Mono / Stereo Setting */ + /* MCDRV_ADC_STEREO(0) : Stereo */ + /* MCDRV_ADC_MONO (1) : Mono */ + MCDRV_ADC_STEREO +}; + +/* ======================================== + SP settings + ========================================*/ +static const MCDRV_SP_INFO stSpInfo_Default = { + /* bSwap : Swap setting */ + /* MCDRV_SPSWAP_OFF (0) : No SWAP */ + /* MCDRV_SPSWAP_SWAP(1) : SWAP */ + MCDRV_SPSWAP_OFF +}; + +/* ======================================== + DNG settings + ========================================*/ +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff[] : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + {MCDRV_DNG_OFF, MCDRV_DNG_OFF, MCDRV_DNG_OFF}, + + /* bThreshold[] : Threshold Setting */ + /* MCDRV_DNG_THRES_30 (0) */ + /* MCDRV_DNG_THRES_36 (1) */ + /* MCDRV_DNG_THRES_42 (2) */ + /* MCDRV_DNG_THRES_48 (3) */ + /* MCDRV_DNG_THRES_54 (4) */ + /* MCDRV_DNG_THRES_60 (5) */ + /* MCDRV_DNG_THRES_66 (6) */ + /* MCDRV_DNG_THRES_72 (7) */ + /* MCDRV_DNG_THRES_78 (8) */ + /* MCDRV_DNG_THRES_84 (9) */ + {MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60}, + + /* bHold[] : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + {MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500}, + + /* bAttack[] : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_100 (1) : 100ms */ + /* MCDRV_DNG_ATTACK_400 (2) : 400ms */ + /* MCDRV_DNG_ATTACK_800 (3) : 800ms */ + {MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100}, + + /* bRelease[] : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + {MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940}, + + /* bTarget[] : Target Volume Setting */ + /* MCDRV_DNG_TARGET_6 (0) : -6dB */ + /* MCDRV_DNG_TARGET_9 (1) : -9dB */ + /* MCDRV_DNG_TARGET_12 (2) : -12dB */ + /* MCDRV_DNG_TARGET_15 (3) : -15dB */ + /* MCDRV_DNG_TARGET_18 (4) : -18dB */ + /* MCDRV_DNG_TARGET_MUTE (5) : Mute */ + {MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE}, +}; + +#if 0 +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + MCDRV_DNG_OFF, + + /* bThreshold : Threshold Setting */ + /* MCDRV_DNG_THRES_5BIT (0) */ + /* MCDRV_DNG_THRES_7BIT (1) */ + /* MCDRV_DNG_THRES_9BIT (2) */ + /* MCDRV_DNG_THRES_11BIT (3) */ + /* MCDRV_DNG_THRES_13BIT (4) */ + /* MCDRV_DNG_THRES_15BIT (5) */ + /* MCDRV_DNG_THRES_17BIT (6) */ + /* MCDRV_DNG_THRES_21BIT (7) */ + MCDRV_DNG_THRES_11BIT, + + /* bHold : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + MCDRV_DNG_HOLD_500, + + /* bAttack : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_800 (1) : 800ms */ + /* MCDRV_DNG_ATTACK_1100 (2) : 1100ms */ + MCDRV_DNG_ATTACK_1100, + + /* bRelease : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + MCDRV_DNG_RELEASE_940, + +}; +#endif + +/* ======================================== + AudioEngine settings + ========================================*/ +static MCDRV_AE_INFO sAeInfo_1 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* WIDE */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00}, + /* DRC */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* EQ5 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00}, + /* EQ3 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00} +}; + +static MCDRV_AE_INFO sAeInfo_2 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* WIDE */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00}, + /* DRC */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* EQ5 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00}, + /* EQ3 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00} +}; + +static MCDRV_AE_INFO sAeInfo_3 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* WIDE */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00}, + /* DRC */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* EQ5 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00}, + /* EQ3 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00} +}; + +static MCDRV_AE_INFO sAeInfo_4 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* WIDE */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00}, + /* DRC */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* EQ5 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00}, + /* EQ3 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00} +}; + +static MCDRV_AE_INFO sAeInfo_5 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* WIDE */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00}, + /* DRC */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + /* EQ5 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00}, + /* EQ3 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00} +}; + +/* ======================================== + System EQ settings + ========================================*/ +static MCDRV_SYSEQ_INFO stSyseqInfo_Default = { + /* On/Off */ + 0x00, + /* EQ */ + { + 0x10, 0xc4, 0x50, 0x12, 0xc4, 0x40, 0x02, 0xa9, + 0x60, 0xed, 0x3b, 0xc0, 0xfc, 0x92, 0x40, + }, +}; + +#endif diff --git a/sound/soc/codecs/mc1n2/mc1n2_cfg_lgt.h b/sound/soc/codecs/mc1n2/mc1n2_cfg_lgt.h new file mode 100644 index 0000000..b806d94 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mc1n2_cfg_lgt.h @@ -0,0 +1,1199 @@ +/* + * MC-1N2 ASoC codec driver + * + * Copyright (c) 2010-2011 Yamaha Corporation + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef MC1N2_CFG_H +#define MC1N2_CFG_H + +#include "mcdriver.h" + +/* + * ALSA Version + */ +/* #define ALSA_VER_1_0_19 */ +/* #define ALSA_VER_1_0_21 */ +/* #define ALSA_VER_1_0_23 */ +/* #define ALSA_VER_ANDROID_2_6_35 */ +#define ALSA_VER_ANDROID_3_0 + +#define DIO0_DAI_ENABLE +/* #define DIO1_DAI_ENABLE */ +/* #define DIO2_DAI_ENABLE */ + +#ifdef ALSA_VER_ANDROID_3_0 +static struct mc1n2_setup mc1n2_cfg_setup = { + { /* MCDRV_INIT_INFO */ + MCDRV_CKSEL_CMOS, /* bCkSel */ + 28, /* bDivR0 20MHz*/ /* 28 for 24, 19 for 20 */ + 86, /* bDivF0 20MHz*/ /* 86 for 24, 70 for 20 */ + 28, /* bDivR1*/ + 86, /* bDivF1*/ + 0, /* bRange0*/ + 0, /* bRange1*/ + 0, /* bBypass*/ + MCDRV_DAHIZ_LOW, /* bDioSdo0Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo1Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo2Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk0Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk1Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk2Hiz */ + MCDRV_PCMHIZ_HIZ, /* bPcmHiz */ + MCDRV_LINE_STEREO,/* bLineIn1Dif */ + 0, /* bLineIn2Dif */ + MCDRV_LINE_STEREO,/* bLineOut1Dif */ + MCDRV_LINE_STEREO,/* bLineOUt2Dif */ + MCDRV_SPMN_ON, /* bSpmn */ + MCDRV_MIC_DIF, /* bMic1Sng */ + MCDRV_MIC_DIF, /* bMic2Sng */ + MCDRV_MIC_DIF, /* bMic3Sng */ + MCDRV_POWMODE_NORMAL, /* bPowerMode */ + MCDRV_SPHIZ_PULLDOWN, /* bSpHiz */ + MCDRV_LDO_ON, /* bLdo */ + MCDRV_PAD_GPIO, /* bPad0Func */ + MCDRV_PAD_GPIO, /* bPad1Func */ + MCDRV_PAD_GPIO, /* bPad2Func */ + MCDRV_OUTLEV_4, /* bAvddLev */ + 0, /* bVrefLev */ + MCDRV_DCLGAIN_12, /* bDclGain */ + MCDRV_DCLLIMIT_0, /* bDclLimit */ + 1, /* set Hi-power mode 0: HP mode 1: normal */ + 0, /* bReserved1 */ + 0, /* bReserved2 */ + 0, /* bReserved3 */ + 0, /* bReserved4 */ + 0, /* bReserved5 */ + { /* sWaitTime */ + 130000, /* dAdHpf */ + 25000, /* dMic1Cin */ + 25000, /* dMic2Cin */ + 25000, /* dMic3Cin */ + 25000, /* dLine1Cin */ + 25000, /* dLine2Cin */ + 5000, /* dVrefRdy1 */ + 15000, /* dVrefRdy2 */ + 9000, /* dHpRdy */ + 13000, /* dSpRdy */ + 0, /* dPdm */ + 1000, /* dAnaRdyInterval */ + 1000, /* dSvolInterval */ + 1000, /* dAnaRdyTimeOut */ + 1000 /* dSvolTimeOut */ + } + }, /* MCDRV_INIT_INFO end */ + { /* pcm_extend */ + 0, 0, 0 + }, /* pcm_extend end */ + { /* pcm_hiz_redge */ + MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING + }, /* pcm_hiz_redge end */ + { /* pcm_hperiod */ + 1, 1, 1 + }, /* pcm_hperiod end */ + { /* slot */ + { {0, 1}, {0, 1} }, + { {0, 1}, {0, 1} }, + { {0, 1}, {0, 1} } + }, +}; +#endif + +static const MCDRV_DIO_INFO stDioInfo_Default = { + { + /* DIO port 0 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_44100, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_DA, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 1} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + }, + /* DIO port 1 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_SLAVE, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_8000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_PCM, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 0} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + }, + /* DIO port 2 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_8000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_PCM, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 0} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + } + } +}; + +/* ======================================== + DAC settings + ========================================*/ +static const MCDRV_DAC_INFO stDacInfo_Default = { + /* bMasterSwap : DAC Master Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bVoiceSwap : DAC Voice Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono (-6dB) */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bDcCut : HP, SP Protection DC-ct Filter Setting */ + /* MCDRV_DCCUT_ON (0) : DC-cut Filter ON */ + /* MCDRV_DCCUT_OFF(1) : DC-cut Filter OFF */ + MCDRV_DCCUT_ON +}; + +/* ======================================== + ADC settings + ========================================*/ + +static const MCDRV_ADC_INFO stAdcInfo_Default = { + /* bAgcAdjust : AGC Gain Control Range */ + /* MCDRV_AGCADJ_24(0) : -3dB to +24dB */ + /* MCDRV_AGCADJ_18(1) : -3dB to +18dB */ + /* MCDRV_AGCADJ_12(2) : -3dB to +12dB */ + /* MCDRV_AGCADJ_0 (3) : -3dB to +0dB */ + MCDRV_AGCADJ_0, + /* bAgcOn : AGC ON/OFF Setting */ + /* MCDRV_AGC_OFF(0) : OFF */ + /* MCDRV_AGC_ON (1) : ON */ + MCDRV_AGC_OFF, + /* bMonot : Mono / Stereo Setting */ + /* MCDRV_ADC_STEREO(0) : Stereo */ + /* MCDRV_ADC_MONO (1) : Mono */ + MCDRV_ADC_STEREO +}; + +/* ======================================== + SP settings + ========================================*/ +static const MCDRV_SP_INFO stSpInfo_Default = { + /* bSwap : Swap setting */ + /* MCDRV_SPSWAP_OFF (0) : No SWAP */ + /* MCDRV_SPSWAP_SWAP(1) : SWAP */ + MCDRV_SPSWAP_OFF +}; + +/* ======================================== + DNG settings + ========================================*/ +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff[] : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + {MCDRV_DNG_OFF, MCDRV_DNG_OFF, MCDRV_DNG_OFF}, + + /* bThreshold[] : Threshold Setting */ + /* MCDRV_DNG_THRES_30 (0) */ + /* MCDRV_DNG_THRES_36 (1) */ + /* MCDRV_DNG_THRES_42 (2) */ + /* MCDRV_DNG_THRES_48 (3) */ + /* MCDRV_DNG_THRES_54 (4) */ + /* MCDRV_DNG_THRES_60 (5) */ + /* MCDRV_DNG_THRES_66 (6) */ + /* MCDRV_DNG_THRES_72 (7) */ + /* MCDRV_DNG_THRES_78 (8) */ + /* MCDRV_DNG_THRES_84 (9) */ + {MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60}, + + /* bHold[] : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + {MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500}, + + /* bAttack[] : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_100 (1) : 100ms */ + /* MCDRV_DNG_ATTACK_400 (2) : 400ms */ + /* MCDRV_DNG_ATTACK_800 (3) : 800ms */ + {MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100}, + + /* bRelease[] : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + {MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940}, + + /* bTarget[] : Target Volume Setting */ + /* MCDRV_DNG_TARGET_6 (0) : -6dB */ + /* MCDRV_DNG_TARGET_9 (1) : -9dB */ + /* MCDRV_DNG_TARGET_12 (2) : -12dB */ + /* MCDRV_DNG_TARGET_15 (3) : -15dB */ + /* MCDRV_DNG_TARGET_18 (4) : -18dB */ + /* MCDRV_DNG_TARGET_MUTE (5) : Mute */ + {MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE}, +}; +#if 0 +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + MCDRV_DNG_OFF, + + /* bThreshold : Threshold Setting */ + /* MCDRV_DNG_THRES_5BIT (0) */ + /* MCDRV_DNG_THRES_7BIT (1) */ + /* MCDRV_DNG_THRES_9BIT (2) */ + /* MCDRV_DNG_THRES_11BIT (3) */ + /* MCDRV_DNG_THRES_13BIT (4) */ + /* MCDRV_DNG_THRES_15BIT (5) */ + /* MCDRV_DNG_THRES_17BIT (6) */ + /* MCDRV_DNG_THRES_21BIT (7) */ + MCDRV_DNG_THRES_11BIT, + + /* bHold : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + MCDRV_DNG_HOLD_500, + + /* bAttack : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_800 (1) : 800ms */ + /* MCDRV_DNG_ATTACK_1100 (2) : 1100ms */ + MCDRV_DNG_ATTACK_1100, + + /* bRelease : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + MCDRV_DNG_RELEASE_940, + +}; +#endif + +/* ======================================== + AudioEngine settings + ========================================*/ +static MCDRV_AE_INFO sAeInfo_1 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_2 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_3 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_4 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_5 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +/* ======================================== + System EQ settings + ========================================*/ +static MCDRV_SYSEQ_INFO stSyseqInfo_Default = { + /* On/Off */ + 0x00, + /* EQ */ + { + 0x10,0xc4,0x50,0x12,0xc4,0x40,0x02,0xa9, + 0x60,0xed,0x3b,0xc0,0xfc,0x92,0x40, + }, +}; + +#endif diff --git a/sound/soc/codecs/mc1n2/mc1n2_cfg_px.h b/sound/soc/codecs/mc1n2/mc1n2_cfg_px.h new file mode 100644 index 0000000..2d159af --- /dev/null +++ b/sound/soc/codecs/mc1n2/mc1n2_cfg_px.h @@ -0,0 +1,1199 @@ +/* + * MC-1N2 ASoC codec driver + * + * Copyright (c) 2010-2011 Yamaha Corporation + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef MC1N2_CFG_H +#define MC1N2_CFG_H + +#include "mcdriver.h" + +/* + * ALSA Version + */ +/* #define ALSA_VER_1_0_19 */ +/* #define ALSA_VER_1_0_21 */ +/* #define ALSA_VER_1_0_23 */ +/* #define ALSA_VER_ANDROID_2_6_35 */ +#define ALSA_VER_ANDROID_3_0 + +#define DIO0_DAI_ENABLE +/* #define DIO1_DAI_ENABLE */ +/* #define DIO2_DAI_ENABLE */ + +#ifdef ALSA_VER_ANDROID_3_0 +static struct mc1n2_setup mc1n2_cfg_setup = { + { /* MCDRV_INIT_INFO */ + MCDRV_CKSEL_CMOS, /* bCkSel */ + 41, /* bDivR0 */ + 126, /* bDivF0 */ + 41, /* bDivR1 */ + 126, /* bDivF1 */ + 0, /* bRange0*/ + 0, /* bRange1*/ + 0, /* bBypass*/ + MCDRV_DAHIZ_LOW, /* bDioSdo0Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo1Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo2Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk0Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk1Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk2Hiz */ + MCDRV_PCMHIZ_HIZ, /* bPcmHiz */ + MCDRV_LINE_STEREO,/* bLineIn1Dif */ + 0, /* bLineIn2Dif */ + MCDRV_LINE_STEREO,/* bLineOut1Dif */ + MCDRV_LINE_STEREO,/* bLineOUt2Dif */ + MCDRV_SPMN_ON, /* bSpmn */ + MCDRV_MIC_DIF, /* bMic1Sng */ + MCDRV_MIC_DIF, /* bMic2Sng */ + MCDRV_MIC_DIF, /* bMic3Sng */ + MCDRV_POWMODE_NORMAL, /* bPowerMode */ + MCDRV_SPHIZ_PULLDOWN, /* bSpHiz */ + MCDRV_LDO_ON, /* bLdo */ + MCDRV_PAD_GPIO, /* bPad0Func */ + MCDRV_PAD_GPIO, /* bPad1Func */ + MCDRV_PAD_GPIO, /* bPad2Func */ + MCDRV_OUTLEV_4, /* bAvddLev */ + 0, /* bVrefLev */ + MCDRV_DCLGAIN_12, /* bDclGain */ + MCDRV_DCLLIMIT_0, /* bDclLimit */ + 1, /* set Hi-power mode 0: HP mode 1: normal */ + 0, /* bReserved1 */ + 0, /* bReserved2 */ + 0, /* bReserved3 */ + 0, /* bReserved4 */ + 0, /* bReserved5 */ + { /* sWaitTime */ + 130000, /* dAdHpf */ + 25000, /* dMic1Cin */ + 25000, /* dMic2Cin */ + 25000, /* dMic3Cin */ + 25000, /* dLine1Cin */ + 25000, /* dLine2Cin */ + 5000, /* dVrefRdy1 */ + 15000, /* dVrefRdy2 */ + 9000, /* dHpRdy */ + 13000, /* dSpRdy */ + 0, /* dPdm */ + 1000, /* dAnaRdyInterval */ + 1000, /* dSvolInterval */ + 1000, /* dAnaRdyTimeOut */ + 1000 /* dSvolTimeOut */ + } + }, /* MCDRV_INIT_INFO end */ + { /* pcm_extend */ + 0, 0, 0 + }, /* pcm_extend end */ + { /* pcm_hiz_redge */ + MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING + }, /* pcm_hiz_redge end */ + { /* pcm_hperiod */ + 1, 1, 1 + }, /* pcm_hperiod end */ + { /* slot */ + { {0, 1}, {0, 1} }, + { {0, 1}, {0, 1} }, + { {0, 1}, {0, 1} } + } /* slot end */ +}; +#endif + +static const MCDRV_DIO_INFO stDioInfo_Default = { + { + /* DIO port 0 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_44100, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_DA, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 1} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + }, + /* DIO port 1 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_SLAVE, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_8000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_DA, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {1, 1} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {1, 0} + } + }, + /* DIO port 2 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_8000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_PCM, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 0} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + } + } +}; + +/* ======================================== + DAC settings + ========================================*/ +static const MCDRV_DAC_INFO stDacInfo_Default = { + /* bMasterSwap : DAC Master Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bVoiceSwap : DAC Voice Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono (-6dB) */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bDcCut : HP, SP Protection DC-ct Filter Setting */ + /* MCDRV_DCCUT_ON (0) : DC-cut Filter ON */ + /* MCDRV_DCCUT_OFF(1) : DC-cut Filter OFF */ + MCDRV_DCCUT_ON +}; + +/* ======================================== + ADC settings + ========================================*/ + +static const MCDRV_ADC_INFO stAdcInfo_Default = { + /* bAgcAdjust : AGC Gain Control Range */ + /* MCDRV_AGCADJ_24(0) : -3dB to +24dB */ + /* MCDRV_AGCADJ_18(1) : -3dB to +18dB */ + /* MCDRV_AGCADJ_12(2) : -3dB to +12dB */ + /* MCDRV_AGCADJ_0 (3) : -3dB to +0dB */ + MCDRV_AGCADJ_0, + /* bAgcOn : AGC ON/OFF Setting */ + /* MCDRV_AGC_OFF(0) : OFF */ + /* MCDRV_AGC_ON (1) : ON */ + MCDRV_AGC_OFF, + /* bMonot : Mono / Stereo Setting */ + /* MCDRV_ADC_STEREO(0) : Stereo */ + /* MCDRV_ADC_MONO (1) : Mono */ + MCDRV_ADC_STEREO +}; + +/* ======================================== + SP settings + ========================================*/ +static const MCDRV_SP_INFO stSpInfo_Default = { + /* bSwap : Swap setting */ + /* MCDRV_SPSWAP_OFF (0) : No SWAP */ + /* MCDRV_SPSWAP_SWAP(1) : SWAP */ + MCDRV_SPSWAP_OFF +}; + +/* ======================================== + DNG settings + ========================================*/ +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff[] : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + {MCDRV_DNG_OFF, MCDRV_DNG_OFF, MCDRV_DNG_OFF}, + + /* bThreshold[] : Threshold Setting */ + /* MCDRV_DNG_THRES_30 (0) */ + /* MCDRV_DNG_THRES_36 (1) */ + /* MCDRV_DNG_THRES_42 (2) */ + /* MCDRV_DNG_THRES_48 (3) */ + /* MCDRV_DNG_THRES_54 (4) */ + /* MCDRV_DNG_THRES_60 (5) */ + /* MCDRV_DNG_THRES_66 (6) */ + /* MCDRV_DNG_THRES_72 (7) */ + /* MCDRV_DNG_THRES_78 (8) */ + /* MCDRV_DNG_THRES_84 (9) */ + {MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60}, + + /* bHold[] : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + {MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500}, + + /* bAttack[] : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_100 (1) : 100ms */ + /* MCDRV_DNG_ATTACK_400 (2) : 400ms */ + /* MCDRV_DNG_ATTACK_800 (3) : 800ms */ + {MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100}, + + /* bRelease[] : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + {MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940}, + + /* bTarget[] : Target Volume Setting */ + /* MCDRV_DNG_TARGET_6 (0) : -6dB */ + /* MCDRV_DNG_TARGET_9 (1) : -9dB */ + /* MCDRV_DNG_TARGET_12 (2) : -12dB */ + /* MCDRV_DNG_TARGET_15 (3) : -15dB */ + /* MCDRV_DNG_TARGET_18 (4) : -18dB */ + /* MCDRV_DNG_TARGET_MUTE (5) : Mute */ + {MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE}, +}; +#if 0 +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + MCDRV_DNG_OFF, + + /* bThreshold : Threshold Setting */ + /* MCDRV_DNG_THRES_5BIT (0) */ + /* MCDRV_DNG_THRES_7BIT (1) */ + /* MCDRV_DNG_THRES_9BIT (2) */ + /* MCDRV_DNG_THRES_11BIT (3) */ + /* MCDRV_DNG_THRES_13BIT (4) */ + /* MCDRV_DNG_THRES_15BIT (5) */ + /* MCDRV_DNG_THRES_17BIT (6) */ + /* MCDRV_DNG_THRES_21BIT (7) */ + MCDRV_DNG_THRES_11BIT, + + /* bHold : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + MCDRV_DNG_HOLD_500, + + /* bAttack : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_800 (1) : 800ms */ + /* MCDRV_DNG_ATTACK_1100 (2) : 1100ms */ + MCDRV_DNG_ATTACK_1100, + + /* bRelease : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + MCDRV_DNG_RELEASE_940, + +}; +#endif + +/* ======================================== + AudioEngine settings + ========================================*/ +static MCDRV_AE_INFO sAeInfo_1 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_2 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_3 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_4 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_5 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +/* ======================================== + System EQ settings + ========================================*/ +static MCDRV_SYSEQ_INFO stSyseqInfo_Default = { + /* On/Off */ + 0x00, + /* EQ */ + { + 0x10,0xc4,0x50,0x12,0xc4,0x40,0x02,0xa9, + 0x60,0xed,0x3b,0xc0,0xfc,0x92,0x40, + }, +}; + +#endif diff --git a/sound/soc/codecs/mc1n2/mc1n2_cfg_q1.h b/sound/soc/codecs/mc1n2/mc1n2_cfg_q1.h new file mode 100644 index 0000000..c90e9b5 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mc1n2_cfg_q1.h @@ -0,0 +1,1199 @@ +/* + * MC-1N2 ASoC codec driver + * + * Copyright (c) 2010-2011 Yamaha Corporation + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef MC1N2_CFG_H +#define MC1N2_CFG_H + +#include "mcdriver.h" + +/* + * ALSA Version + */ +/* #define ALSA_VER_1_0_19 */ +/* #define ALSA_VER_1_0_21 */ +/* #define ALSA_VER_1_0_23 */ +/* #define ALSA_VER_ANDROID_2_6_35 */ +#define ALSA_VER_ANDROID_3_0 + +#define DIO0_DAI_ENABLE +/* #define DIO1_DAI_ENABLE */ +/* #define DIO2_DAI_ENABLE */ + +#ifdef ALSA_VER_ANDROID_3_0 +static struct mc1n2_setup mc1n2_cfg_setup = { + { /* MCDRV_INIT_INFO */ + MCDRV_CKSEL_CMOS, /* bCkSel */ + 41, /* bDivR0 */ + 126, /* bDivF0 */ + 41, /* bDivR1 */ + 126, /* bDivF1 */ + 0, /* bRange0*/ + 0, /* bRange1*/ + 0, /* bBypass*/ + MCDRV_DAHIZ_LOW, /* bDioSdo0Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo1Hiz */ + MCDRV_DAHIZ_LOW, /* bDioSdo2Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk0Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk1Hiz */ + MCDRV_DAHIZ_HIZ, /* bDioClk2Hiz */ + MCDRV_PCMHIZ_HIZ, /* bPcmHiz */ + MCDRV_LINE_STEREO,/* bLineIn1Dif */ + 0, /* bLineIn2Dif */ + MCDRV_LINE_STEREO,/* bLineOut1Dif */ + MCDRV_LINE_STEREO,/* bLineOUt2Dif */ + MCDRV_SPMN_ON, /* bSpmn */ + MCDRV_MIC_DIF, /* bMic1Sng */ + MCDRV_MIC_DIF, /* bMic2Sng */ + MCDRV_MIC_DIF, /* bMic3Sng */ + MCDRV_POWMODE_NORMAL, /* bPowerMode */ + MCDRV_SPHIZ_PULLDOWN, /* bSpHiz */ + MCDRV_LDO_ON, /* bLdo */ + MCDRV_PAD_GPIO, /* bPad0Func */ + MCDRV_PAD_GPIO, /* bPad1Func */ + MCDRV_PAD_GPIO, /* bPad2Func */ + MCDRV_OUTLEV_4, /* bAvddLev */ + 0, /* bVrefLev */ + MCDRV_DCLGAIN_12, /* bDclGain */ + MCDRV_DCLLIMIT_0, /* bDclLimit */ + 1, /* set Hi-power mode 0: HP mode 1: normal */ + 0, /* bReserved1 */ + 0, /* bReserved2 */ + 0, /* bReserved3 */ + 0, /* bReserved4 */ + 0, /* bReserved5 */ + { /* sWaitTime */ + 130000, /* dAdHpf */ + 25000, /* dMic1Cin */ + 25000, /* dMic2Cin */ + 25000, /* dMic3Cin */ + 25000, /* dLine1Cin */ + 25000, /* dLine2Cin */ + 5000, /* dVrefRdy1 */ + 15000, /* dVrefRdy2 */ + 9000, /* dHpRdy */ + 13000, /* dSpRdy */ + 0, /* dPdm */ + 1000, /* dAnaRdyInterval */ + 1000, /* dSvolInterval */ + 1000, /* dAnaRdyTimeOut */ + 1000 /* dSvolTimeOut */ + } + }, /* MCDRV_INIT_INFO end */ + { /* pcm_extend */ + 0, 0, 0 + }, /* pcm_extend end */ + { /* pcm_hiz_redge */ + MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING, MCDRV_PCMHIZTIM_FALLING + }, /* pcm_hiz_redge end */ + { /* pcm_hperiod */ + 1, 1, 1 + }, /* pcm_hperiod end */ + { /* slot */ + { {0, 1}, {0, 1} }, + { {0, 1}, {0, 1} }, + { {0, 1}, {0, 1} } + } /* slot end */ +}; +#endif + +static const MCDRV_DIO_INFO stDioInfo_Default = { + { + /* DIO port 0 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_44100, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_DA, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 1} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_8 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + }, + /* DIO port 1 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_SLAVE, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_8000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_DA, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 0} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_I2S + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + }, + /* DIO port 2 */ + { + /* sDioCommon */ + { + /* bMasterSlave : Master / Slave Setting */ + /* MCDRV_DIO_SLAVE (0) : Slave */ + /* MCDRV_DIO_MASTER(1) : Master */ + MCDRV_DIO_MASTER, + /* bAutoFs : Sampling frequency automatic measurement ON/OFF Setting in slave mode */ + /* MCDRV_AUTOFS_OFF(0) : OFF */ + /* MCDRV_AUTOFS_ON (1) : ON */ + MCDRV_AUTOFS_ON , + /* bFs : Sampling Rate Setting */ + /* MCDRV_FS_48000(0) : 48kHz */ + /* MCDRV_FS_44100(1) : 44.1kHz */ + /* MCDRV_FS_32000(2) : 32kHz */ + /* MCDRV_FS_24000(4) : 24kHz */ + /* MCDRV_FS_22050(5) : 22.05kHz */ + /* MCDRV_FS_16000(6) : 16kHz */ + /* MCDRV_FS_12000(8) : 12kHz */ + /* MCDRV_FS_11025(9) : 11.025kHz */ + /* MCDRV_FS_8000 (10) : 8kHz */ + MCDRV_FS_8000, + /* bBckFs : Bit Clock Frequency Setting */ + /* MCDRV_BCKFS_64 (0) : LRCK x 64 */ + /* MCDRV_BCKFS_48 (1) : LRCK x 48 */ + /* MCDRV_BCKFS_32 (2) : LRCK x 32 */ + /* MCDRV_BCKFS_512(4) : LRCK x 512 */ + /* MCDRV_BCKFS_256(5) : LRCK x 256 */ + /* MCDRV_BCKFS_128(6) : LRCK x 128 */ + /* MCDRV_BCKFS_16 (7) : LRCK x 16 */ + MCDRV_BCKFS_32, + /* bInterface : Interface Selection */ + /* MCDRV_DIO_DA (0) : Digital Audio */ + /* MCDRV_DIO_PCM(1) : PCM */ + MCDRV_DIO_PCM, + /* bBckInvert : Bit Clock Inversion Setting */ + /* MCDRV_BCLK_NORMAL(0) : Normal Operation */ + /* MCDRV_BCLK_INVERT(1) : Clock Inverted */ + MCDRV_BCLK_NORMAL, + /* bPcmHizTim : High Impedance transition timing after transmitting the last PCM I/F data */ + /* MCDRV_PCMHIZTIM_FALLING(0) : BCLK#* Falling Edge */ + /* MCDRV_PCMHIZTIM_RISING (1) : BCLK#* Rising Edge */ + MCDRV_PCMHIZTIM_FALLING, + /* bPcmClkDown : Bit Clock Setting with PCM selected and Master selected */ + /* MCDRV_PCM_CLKDOWN_OFF (0) : A bit clock value specified with bBckFs */ + /* MCDRV_PCM_CLKDOWN_HALF(1) : A half of the bit clock value specified with bBckFs */ + MCDRV_PCM_CLKDOWN_OFF, + /* bPcmFrame : Frame Mode Setting with PCM interface */ + /* MCDRV_PCM_SHORTFRAME(0) : Short Frame */ + /* MCDRV_PCM_LONGFRAME (1) : Long Frame */ + MCDRV_PCM_SHORTFRAME, + /* bPcmHighPeriod : LR clock High time setting with PCM selected and Master selected */ + /* 0 to 31 : High level keeps during the period of time of */ + /* (setting value + 1) of the bit clock. */ + 0, + }, + /* sDir */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_STEREO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot : Setting of a slot number of data to be fed to each channel */ + {0, 0} + }, + /* sDit */ + { + /* wSrcRate : Sampling Rate Converter Setting */ + 0, + /* sDaFormat : Digital Audio Format Information */ + { + /* bBitSel : Bit Width Setting */ + /* MCDRV_BITSEL_16(0) : 16bit */ + /* MCDRV_BITSEL_20(1) : 20bit */ + /* MCDRV_BITSEL_24(2) : 24bit */ + MCDRV_BITSEL_16, + /* bMode : Data Format Setting */ + /* MCDRV_DAMODE_HEADALIGN(0) : Left-justified Format */ + /* MCDRV_DAMODE_I2S (1) : I2S */ + /* MCDRV_DAMODE_TAILALIGN(2) : Right-justified Format */ + MCDRV_DAMODE_HEADALIGN + }, + /* sPcmFormat : PCM Format Information */ + { + /* bMono : Mono / Stereo Setting */ + /* MCDRV_PCM_STEREO(0) Stereo */ + /* MCDRV_PCM_MONO (1) Mono */ + MCDRV_PCM_MONO , + /* bOrder : Bit Order Setting */ + /* MCDRV_PCM_MSB_FIRST (0) : MSB First */ + /* MCDRV_PCM_LSB_FIRST (1) : LSB First */ + /* MCDRV_PCM_MSB_FIRST_SIGN (2) : MSB First (Sign Extension) */ + /* MCDRV_PCM_LSB_FIRST_SIGN (3) : LSB First (Sign Extension) */ + /* MCDRV_PCM_MSB_FIRST_ZERO (4) : MSB First (Zeros Padding) */ + /* MCDRV_PCM_LSB_FIRST_ZERO (5) : LSB First (Zeros Padding) */ + MCDRV_PCM_MSB_FIRST, + /* bLaw : Data Format Setting */ + /* MCDRV_PCM_LINEAR(0) : Linear */ + /* MCDRV_PCM_ALAW (1) : A-Law */ + /* MCDRV_PCM_MULAW (2) : u-Law */ + MCDRV_PCM_LINEAR, + /* bBitSel : Bit Width Setting */ + /* MCDRV_PCM_BITSEL_8 (0) 8 bits */ + /* MCDRV_PCM_BITSEL_13(1) 13 bits */ + /* MCDRV_PCM_BITSEL_14(2) 14 bits */ + /* MCDRV_PCM_BITSEL_16(3) 16 bits */ + MCDRV_PCM_BITSEL_16 + }, + /* asSlot Setting of a slot number of data to be transmitted from each channel */ + {0, 1} + } + } + } +}; + +/* ======================================== + DAC settings + ========================================*/ +static const MCDRV_DAC_INFO stDacInfo_Default = { + /* bMasterSwap : DAC Master Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bVoiceSwap : DAC Voice Path SWAP Setting */ + /* MCDRV_DSWAP_OFF (0) : No SWAP */ + /* MCDRV_DSWAP_SWAP (1) : SWAP */ + /* MCDRV_DSWAP_MUTE (2) : MUTE */ + /* MCDRV_DSWAP_RMVCENTER(3) : Center Removed */ + /* MCDRV_DSWAP_MONO (4) : Mono (-6dB) */ + /* MCDRV_DSWAP_MONOHALF (5) : Reserved (do not use this setting) */ + /* MCDRV_DSWAP_BOTHL (6) : Lch data output in both Lch and Rch */ + /* MCDRV_DSWAP_BOTHR (7) : Rch data output in both Lch and Rch */ + MCDRV_DSWAP_OFF, + /* bDcCut : HP, SP Protection DC-ct Filter Setting */ + /* MCDRV_DCCUT_ON (0) : DC-cut Filter ON */ + /* MCDRV_DCCUT_OFF(1) : DC-cut Filter OFF */ + MCDRV_DCCUT_ON +}; + +/* ======================================== + ADC settings + ========================================*/ + +static const MCDRV_ADC_INFO stAdcInfo_Default = { + /* bAgcAdjust : AGC Gain Control Range */ + /* MCDRV_AGCADJ_24(0) : -3dB to +24dB */ + /* MCDRV_AGCADJ_18(1) : -3dB to +18dB */ + /* MCDRV_AGCADJ_12(2) : -3dB to +12dB */ + /* MCDRV_AGCADJ_0 (3) : -3dB to +0dB */ + MCDRV_AGCADJ_0, + /* bAgcOn : AGC ON/OFF Setting */ + /* MCDRV_AGC_OFF(0) : OFF */ + /* MCDRV_AGC_ON (1) : ON */ + MCDRV_AGC_OFF, + /* bMonot : Mono / Stereo Setting */ + /* MCDRV_ADC_STEREO(0) : Stereo */ + /* MCDRV_ADC_MONO (1) : Mono */ + MCDRV_ADC_STEREO +}; + +/* ======================================== + SP settings + ========================================*/ +static const MCDRV_SP_INFO stSpInfo_Default = { + /* bSwap : Swap setting */ + /* MCDRV_SPSWAP_OFF (0) : No SWAP */ + /* MCDRV_SPSWAP_SWAP(1) : SWAP */ + MCDRV_SPSWAP_OFF +}; + +/* ======================================== + DNG settings + ========================================*/ +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff[] : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + {MCDRV_DNG_OFF, MCDRV_DNG_OFF, MCDRV_DNG_OFF}, + + /* bThreshold[] : Threshold Setting */ + /* MCDRV_DNG_THRES_30 (0) */ + /* MCDRV_DNG_THRES_36 (1) */ + /* MCDRV_DNG_THRES_42 (2) */ + /* MCDRV_DNG_THRES_48 (3) */ + /* MCDRV_DNG_THRES_54 (4) */ + /* MCDRV_DNG_THRES_60 (5) */ + /* MCDRV_DNG_THRES_66 (6) */ + /* MCDRV_DNG_THRES_72 (7) */ + /* MCDRV_DNG_THRES_78 (8) */ + /* MCDRV_DNG_THRES_84 (9) */ + {MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60, MCDRV_DNG_THRES_60}, + + /* bHold[] : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + {MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500, MCDRV_DNG_HOLD_500}, + + /* bAttack[] : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_100 (1) : 100ms */ + /* MCDRV_DNG_ATTACK_400 (2) : 400ms */ + /* MCDRV_DNG_ATTACK_800 (3) : 800ms */ + {MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100, MCDRV_DNG_ATTACK_100}, + + /* bRelease[] : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + {MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940, MCDRV_DNG_RELEASE_940}, + + /* bTarget[] : Target Volume Setting */ + /* MCDRV_DNG_TARGET_6 (0) : -6dB */ + /* MCDRV_DNG_TARGET_9 (1) : -9dB */ + /* MCDRV_DNG_TARGET_12 (2) : -12dB */ + /* MCDRV_DNG_TARGET_15 (3) : -15dB */ + /* MCDRV_DNG_TARGET_18 (4) : -18dB */ + /* MCDRV_DNG_TARGET_MUTE (5) : Mute */ + {MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE, MCDRV_DNG_TARGET_MUTE}, +}; +#if 0 +static const MCDRV_DNG_INFO stDngInfo_Default = { + /* bOnOff : Digital Noise Gate On/Off Setting */ + /* MCDRV_DNG_OFF(0) : OFF */ + /* MCDRV_DNG_ON (1) : ON */ + MCDRV_DNG_OFF, + + /* bThreshold : Threshold Setting */ + /* MCDRV_DNG_THRES_5BIT (0) */ + /* MCDRV_DNG_THRES_7BIT (1) */ + /* MCDRV_DNG_THRES_9BIT (2) */ + /* MCDRV_DNG_THRES_11BIT (3) */ + /* MCDRV_DNG_THRES_13BIT (4) */ + /* MCDRV_DNG_THRES_15BIT (5) */ + /* MCDRV_DNG_THRES_17BIT (6) */ + /* MCDRV_DNG_THRES_21BIT (7) */ + MCDRV_DNG_THRES_11BIT, + + /* bHold : Hold Time Setting */ + /* MCDRV_DNG_HOLD_30 (0) : 30ms */ + /* MCDRV_DNG_HOLD_120(1) : 120ms */ + /* MCDRV_DNG_HOLD_500(2) : 500ms */ + MCDRV_DNG_HOLD_500, + + /* bAttack : Attack Time Setting */ + /* MCDRV_DNG_ATTACK_25 (0) : 25ms */ + /* MCDRV_DNG_ATTACK_800 (1) : 800ms */ + /* MCDRV_DNG_ATTACK_1100 (2) : 1100ms */ + MCDRV_DNG_ATTACK_1100, + + /* bRelease : Release Time Setting */ + /* MCDRV_DNG_RELEASE_7950(0) : 7.95ms */ + /* MCDRV_DNG_RELEASE_470 (1) : 0.47ms */ + /* MCDRV_DNG_RELEASE_940 (2) : 0.94ms */ + MCDRV_DNG_RELEASE_940, + +}; +#endif + +/* ======================================== + AudioEngine settings + ========================================*/ +static MCDRV_AE_INFO sAeInfo_1 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_2 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_3 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_4 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +static MCDRV_AE_INFO sAeInfo_5 = { + /* On/Off */ + 0x00, + /* BEX */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* WIDE */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00 + }, + /* DRC */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + }, + /* EQ5 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00 + }, + /* EQ3 */ + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00 + } +}; + +/* ======================================== + System EQ settings + ========================================*/ +static MCDRV_SYSEQ_INFO stSyseqInfo_Default = { + /* On/Off */ + 0x00, + /* EQ */ + { + 0x10,0xc4,0x50,0x12,0xc4,0x40,0x02,0xa9, + 0x60,0xed,0x3b,0xc0,0xfc,0x92,0x40, + }, +}; + +#endif diff --git a/sound/soc/codecs/mc1n2/mc1n2_dbg.c b/sound/soc/codecs/mc1n2/mc1n2_dbg.c new file mode 100644 index 0000000..d454969 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mc1n2_dbg.c @@ -0,0 +1,439 @@ +#include <sound/soc.h> +#include "mc1n2_priv.h" + +#ifdef CONFIG_SND_SOC_MC1N2_DEBUG + +static void mc1n2_dump_reg_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_REG_INFO *info = (MCDRV_REG_INFO *)pvPrm; + + dbg_info("bRegType = 0x%02x\n", info->bRegType); + dbg_info("bAddress = 0x%02x\n", info->bAddress); +} + +static void mc1n2_dump_array(const char *name, + const unsigned char *data, size_t len) +{ + char str[2048], *p; + int n = (len <= 256) ? len : 256; + int i; + + p = str; + for (i = 0; i < n; i++) { + p += sprintf(p, "0x%02x ", data[i]); + } + + dbg_info("%s[] = {%s}\n", name, str); +} + +#define DEF_PATH(p) {offsetof(MCDRV_PATH_INFO, p), #p} + +static void mc1n2_dump_path_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_PATH_INFO *info = (MCDRV_PATH_INFO *)pvPrm; + int i; + + struct path_table { + size_t offset; + char *name; + }; + + struct path_table table[] = { + DEF_PATH(asHpOut[0]), DEF_PATH(asHpOut[1]), + DEF_PATH(asSpOut[0]), DEF_PATH(asSpOut[1]), + DEF_PATH(asRcOut[0]), + DEF_PATH(asLout1[0]), DEF_PATH(asLout1[1]), + DEF_PATH(asLout2[0]), DEF_PATH(asLout2[1]), + DEF_PATH(asPeak[0]), + DEF_PATH(asDit0[0]), + DEF_PATH(asDit1[0]), + DEF_PATH(asDit2[0]), + DEF_PATH(asDac[0]), DEF_PATH(asDac[1]), + DEF_PATH(asAe[0]), + DEF_PATH(asCdsp[0]), DEF_PATH(asCdsp[1]), + DEF_PATH(asCdsp[2]), DEF_PATH(asCdsp[3]), + DEF_PATH(asAdc0[0]), DEF_PATH(asAdc0[1]), + DEF_PATH(asAdc1[0]), + DEF_PATH(asMix[0]), + DEF_PATH(asBias[0]), + }; + +#define N_PATH_TABLE (sizeof(table) / sizeof(struct path_table)) + + for (i = 0; i < N_PATH_TABLE; i++) { + MCDRV_CHANNEL *ch = (MCDRV_CHANNEL *)((void *)info + table[i].offset); + int j; + for (j = 0; j < SOURCE_BLOCK_NUM; j++) { + if (ch->abSrcOnOff[j] != 0) { + dbg_info("%s.abSrcOnOff[%d] = 0x%02x\n", + table[i].name, j, ch->abSrcOnOff[j]); + } + } + } +} + +#define DEF_VOL(v) {offsetof(MCDRV_VOL_INFO, v), #v} + +static void mc1n2_dump_vol_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_VOL_INFO *info = (MCDRV_VOL_INFO *)pvPrm; + int i; + + struct vol_table { + size_t offset; + char *name; + }; + + struct vol_table table[] = { + DEF_VOL(aswD_Ad0[0]), DEF_VOL(aswD_Ad0[1]), + DEF_VOL(aswD_Ad1[0]), + DEF_VOL(aswD_Aeng6[0]), DEF_VOL(aswD_Aeng6[1]), + DEF_VOL(aswD_Pdm[0]), DEF_VOL(aswD_Pdm[1]), + DEF_VOL(aswD_Dtmfb[0]), DEF_VOL(aswD_Dtmfb[1]), + DEF_VOL(aswD_Dir0[0]), DEF_VOL(aswD_Dir0[1]), + DEF_VOL(aswD_Dir1[0]), DEF_VOL(aswD_Dir1[1]), + DEF_VOL(aswD_Dir2[0]), DEF_VOL(aswD_Dir2[1]), + DEF_VOL(aswD_Ad0Att[0]), DEF_VOL(aswD_Ad0Att[1]), + DEF_VOL(aswD_Ad1Att[0]), + DEF_VOL(aswD_Dir0Att[0]), DEF_VOL(aswD_Dir0Att[1]), + DEF_VOL(aswD_Dir1Att[0]), DEF_VOL(aswD_Dir1Att[1]), + DEF_VOL(aswD_Dir2Att[0]), DEF_VOL(aswD_Dir2Att[1]), + DEF_VOL(aswD_SideTone[0]), DEF_VOL(aswD_SideTone[1]), + DEF_VOL(aswD_DtmfAtt[0]), DEF_VOL(aswD_DtmfAtt[1]), + DEF_VOL(aswD_DacMaster[0]), DEF_VOL(aswD_DacMaster[1]), + DEF_VOL(aswD_DacVoice[0]), DEF_VOL(aswD_DacVoice[1]), + DEF_VOL(aswD_DacAtt[0]), DEF_VOL(aswD_DacAtt[1]), + DEF_VOL(aswD_Dit0[0]), DEF_VOL(aswD_Dit0[1]), + DEF_VOL(aswD_Dit1[0]), DEF_VOL(aswD_Dit1[1]), + DEF_VOL(aswD_Dit2[0]), DEF_VOL(aswD_Dit2[1]), + DEF_VOL(aswA_Ad0[0]), DEF_VOL(aswA_Ad0[1]), + DEF_VOL(aswA_Ad1[0]), + DEF_VOL(aswA_Lin1[0]), DEF_VOL(aswA_Lin1[1]), + DEF_VOL(aswA_Lin2[0]), DEF_VOL(aswA_Lin2[1]), + DEF_VOL(aswA_Mic1[0]), + DEF_VOL(aswA_Mic2[0]), + DEF_VOL(aswA_Mic3[0]), + DEF_VOL(aswA_Hp[0]), DEF_VOL(aswA_Hp[1]), + DEF_VOL(aswA_Sp[0]), DEF_VOL(aswA_Sp[1]), + DEF_VOL(aswA_Rc[0]), + DEF_VOL(aswA_Lout1[0]), DEF_VOL(aswA_Lout1[1]), + DEF_VOL(aswA_Lout2[0]), DEF_VOL(aswA_Lout2[1]), + DEF_VOL(aswA_Mic1Gain[0]), + DEF_VOL(aswA_Mic2Gain[0]), + DEF_VOL(aswA_Mic3Gain[0]), + DEF_VOL(aswA_HpGain[0]), + }; + +#define N_VOL_TABLE (sizeof(table) / sizeof(struct vol_table)) + + for (i = 0; i < N_VOL_TABLE; i++) { + SINT16 vol = *(SINT16 *)((void *)info + table[i].offset); + if (vol & 0x0001) { + dbg_info("%s = 0x%04x\n", table[i].name, (vol & 0xfffe)); + } + } +} + +static void mc1n2_dump_dio_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_DIO_INFO *info = (MCDRV_DIO_INFO *)pvPrm; + MCDRV_DIO_PORT *port; + UINT32 update; + int i; + + for (i = 0; i < IOPORT_NUM; i++) { + dbg_info("asPortInfo[%d]:\n", i); + port = &info->asPortInfo[i]; + update = dPrm >> (i*3); + if (update & MCDRV_DIO0_COM_UPDATE_FLAG) { + dbg_info("sDioCommon.bMasterSlave = 0x%02x\n", + port->sDioCommon.bMasterSlave); + dbg_info(" bAutoFs = 0x%02x\n", + port->sDioCommon.bAutoFs); + dbg_info(" bFs = 0x%02x\n", + port->sDioCommon.bFs); + dbg_info(" bBckFs = 0x%02x\n", + port->sDioCommon.bBckFs); + dbg_info(" bInterface = 0x%02x\n", + port->sDioCommon.bInterface); + dbg_info(" bBckInvert = 0x%02x\n", + port->sDioCommon.bBckInvert); + dbg_info(" bPcmHizTim = 0x%02x\n", + port->sDioCommon.bPcmHizTim); + dbg_info(" bPcmClkDown = 0x%02x\n", + port->sDioCommon.bPcmClkDown); + dbg_info(" bPcmFrame = 0x%02x\n", + port->sDioCommon.bPcmFrame); + dbg_info(" bPcmHighPeriod = 0x%02x\n", + port->sDioCommon.bPcmHighPeriod); + } + if (update & MCDRV_DIO0_DIR_UPDATE_FLAG) { + dbg_info("sDir.wSrcRate = 0x%04x\n", + port->sDir.wSrcRate); + dbg_info(" sDaFormat.bBitSel = 0x%02x\n", + port->sDir.sDaFormat.bBitSel); + dbg_info(" bMode = 0x%02x\n", + port->sDir.sDaFormat.bMode); + dbg_info(" sPcmFormat.bMono = 0x%02x\n", + port->sDir.sPcmFormat.bMono); + dbg_info(" bOrder = 0x%02x\n", + port->sDir.sPcmFormat.bOrder); + dbg_info(" bLaw = 0x%02x\n", + port->sDir.sPcmFormat.bLaw); + dbg_info(" bBitSel = 0x%02x\n", + port->sDir.sPcmFormat.bBitSel); + dbg_info(" abSlot[] = {0x%02x, 0x%02x}\n", + port->sDir.abSlot[0], port->sDir.abSlot[1]); + } + if (update & MCDRV_DIO0_DIT_UPDATE_FLAG) { + dbg_info("sDit.wSrcRate = 0x%04x\n", + port->sDit.wSrcRate); + dbg_info(" sDaFormat.bBitSel = 0x%02x\n", + port->sDit.sDaFormat.bBitSel); + dbg_info(" bMode = 0x%02x\n", + port->sDit.sDaFormat.bMode); + dbg_info(" sPcmFormat.bMono = 0x%02x\n", + port->sDit.sPcmFormat.bMono); + dbg_info(" bOrder = 0x%02x\n", + port->sDit.sPcmFormat.bOrder); + dbg_info(" bLaw = 0x%02x\n", + port->sDit.sPcmFormat.bLaw); + dbg_info(" bBitSel = 0x%02x\n", + port->sDit.sPcmFormat.bBitSel); + dbg_info(" abSlot[] = {0x%02x, 0x%02x}\n", + port->sDit.abSlot[0], port->sDit.abSlot[1]); + } + } +} + +static void mc1n2_dump_dac_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_DAC_INFO *info = (MCDRV_DAC_INFO *)pvPrm; + + if (dPrm & MCDRV_DAC_MSWP_UPDATE_FLAG) { + dbg_info("bMasterSwap = 0x%02x\n", info->bMasterSwap); + } + if (dPrm & MCDRV_DAC_VSWP_UPDATE_FLAG) { + dbg_info("bVoiceSwap = 0x%02x\n", info->bVoiceSwap); + } + if (dPrm & MCDRV_DAC_HPF_UPDATE_FLAG) { + dbg_info("bDcCut = 0x%02x\n", info->bDcCut); + } +} + +static void mc1n2_dump_adc_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_ADC_INFO *info = (MCDRV_ADC_INFO *)pvPrm; + + if (dPrm & MCDRV_ADCADJ_UPDATE_FLAG) { + dbg_info("bAgcAdjust = 0x%02x\n", info->bAgcAdjust); + } + if (dPrm & MCDRV_ADCAGC_UPDATE_FLAG) { + dbg_info("bAgcOn = 0x%02x\n", info->bAgcOn); + } + if (dPrm & MCDRV_ADCMONO_UPDATE_FLAG) { + dbg_info("bMono = 0x%02x\n", info->bMono); + } +} + +static void mc1n2_dump_sp_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_SP_INFO *info = (MCDRV_SP_INFO *)pvPrm; + + dbg_info("bSwap = 0x%02x\n", info->bSwap); +} + +static void mc1n2_dump_dng_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_DNG_INFO *info = (MCDRV_DNG_INFO *)pvPrm; + + if (dPrm & MCDRV_DNGSW_HP_UPDATE_FLAG) { + dbg_info("HP:abOnOff = 0x%02x\n", info->abOnOff[0]); + } + if (dPrm & MCDRV_DNGTHRES_HP_UPDATE_FLAG) { + dbg_info("HP:abThreshold = 0x%02x\n", info->abThreshold[0]); + } + if (dPrm & MCDRV_DNGHOLD_HP_UPDATE_FLAG) { + dbg_info("HP:abHold = 0x%02x\n", info->abHold[0]); + } + if (dPrm & MCDRV_DNGATK_HP_UPDATE_FLAG) { + dbg_info("HP:abAttack = 0x%02x\n", info->abAttack[0]); + } + if (dPrm & MCDRV_DNGREL_HP_UPDATE_FLAG) { + dbg_info("HP:abRelease = 0x%02x\n", info->abRelease[0]); + } + if (dPrm & MCDRV_DNGTARGET_HP_UPDATE_FLAG) { + dbg_info("HP:abTarget = 0x%02x\n", info->abTarget[0]); + } + + if (dPrm & MCDRV_DNGSW_SP_UPDATE_FLAG) { + dbg_info("SP:abOnOff = 0x%02x\n", info->abOnOff[1]); + } + if (dPrm & MCDRV_DNGTHRES_SP_UPDATE_FLAG) { + dbg_info("SP:abThreshold = 0x%02x\n", info->abThreshold[1]); + } + if (dPrm & MCDRV_DNGHOLD_SP_UPDATE_FLAG) { + dbg_info("SP:abHold = 0x%02x\n", info->abHold[1]); + } + if (dPrm & MCDRV_DNGATK_SP_UPDATE_FLAG) { + dbg_info("SP:abAttack = 0x%02x\n", info->abAttack[1]); + } + if (dPrm & MCDRV_DNGREL_SP_UPDATE_FLAG) { + dbg_info("SP:abRelease = 0x%02x\n", info->abRelease[1]); + } + if (dPrm & MCDRV_DNGTARGET_SP_UPDATE_FLAG) { + dbg_info("SP:abTarget = 0x%02x\n", info->abTarget[1]); + } + + if (dPrm & MCDRV_DNGSW_RC_UPDATE_FLAG) { + dbg_info("RC:abOnOff = 0x%02x\n", info->abOnOff[2]); + } + if (dPrm & MCDRV_DNGTHRES_RC_UPDATE_FLAG) { + dbg_info("RC:abThreshold = 0x%02x\n", info->abThreshold[2]); + } + if (dPrm & MCDRV_DNGHOLD_RC_UPDATE_FLAG) { + dbg_info("RC:abHold = 0x%02x\n", info->abHold[2]); + } + if (dPrm & MCDRV_DNGATK_RC_UPDATE_FLAG) { + dbg_info("RC:abAttack = 0x%02x\n", info->abAttack[2]); + } + if (dPrm & MCDRV_DNGREL_RC_UPDATE_FLAG) { + dbg_info("RC:abRelease = 0x%02x\n", info->abRelease[2]); + } + if (dPrm & MCDRV_DNGTARGET_RC_UPDATE_FLAG) { + dbg_info("RC:abTarget = 0x%02x\n", info->abTarget[2]); + } +} + +static void mc1n2_dump_ae_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_AE_INFO *info = (MCDRV_AE_INFO *)pvPrm; + + dbg_info("bOnOff = 0x%02x\n", info->bOnOff); + if (dPrm & MCDRV_AEUPDATE_FLAG_BEX) { + mc1n2_dump_array("abBex", info->abBex, BEX_PARAM_SIZE); + } + if (dPrm & MCDRV_AEUPDATE_FLAG_WIDE) { + mc1n2_dump_array("abWide", info->abWide, WIDE_PARAM_SIZE); + } + if (dPrm & MCDRV_AEUPDATE_FLAG_DRC) { + mc1n2_dump_array("abDrc", info->abDrc, DRC_PARAM_SIZE); + } + if (dPrm & MCDRV_AEUPDATE_FLAG_EQ5) { + mc1n2_dump_array("abEq5", info->abEq5, EQ5_PARAM_SIZE); + } + if (dPrm & MCDRV_AEUPDATE_FLAG_EQ3) { + mc1n2_dump_array("abEq3", info->abEq3, EQ5_PARAM_SIZE); + } +} + +static void mc1n2_dump_pdm_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_PDM_INFO *info = (MCDRV_PDM_INFO *)pvPrm; + + if (dPrm & MCDRV_PDMCLK_UPDATE_FLAG) { + dbg_info("bClk = 0x%02x\n", info->bClk); + } + if (dPrm & MCDRV_PDMADJ_UPDATE_FLAG) { + dbg_info("bAgcAdjust = 0x%02x\n", info->bAgcAdjust); + } + if (dPrm & MCDRV_PDMAGC_UPDATE_FLAG) { + dbg_info("bAgcOn = 0x%02x\n", info->bAgcOn); + } + if (dPrm & MCDRV_PDMEDGE_UPDATE_FLAG) { + dbg_info("bPdmEdge = 0x%02x\n", info->bPdmEdge); + } + if (dPrm & MCDRV_PDMWAIT_UPDATE_FLAG) { + dbg_info("bPdmWait = 0x%02x\n", info->bPdmWait); + } + if (dPrm & MCDRV_PDMSEL_UPDATE_FLAG) { + dbg_info("bPdmSel = 0x%02x\n", info->bPdmSel); + } + if (dPrm & MCDRV_PDMMONO_UPDATE_FLAG) { + dbg_info("bMono = 0x%02x\n", info->bMono); + } +} + +static void mc1n2_dump_clksw_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_CLKSW_INFO *info = (MCDRV_CLKSW_INFO *)pvPrm; + + dbg_info("bClkSrc = 0x%02x\n", info->bClkSrc); +} + +static void mc1n2_dump_syseq_info(const void *pvPrm, UINT32 dPrm) +{ + MCDRV_SYSEQ_INFO *info = (MCDRV_SYSEQ_INFO *)pvPrm; + int i; + + if (dPrm & MCDRV_SYSEQ_ONOFF_UPDATE_FLAG) { + dbg_info("bOnOff = 0x%02x\n", info->bOnOff); + } + if (dPrm & MCDRV_SYSEQ_PARAM_UPDATE_FLAG) { + for (i = 0; i < 15; i++){ + dbg_info("abParam[%d] = 0x%02x\n", i, info->abParam[i]); + } + } +} + +struct mc1n2_dump_func { + char *name; + void (*func)(const void *, UINT32); +}; + +struct mc1n2_dump_func mc1n2_dump_func_map[] = { + {"MCDRV_INIT", NULL}, + {"MCDRV_TERM", NULL}, + {"MCDRV_READ_REG", mc1n2_dump_reg_info}, + {"MCDRV_WRITE_REG", NULL}, + {"MCDRV_GET_PATH", NULL}, + {"MCDRV_SET_PATH", mc1n2_dump_path_info}, + {"MCDRV_GET_VOLUME", NULL}, + {"MCDRV_SET_VOLUME", mc1n2_dump_vol_info}, + {"MCDRV_GET_DIGITALIO", NULL}, + {"MCDRV_SET_DIGITALIO", mc1n2_dump_dio_info}, + {"MCDRV_GET_DAC", NULL}, + {"MCDRV_SET_DAC", mc1n2_dump_dac_info}, + {"MCDRV_GET_ADC", NULL}, + {"MCDRV_SET_ADC", mc1n2_dump_adc_info}, + {"MCDRV_GET_SP", NULL}, + {"MCDRV_SET_SP", mc1n2_dump_sp_info}, + {"MCDRV_GET_DNG", NULL}, + {"MCDRV_SET_DNG", mc1n2_dump_dng_info}, + {"MCDRV_SET_AUDIOENGINE", mc1n2_dump_ae_info}, + {"MCDRV_SET_AUDIOENGINE_EX", NULL}, + {"MCDRV_SET_CDSP", NULL}, + {"MCDRV_GET_CDSP_PARAM", NULL}, + {"MCDRV_SET_CDSP_PARAM", NULL}, + {"MCDRV_REGISTER_CDSP_CB", NULL}, + {"MCDRV_GET_PDM", NULL}, + {"MCDRV_SET_PDM", mc1n2_dump_pdm_info}, + {"MCDRV_SET_DTMF", NULL}, + {"MCDRV_CONFIG_GP", NULL}, + {"MCDRV_MASK_GP", NULL}, + {"MCDRV_GETSET_GP", NULL}, + {"MCDRV_GET_PEAK", NULL}, + {"MCDRV_IRQ", NULL}, + {"MCDRV_UPDATE_CLOCK", NULL}, + {"MCDRV_SWITCH_CLOCK", mc1n2_dump_clksw_info}, + {"MCDRV_GET_SYSEQ", NULL}, + {"MCDRV_SET_SYSEQ", mc1n2_dump_syseq_info}, +}; + +SINT32 McDrv_Ctrl_dbg(UINT32 dCmd, void *pvPrm, UINT32 dPrm) +{ + SINT32 err; + + dbg_info("calling %s:\n", mc1n2_dump_func_map[dCmd].name); + + if (mc1n2_dump_func_map[dCmd].func) { + mc1n2_dump_func_map[dCmd].func(pvPrm, dPrm); + } + + err = McDrv_Ctrl(dCmd, pvPrm, dPrm); + dbg_info("err = %ld\n", err); + + return err; +} + +#endif /* CONFIG_SND_SOC_MC1N2_DEBUG */ diff --git a/sound/soc/codecs/mc1n2/mc1n2_priv.h b/sound/soc/codecs/mc1n2/mc1n2_priv.h new file mode 100644 index 0000000..47dee1a --- /dev/null +++ b/sound/soc/codecs/mc1n2/mc1n2_priv.h @@ -0,0 +1,196 @@ +/* + * MC-1N2 ASoC codec driver - private header + * + * Copyright (c) 2010 Yamaha Corporation + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef MC1N2_PRIV_H +#define MC1N2_PRIV_H + +#include "mcdriver.h" + +/* + * Virtual registers + */ +enum { + MC1N2_DVOL_AD0, + MC1N2_DVOL_AENG6, + MC1N2_DVOL_PDM, + MC1N2_DVOL_DIR0, + MC1N2_DVOL_DIR1, + MC1N2_DVOL_DIR2, + MC1N2_DVOL_AD0_ATT, + MC1N2_DVOL_DIR0_ATT, + MC1N2_DVOL_DIR1_ATT, + MC1N2_DVOL_DIR2_ATT, + MC1N2_DVOL_SIDETONE, + MC1N2_DVOL_DAC_MASTER, + MC1N2_DVOL_DAC_VOICE, + MC1N2_DVOL_DAC_ATT, + MC1N2_DVOL_DIT0, + MC1N2_DVOL_DIT1, + MC1N2_DVOL_DIT2, + MC1N2_AVOL_AD0, + MC1N2_AVOL_LIN1, + MC1N2_AVOL_MIC1, + MC1N2_AVOL_MIC2, + MC1N2_AVOL_MIC3, + MC1N2_AVOL_HP, + MC1N2_AVOL_SP, + MC1N2_AVOL_RC, + MC1N2_AVOL_LOUT1, + MC1N2_AVOL_LOUT2, + MC1N2_AVOL_MIC1_GAIN, + MC1N2_AVOL_MIC2_GAIN, + MC1N2_AVOL_MIC3_GAIN, + MC1N2_AVOL_HP_GAIN, + + MC1N2_ADCL_MIC1_SW, + MC1N2_ADCL_MIC2_SW, + MC1N2_ADCL_MIC3_SW, + MC1N2_ADCL_LINE_SW, + MC1N2_ADCR_MIC1_SW, + MC1N2_ADCR_MIC2_SW, + MC1N2_ADCR_MIC3_SW, + MC1N2_ADCR_LINE_SW, + + MC1N2_HPL_MIC1_SW, + MC1N2_HPL_MIC2_SW, + MC1N2_HPL_MIC3_SW, + MC1N2_HPL_LINE_SW, + MC1N2_HPL_DAC_SW, + + MC1N2_HPR_MIC1_SW, + MC1N2_HPR_MIC2_SW, + MC1N2_HPR_MIC3_SW, + MC1N2_HPR_LINER_SW, + MC1N2_HPR_DACR_SW, + + MC1N2_SPL_LINE_SW, + MC1N2_SPL_DAC_SW, + MC1N2_SPR_LINE_SW, + MC1N2_SPR_DAC_SW, + + MC1N2_RC_MIC1_SW, + MC1N2_RC_MIC2_SW, + MC1N2_RC_MIC3_SW, + MC1N2_RC_LINEMONO_SW, + MC1N2_RC_DACL_SW, + MC1N2_RC_DACR_SW, + + MC1N2_LOUT1L_MIC1_SW, + MC1N2_LOUT1L_MIC2_SW, + MC1N2_LOUT1L_MIC3_SW, + MC1N2_LOUT1L_LINE_SW, + MC1N2_LOUT1L_DAC_SW, + + MC1N2_LOUT1R_MIC1_SW, + MC1N2_LOUT1R_MIC2_SW, + MC1N2_LOUT1R_MIC3_SW, + MC1N2_LOUT1R_LINER_SW, + MC1N2_LOUT1R_DACR_SW, + + MC1N2_LOUT2L_MIC1_SW, + MC1N2_LOUT2L_MIC2_SW, + MC1N2_LOUT2L_MIC3_SW, + MC1N2_LOUT2L_LINE_SW, + MC1N2_LOUT2L_DAC_SW, + + MC1N2_LOUT2R_MIC1_SW, + MC1N2_LOUT2R_MIC2_SW, + MC1N2_LOUT2R_MIC3_SW, + MC1N2_LOUT2R_LINER_SW, + MC1N2_LOUT2R_DACR_SW, + + MC1N2_DMIX_ADC_SW, + MC1N2_DMIX_DIR0_SW, + MC1N2_DMIX_DIR1_SW, + MC1N2_DMIX_DIR2_SW, + + MC1N2_DACMAIN_SRC, + MC1N2_DACVOICE_SRC, + MC1N2_DIT0_SRC, + MC1N2_DIT1_SRC, + MC1N2_DIT2_SRC, + MC1N2_AE_SRC, + + MC1N2_ADCL_LINE_SRC, + MC1N2_ADCR_LINE_SRC, + MC1N2_HPL_LINE_SRC, + MC1N2_HPL_DAC_SRC, + MC1N2_SPL_LINE_SRC, + MC1N2_SPL_DAC_SRC, + MC1N2_SPR_LINE_SRC, + MC1N2_SPR_DAC_SRC, + MC1N2_LOUT1L_LINE_SRC, + MC1N2_LOUT1L_DAC_SRC, + MC1N2_LOUT2L_LINE_SRC, + MC1N2_LOUT2L_DAC_SRC, + + MC1N2_AE_PARAM_SEL, + MC1N2_ADC_PDM_SEL, + + MC1N2_MICBIAS1, + MC1N2_MICBIAS2, + MC1N2_MICBIAS3, + + MC1N2_N_REG +}; + +#define MC1N2_N_VOL_REG MC1N2_ADCL_MIC1_SW + +#define MC1N2_DSOURCE_OFF 0 +#define MC1N2_DSOURCE_ADC 1 +#define MC1N2_DSOURCE_DIR0 2 +#define MC1N2_DSOURCE_DIR1 3 +#define MC1N2_DSOURCE_DIR2 4 +#define MC1N2_DSOURCE_MIX 5 + +#define MC1N2_AE_PARAM_1 0 +#define MC1N2_AE_PARAM_2 1 +#define MC1N2_AE_PARAM_3 2 +#define MC1N2_AE_PARAM_4 3 +#define MC1N2_AE_PARAM_5 4 + +#define mc1n2_i2c_read_byte(c,r) i2c_smbus_read_byte_data((c), (r)<<1) + +extern struct i2c_client *mc1n2_get_i2c_client(void); + +/* + * For debugging + */ +#ifdef CONFIG_SND_SOC_MC1N2_DEBUG + +#define dbg_info(format, arg...) snd_printd(KERN_INFO format, ## arg) +#define TRACE_FUNC() snd_printd(KERN_INFO "<trace> %s()\n", __FUNCTION__) + + +#define _McDrv_Ctrl McDrv_Ctrl_dbg +extern SINT32 McDrv_Ctrl_dbg(UINT32 dCmd, void *pvPrm, UINT32 dPrm); + +#else + +#define dbg_info(format, arg...) +#define TRACE_FUNC() + +#define _McDrv_Ctrl McDrv_Ctrl + +#endif /* CONFIG_SND_SOC_MC1N2_DEBUG */ + +#endif /* MC1N2_PRIV_H */ diff --git a/sound/soc/codecs/mc1n2/mcdebuglog.c b/sound/soc/codecs/mc1n2/mcdebuglog.c new file mode 100644 index 0000000..5f1e61c --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdebuglog.c @@ -0,0 +1,1771 @@ +/**************************************************************************** + * + * Copyright(c) 2010 Yamaha Corporation. All rights reserved. + * + * Module : mcdebuglog.c + * + * Description : MC Driver debug log + * + * Version : 1.0.0 2010.09.10 + * + ****************************************************************************/ + + +#include "mcdebuglog.h" +#include "mcresctrl.h" + +#if MCDRV_DEBUG_LEVEL + +#include "mcdefs.h" +#include "mcdevprof.h" +#include "mcservice.h" +#include "mcmachdep.h" + + + +typedef char CHAR; + +static CHAR gsbLogString[8192]; +static CHAR gsbLFCode[] = "\n"; + +static const CHAR gsbCmdName[][20] = +{ + "init", + "term", + "read_reg", + "write_reg", + "get_path", + "set_path", + "get_volume", + "set_volume", + "get_digitalio", + "set_digitalio", + "get_dac", + "set_dac", + "get_adc", + "set_adc", + "get_sp", + "set_sp", + "get_dng", + "set_dng", + "set_ae", + "set_aeex", + "set_cdsp", + "get_cdspparam", + "set_cdspparam", + "reg_cdsp_cb", + "get_pdm", + "set_pdm", + "set_dtmf", + "config_gp", + "mask_gp", + "getset_gp", + "get_peak", + "irq", + "update_clock", + "switch_clock", + "get_syseq", + "set_syseq" +}; + + +static void OutputRegDump(void); +static void GetRegDump_B(CHAR* psbLogString, UINT8 bSlaveAddr, UINT8 bADRAddr, UINT8 bWINDOWAddr, UINT8 bRegType); + +static void MakeInitInfoLog(const MCDRV_INIT_INFO* pParam); +static void MakeRegInfoLog(const MCDRV_REG_INFO* pParam); +static void MakeClockInfoLog(const MCDRV_CLOCK_INFO* pParam); +static void MakeClockSwInfoLog(const MCDRV_CLKSW_INFO* pParam); +static void MakePathInfoLog(const MCDRV_PATH_INFO* pParam); +static void MakeVolInfoLog(const MCDRV_VOL_INFO* pParam); +static void MakeDIOInfoLog(const MCDRV_DIO_INFO* pParam); +static void MakeDACInfoLog(const MCDRV_DAC_INFO* pParam); +static void MakeADCInfoLog(const MCDRV_ADC_INFO* pParam); +static void MakeSpInfoLog(const MCDRV_SP_INFO* pParam); +static void MakeDNGInfoLog(const MCDRV_DNG_INFO* pParam); +static void MakeAEInfoLog(const MCDRV_AE_INFO* pParam); +static void MakeAEExInfoLog(const UINT16* pParam); +static void MakeSetCDSPLog(const UINT16* pParam); +static void MakeCDSPParamLog(const MCDRV_CDSPPARAM* pParam); +static void MakeCDSPCBLog(const void* pParam); +static void MakePDMInfoLog(const MCDRV_PDM_INFO* pParam); +static void MakeDTMFInfoLog(const MCDRV_DTMF_INFO* pParam); +static void MakeGPModeLog(const MCDRV_GP_MODE* pParam); +static void MakeGPMaskLog(const UINT8* pParam); +static void MakeGetSetGPLog(const UINT8* pParam); +static void MakePeakLog(const MCDRV_PEAK* pParam); +static void MakeSysEQInfoLog(const MCDRV_SYSEQ_INFO* pParam); + +/**************************************************************************** + * McDebugLog_CmdIn + * + * Description: + * Output Function entrance log. + * Arguments: + * dCmd Command ID + * pvParam pointer to parameter + * dUpdateInfo Update info + * Return: + * none + * + ****************************************************************************/ +void McDebugLog_CmdIn +( + UINT32 dCmd, + const void* pvParam, + UINT32 dUpdateInfo +) +{ + CHAR sbStr[80]; + UINT8 bLevel = MCDRV_DEBUG_LEVEL; + + if(dCmd >= sizeof(gsbCmdName)/sizeof(gsbCmdName[0])) + { + return; + } + + strcpy(gsbLogString, gsbCmdName[dCmd]); + strcat(gsbLogString, " In"); + + if(bLevel < 2) + { + strcat(gsbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)gsbLogString); + return; + } + + switch(dCmd) + { + case MCDRV_INIT: + MakeInitInfoLog((MCDRV_INIT_INFO*)pvParam); + break; + case MCDRV_READ_REG: + case MCDRV_WRITE_REG: + MakeRegInfoLog((MCDRV_REG_INFO*)pvParam); + break; + case MCDRV_UPDATE_CLOCK: + MakeClockInfoLog((MCDRV_CLOCK_INFO*)pvParam); + break; + case MCDRV_SWITCH_CLOCK: + MakeClockSwInfoLog((MCDRV_CLKSW_INFO*)pvParam); + break; + case MCDRV_SET_PATH: + MakePathInfoLog((MCDRV_PATH_INFO*)pvParam); + break; + case MCDRV_SET_VOLUME: + MakeVolInfoLog((MCDRV_VOL_INFO*)pvParam); + break; + case MCDRV_SET_DIGITALIO: + MakeDIOInfoLog((MCDRV_DIO_INFO*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_SET_DAC: + MakeDACInfoLog((MCDRV_DAC_INFO*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_SET_ADC: + MakeADCInfoLog((MCDRV_ADC_INFO*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_SET_SP: + MakeSpInfoLog((MCDRV_SP_INFO*)pvParam); + break; + case MCDRV_SET_DNG: + MakeDNGInfoLog((MCDRV_DNG_INFO*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_SET_AUDIOENGINE: + MakeAEInfoLog((MCDRV_AE_INFO*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_SET_AUDIOENGINE_EX: + MakeAEExInfoLog((UINT16*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_SET_CDSP: + MakeSetCDSPLog((UINT16*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_SET_CDSP_PARAM: + MakeCDSPParamLog((MCDRV_CDSPPARAM*)pvParam); + break; + case MCDRV_REGISTER_CDSP_CB: + MakeCDSPCBLog(pvParam); + break; + case MCDRV_SET_PDM: + MakePDMInfoLog((MCDRV_PDM_INFO*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_SET_DTMF: + MakeDTMFInfoLog((MCDRV_DTMF_INFO*)pvParam); + break; + case MCDRV_CONFIG_GP: + MakeGPModeLog((MCDRV_GP_MODE*)pvParam); + break; + case MCDRV_MASK_GP: + MakeGPMaskLog((UINT8*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_GETSET_GP: + MakeGetSetGPLog((UINT8*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + case MCDRV_SET_SYSEQ: + MakeSysEQInfoLog((MCDRV_SYSEQ_INFO*)pvParam); + sprintf(sbStr, " dPrm=%08lX", dUpdateInfo); + strcat(gsbLogString, sbStr); + break; + + default: + break; + } + + strcat(gsbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)gsbLogString); +} + +/**************************************************************************** + * McDebugLog_CmdOut + * + * Description: + * Output Function exit log. + * Arguments: + * dCmd Command ID + * psdRet retrun value + * pvParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +void McDebugLog_CmdOut +( + UINT32 dCmd, + const SINT32* psdRet, + const void* pvParam +) +{ + CHAR sbStr[80]; + UINT8 bLevel = MCDRV_DEBUG_LEVEL; + + if(dCmd >= sizeof(gsbCmdName)/sizeof(gsbCmdName[0])) + { + return; + } + + strcpy(gsbLogString, gsbCmdName[dCmd]); + strcat(gsbLogString, " Out"); + if(psdRet != NULL) + { + sprintf(sbStr, " ret=%ld", *psdRet); + strcat(gsbLogString, sbStr); + } + + if(bLevel < 2) + { + strcat(gsbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)gsbLogString); + return; + } + + switch(dCmd) + { + case MCDRV_READ_REG: + MakeRegInfoLog((MCDRV_REG_INFO*)pvParam); + break; + case MCDRV_GET_PATH: + MakePathInfoLog((MCDRV_PATH_INFO*)pvParam); + break; + case MCDRV_GET_VOLUME: + MakeVolInfoLog((MCDRV_VOL_INFO*)pvParam); + break; + case MCDRV_GET_DIGITALIO: + MakeDIOInfoLog((MCDRV_DIO_INFO*)pvParam); + break; + case MCDRV_GET_DAC: + MakeDACInfoLog((MCDRV_DAC_INFO*)pvParam); + break; + case MCDRV_GET_ADC: + MakeADCInfoLog((MCDRV_ADC_INFO*)pvParam); + break; + case MCDRV_GET_SP: + MakeSpInfoLog((MCDRV_SP_INFO*)pvParam); + break; + case MCDRV_GET_DNG: + MakeDNGInfoLog((MCDRV_DNG_INFO*)pvParam); + break; + case MCDRV_GET_CDSP_PARAM: + MakeCDSPParamLog((MCDRV_CDSPPARAM*)pvParam); + break; + case MCDRV_GET_PDM: + MakePDMInfoLog((MCDRV_PDM_INFO*)pvParam); + break; + case MCDRV_GETSET_GP: + MakeGetSetGPLog((UINT8*)pvParam); + break; + case MCDRV_GET_PEAK: + MakePeakLog((MCDRV_PEAK*)pvParam); + break; + case MCDRV_GET_SYSEQ: + MakeSysEQInfoLog((MCDRV_SYSEQ_INFO*)pvParam); + break; + + default: + break; + } + strcat(gsbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)gsbLogString); + + if(bLevel < 3) + { + return; + } + + OutputRegDump(); +} + +/**************************************************************************** + * McDebugLog_FuncIn + * + * Description: + * Output Function entrance log. + * Arguments: + * pbFuncName function name + * Return: + * none + * + ****************************************************************************/ +void McDebugLog_FuncIn +( + void* pvFuncName +) +{ + strcpy(gsbLogString, (CHAR*)pvFuncName); + strcat(gsbLogString, " In"); + + strcat(gsbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)gsbLogString); +} + +/**************************************************************************** + * McDebugLog_FuncOut + * + * Description: + * Output Function exit log. + * Arguments: + * pbFuncName function name + * psdRet retrun value + * Return: + * none + * + ****************************************************************************/ +void McDebugLog_FuncOut +( + void* pvFuncName, + const SINT32* psdRet +) +{ + CHAR sbStr[80]; + + strcpy(gsbLogString, (CHAR*)pvFuncName); + strcat(gsbLogString, " Out"); + if(psdRet != NULL) + { + sprintf(sbStr, " ret=%ld", *psdRet); + strcat(gsbLogString, sbStr); + } + + strcat(gsbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)gsbLogString); +} + + +/**************************************************************************** + * OutputRegDump + * + * Description: + * Output Register dump. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void OutputRegDump +( + void +) +{ + UINT16 i; + CHAR sbStr[10]; + CHAR sbLogString[2500]=""; + UINT8 bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + MCDRV_REG_INFO sRegInfo; + + /* A_ADR */ + sRegInfo.bRegType = MCDRV_REGTYPE_A; + strcpy(sbLogString, "A_ADR:"); + for(i = 0; i < 256UL; i++) + { + sRegInfo.bAddress = (UINT8)i; + if((McResCtrl_GetRegAccess(&sRegInfo) & eMCDRV_READ_ONLY) != 0) + { + sprintf(sbStr, "[%d]=%02X", i, McSrv_ReadI2C(bSlaveAddr, i)); + strcat(sbLogString, sbStr); + if(i < 255UL) + { + strcat(sbLogString, " "); + } + } + } + strcat(sbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)sbLogString); + + /* BASE_ADR */ + strcpy(sbLogString, "BASE_ADR:"); + GetRegDump_B(sbLogString, bSlaveAddr, MCI_BASE_ADR, MCI_BASE_WINDOW, MCDRV_REGTYPE_B_BASE); + strcat(sbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)sbLogString); + + /* ANA_ADR */ + strcpy(sbLogString, "ANA_ADR:"); + GetRegDump_B(sbLogString, McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA), MCI_ANA_ADR, MCI_ANA_WINDOW, MCDRV_REGTYPE_B_ANALOG); + strcat(sbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)sbLogString); + + /* CD_ADR */ + strcpy(sbLogString, "CD_ADR:"); + GetRegDump_B(sbLogString, bSlaveAddr, MCI_CD_ADR, MCI_CD_WINDOW, MCDRV_REGTYPE_B_CODEC); + strcat(sbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)sbLogString); + + /* MIX_ADR */ + strcpy(sbLogString, "MIX_ADR:"); + GetRegDump_B(sbLogString, bSlaveAddr, MCI_MIX_ADR, MCI_MIX_WINDOW, MCDRV_REGTYPE_B_MIXER); + strcat(sbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)sbLogString); + +#if 0 + /* AE_ADR */ + strcpy(sbLogString, "AE_ADR:"); + GetRegDump_B(sbLogString, bSlaveAddr, MCI_AE_ADR, MCI_AE_WINDOW, MCDRV_REGTYPE_B_AE); + strcat(sbLogString, gsbLFCode); + machdep_DebugPrint((UINT8*)(void*)sbLogString); +#endif +} + +/**************************************************************************** + * GetRegDump_B + * + * Description: + * Get B-ADR Register dump string. + * Arguments: + * psbLogString string buffer + * bSlaveAddr Slave address + * bADRAddr ADR address + * bWINDOWAddr WINDOW address + * bRegType register type + * Return: + * none + * + ****************************************************************************/ +static void GetRegDump_B +( + CHAR* psbLogString, + UINT8 bSlaveAddr, + UINT8 bADRAddr, + UINT8 bWINDOWAddr, + UINT8 bRegType +) +{ + UINT16 i; + CHAR sbStr[10]; + UINT8 abData[2]; + MCDRV_REG_INFO sRegInfo; + + abData[0] = bADRAddr<<1; + sRegInfo.bRegType = bRegType; + + for(i = 0; i < 256UL; i++) + { + sRegInfo.bAddress = (UINT8)i; + if((McResCtrl_GetRegAccess(&sRegInfo) & eMCDRV_READ_ONLY) != 0) + { + abData[1] = (UINT8)i; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + sprintf(sbStr, "[%d]=%02X", i, McSrv_ReadI2C(bSlaveAddr, bWINDOWAddr)); + strcat(psbLogString, sbStr); + if(i < 255UL) + { + strcat(psbLogString, " "); + } + } + } +} + +/**************************************************************************** + * MakeInitInfoLog + * + * Description: + * Make Init Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeInitInfoLog +( + const MCDRV_INIT_INFO* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bCkSel=%02X", pParam->bCkSel); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDivR0=%02X", pParam->bDivR0); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDivF0=%02X", pParam->bDivF0); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDivR1=%02X", pParam->bDivR1); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDivF1=%02X", pParam->bDivF1); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bRange0=%02X", pParam->bRange0); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bRange1=%02X", pParam->bRange1); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bBypass=%02X", pParam->bBypass); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDioSdo0Hiz=%02X", pParam->bDioSdo0Hiz); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDioSdo1Hiz=%02X", pParam->bDioSdo1Hiz); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDioSdo2Hiz=%02X", pParam->bDioSdo2Hiz); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDioClk0Hiz=%02X", pParam->bDioClk0Hiz); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDioClk1Hiz=%02X", pParam->bDioClk1Hiz); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDioClk2Hiz=%02X", pParam->bDioClk2Hiz); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bPcmHiz=%02X", pParam->bPcmHiz); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bLineIn1Dif=%02X", pParam->bLineIn1Dif); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bLineIn2Dif=%02X", pParam->bLineIn2Dif); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bLineOut1Dif=%02X", pParam->bLineOut1Dif); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bLineOut2Dif=%02X", pParam->bLineOut2Dif); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bSpmn=%02X", pParam->bSpmn); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bMic1Sng=%02X", pParam->bMic1Sng); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bMic2Sng=%02X", pParam->bMic2Sng); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bMic3Sng=%02X", pParam->bMic3Sng); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bPowerMode=%02X", pParam->bPowerMode); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bSpHiz=%02X", pParam->bSpHiz); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bLdo=%02X", pParam->bLdo); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bPad0Func=%02X", pParam->bPad0Func); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bPad1Func=%02X", pParam->bPad1Func); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bPad2Func=%02X", pParam->bPad2Func); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bAvddLev=%02X", pParam->bAvddLev); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bVrefLev=%02X", pParam->bVrefLev); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDclGain=%02X", pParam->bDclGain); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDclLimit=%02X", pParam->bDclLimit); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bCpMod=%02X", pParam->bCpMod); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bReserved1=%02X", pParam->bReserved1); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bReserved2=%02X", pParam->bReserved2); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bReserved3=%02X", pParam->bReserved3); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bReserved4=%02X", pParam->bReserved4); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bReserved5=%02X", pParam->bReserved5); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dAdHpf=%08lX", pParam->sWaitTime.dAdHpf); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dMic1Cin=%08lX", pParam->sWaitTime.dMic1Cin); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dMic2Cin=%08lX", pParam->sWaitTime.dMic2Cin); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dMic3Cin=%08lX", pParam->sWaitTime.dMic3Cin); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dLine1Cin=%08lX", pParam->sWaitTime.dLine1Cin); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dLine2Cin=%08lX", pParam->sWaitTime.dLine2Cin); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dVrefRdy1=%08lX", pParam->sWaitTime.dVrefRdy1); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dVrefRdy2=%08lX", pParam->sWaitTime.dVrefRdy2); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dHpRdy=%08lX", pParam->sWaitTime.dHpRdy); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dSpRdy=%08lX", pParam->sWaitTime.dSpRdy); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dPdm=%08lX", pParam->sWaitTime.dPdm); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dAnaRdyInterval=%08lX", pParam->sWaitTime.dAnaRdyInterval); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dSvolInterval=%08lX", pParam->sWaitTime.dSvolInterval); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dAnaRdyTimeOut=%08lX", pParam->sWaitTime.dAnaRdyTimeOut); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sWaitTime.dSvolTimeOut=%08lX", pParam->sWaitTime.dSvolTimeOut); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeRegInfoLog + * + * Description: + * Make Reg Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeRegInfoLog +( + const MCDRV_REG_INFO* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bRegType=%02X", pParam->bRegType); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bAddress=%02X", pParam->bAddress); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bData=%02X", pParam->bData); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeClockInfoLog + * + * Description: + * Make Clock Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeClockInfoLog +( + const MCDRV_CLOCK_INFO* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bCkSel=%02X", pParam->bCkSel); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDivR0=%02X", pParam->bDivR0); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDivF0=%02X", pParam->bDivF0); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDivR1=%02X", pParam->bDivR1); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDivF1=%02X", pParam->bDivF1); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bRange0=%02X", pParam->bRange0); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bRange1=%02X", pParam->bRange1); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bBypass=%02X", pParam->bBypass); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeClockSwInfoLog + * + * Description: + * Make Clock Switch Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeClockSwInfoLog +( + const MCDRV_CLKSW_INFO* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bClkSrc=%02X", pParam->bClkSrc); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakePathInfoLog + * + * Description: + * Make Path Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakePathInfoLog +( + const MCDRV_PATH_INFO* pParam +) +{ + UINT8 bBlock, bCh; + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + for(bCh = 0; bCh < HP_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asHpOut[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asHpOut[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < SP_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asSpOut[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asSpOut[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < RC_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asRcOut[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asRcOut[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < LOUT1_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asLout1[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asLout1[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < LOUT2_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asLout2[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asLout2[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < PEAK_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asPeak[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asPeak[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < DIT0_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asDit0[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asDit0[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < DIT1_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asDit1[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asDit1[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < DIT2_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asDit2[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asDit2[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asDac[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asDac[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < AE_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asAe[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asAe[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < CDSP_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asCdsp[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asCdsp[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < ADC0_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asAdc0[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asAdc0[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < ADC1_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asAdc1[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asAdc1[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < MIX_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asMix[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asMix[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } + for(bCh = 0; bCh < BIAS_PATH_CHANNELS; bCh++) + { + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + sprintf(sbStr, " asBias[%d].abSrcOnOff[%d]=%02X", bCh, bBlock, pParam->asBias[bCh].abSrcOnOff[bBlock]); + strcat(gsbLogString, sbStr); + } + } +} + +/**************************************************************************** + * MakeVolInfoLog + * + * Description: + * Make Volume Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeVolInfoLog +( + const MCDRV_VOL_INFO* pParam +) +{ + UINT8 bCh; + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Ad0[%d]=%04X", bCh, (UINT16)pParam->aswD_Ad0[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Ad1[%d]=%04X", bCh, (UINT16)pParam->aswD_Ad1[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < AENG6_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Aeng6[%d]=%04X", bCh, (UINT16)pParam->aswD_Aeng6[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Pdm[%d]=%04X", bCh, (UINT16)pParam->aswD_Pdm[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DTMF_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dtmfb[%d]=%04X", bCh, (UINT16)pParam->aswD_Dtmfb[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dir0[%d]=%04X", bCh, (UINT16)pParam->aswD_Dir0[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dir1[%d]=%04X", bCh, (UINT16)pParam->aswD_Dir1[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dir2[%d]=%04X", bCh, (UINT16)pParam->aswD_Dir2[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Ad0Att[%d]=%04X", bCh, (UINT16)pParam->aswD_Ad0Att[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Ad1Att[%d]=%04X", bCh, (UINT16)pParam->aswD_Ad1Att[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dir0Att[%d]=%04X", bCh, (UINT16)pParam->aswD_Dir0Att[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dir1Att[%d]=%04X", bCh, (UINT16)pParam->aswD_Dir1Att[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dir2Att[%d]=%04X", bCh, (UINT16)pParam->aswD_Dir2Att[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_SideTone[%d]=%04X", bCh, (UINT16)pParam->aswD_SideTone[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DTFM_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_DtmfAtt[%d]=%04X", bCh, (UINT16)pParam->aswD_DtmfAtt[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_DacMaster[%d]=%04X", bCh, (UINT16)pParam->aswD_DacMaster[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_DacVoice[%d]=%04X", bCh, (UINT16)pParam->aswD_DacVoice[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_DacAtt[%d]=%04X", bCh, (UINT16)pParam->aswD_DacAtt[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dit0[%d]=%04X",bCh, (UINT16)pParam->aswD_Dit0[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dit1[%d]=%04X", bCh, (UINT16)pParam->aswD_Dit1[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswD_Dit2[%d]=%04X", bCh, (UINT16)pParam->aswD_Dit2[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Ad0[%d]=%04X", bCh, (UINT16)pParam->aswA_Ad0[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Ad1[%d]=%04X", bCh, (UINT16)pParam->aswA_Ad1[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh <LIN1_VOL_CHANNELS ; bCh++) + { + sprintf(sbStr, " aswA_Lin1[%d]=%04X", bCh, (UINT16)pParam->aswA_Lin1[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < LIN2_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Lin2[%d]=%04X", bCh, (UINT16)pParam->aswA_Lin2[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Mic1[%d]=%04X", bCh, (UINT16)pParam->aswA_Mic1[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Mic2[%d]=%04X", bCh, (UINT16)pParam->aswA_Mic2[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Mic3[%d]=%04X", bCh, (UINT16)pParam->aswA_Mic3[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < HP_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Hp[%d]=%04X", bCh, (UINT16)pParam->aswA_Hp[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < SP_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Sp[%d]=%04X", bCh, (UINT16)pParam->aswA_Sp[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < RC_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Rc[%d]=%04X", bCh, (UINT16)pParam->aswA_Rc[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < LOUT1_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Lout1[%d]=%04X", bCh, (UINT16)pParam->aswA_Lout1[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < LOUT2_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Lout2[%d]=%04X", bCh, (UINT16)pParam->aswA_Lout2[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Mic1Gain[%d]=%04X", bCh, (UINT16)pParam->aswA_Mic1Gain[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Mic2Gain[%d]=%04X", bCh, (UINT16)pParam->aswA_Mic2Gain[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_Mic3Gain[%d]=%04X", bCh, (UINT16)pParam->aswA_Mic3Gain[bCh]); + strcat(gsbLogString, sbStr); + } + for(bCh = 0; bCh < HPGAIN_VOL_CHANNELS; bCh++) + { + sprintf(sbStr, " aswA_HpGain[%d]=%04X", bCh, (UINT16)pParam->aswA_HpGain[bCh]); + strcat(gsbLogString, sbStr); + } +} + +/**************************************************************************** + * MakeDIOInfoLog + * + * Description: + * Make Digital I/O Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeDIOInfoLog +( + const MCDRV_DIO_INFO* pParam +) +{ + CHAR sbStr[80]; + UINT8 bPort, bCh; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + for(bPort = 0; bPort < IOPORT_NUM; bPort++) + { + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bMasterSlave=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bMasterSlave); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bAutoFs=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bAutoFs); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bFs=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bFs); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bBckFs=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bBckFs); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bInterface=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bInterface); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bBckInvert=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bBckInvert); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bPcmHizTim=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bPcmHizTim); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bPcmClkDown=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bPcmClkDown); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bPcmFrame=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bPcmFrame); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDioCommon.bPcmHighPeriod=%02X", bPort, pParam->asPortInfo[bPort].sDioCommon.bPcmHighPeriod); + strcat(gsbLogString, sbStr); + + sprintf(sbStr, " asPortInfo[%d].sDir.wSrcRate=%04X", bPort, pParam->asPortInfo[bPort].sDir.wSrcRate); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDir.sDaFormat.bBitSel=%02X", bPort, pParam->asPortInfo[bPort].sDir.sDaFormat.bBitSel); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDir.sDaFormat.bMode=%02X", bPort, pParam->asPortInfo[bPort].sDir.sDaFormat.bMode); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDir.sPcmFormat.bMono=%02X", bPort, pParam->asPortInfo[bPort].sDir.sPcmFormat.bMono); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDir.sPcmFormat.bOrder=%02X", bPort, pParam->asPortInfo[bPort].sDir.sPcmFormat.bOrder); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDir.sPcmFormat.bLaw=%02X", bPort, pParam->asPortInfo[bPort].sDir.sPcmFormat.bLaw); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDir.sPcmFormat.bBitSel=%02X", bPort, pParam->asPortInfo[bPort].sDir.sPcmFormat.bBitSel); + strcat(gsbLogString, sbStr); + for(bCh = 0; bCh < DIO_CHANNELS; bCh++) + { + sprintf(sbStr, " asPortInfo[%d].sDir.abSlot[%d]=%02X", bPort, bCh, pParam->asPortInfo[bPort].sDir.abSlot[bCh]); + strcat(gsbLogString, sbStr); + } + + sprintf(sbStr, " asPortInfo[%d].sDit.wSrcRate=%04X", bPort, pParam->asPortInfo[bPort].sDit.wSrcRate); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDit.sDaFormat.bBitSel=%02X", bPort, pParam->asPortInfo[bPort].sDit.sDaFormat.bBitSel); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDit.sDaFormat.bMode=%02X", bPort, pParam->asPortInfo[bPort].sDit.sDaFormat.bMode); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDit.sPcmFormat.bMono=%02X", bPort, pParam->asPortInfo[bPort].sDit.sPcmFormat.bMono); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDit.sPcmFormat.bOrder=%02X", bPort, pParam->asPortInfo[bPort].sDit.sPcmFormat.bOrder); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDit.sPcmFormat.bLaw=%02X", bPort, pParam->asPortInfo[bPort].sDit.sPcmFormat.bLaw); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " asPortInfo[%d].sDit.sPcmFormat.bBitSel=%02X", bPort, pParam->asPortInfo[bPort].sDit.sPcmFormat.bBitSel); + strcat(gsbLogString, sbStr); + for(bCh = 0; bCh < DIO_CHANNELS; bCh++) + { + sprintf(sbStr, " asPortInfo[%d].sDit.abSlot[%d]=%02X", bPort, bCh, pParam->asPortInfo[bPort].sDit.abSlot[bCh]); + strcat(gsbLogString, sbStr); + } + } +} + +/**************************************************************************** + * MakeDACInfoLog + * + * Description: + * Make DAC Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeDACInfoLog +( + const MCDRV_DAC_INFO* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bMasterSwap=%02X", pParam->bMasterSwap); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bVoiceSwap=%02X", pParam->bVoiceSwap); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bDcCut=%02X", pParam->bDcCut); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeADCInfoLog + * + * Description: + * Make ADC Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeADCInfoLog +( + const MCDRV_ADC_INFO* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bAgcAdjust=%02X", pParam->bAgcAdjust); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bAgcOn=%02X", pParam->bAgcOn); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bMono=%02X", pParam->bMono); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeSpInfoLog + * + * Description: + * Make Sp Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeSpInfoLog +( + const MCDRV_SP_INFO* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bSwap=%02X", pParam->bSwap); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeDNGInfoLog + * + * Description: + * Make DNG Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeDNGInfoLog +( + const MCDRV_DNG_INFO* pParam +) +{ + CHAR sbStr[80]; + UINT8 bItem; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + for(bItem = 0; bItem < DNG_ITEM_NUM; bItem++) + { + sprintf(sbStr, " abOnOff[%d]=%02X", bItem, pParam->abOnOff[bItem]); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " abThreshold[%d]=%02X", bItem, pParam->abThreshold[bItem]); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " abHold[%d]=%02X", bItem, pParam->abHold[bItem]); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " abAttack[%d]=%02X", bItem, pParam->abAttack[bItem]); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " abRelease[%d]=%02X", bItem, pParam->abRelease[bItem]); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " abTarget[%d]=%02X", bItem, pParam->abTarget[bItem]); + strcat(gsbLogString, sbStr); + } +} + +/**************************************************************************** + * MakeAEInfoLog + * + * Description: + * Make AudioEngine Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeAEInfoLog +( + const MCDRV_AE_INFO* pParam +) +{ + CHAR sbStr[80]; + UINT16 wIdx; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bOnOff=%02X", pParam->bOnOff); + strcat(gsbLogString, sbStr); + + for(wIdx = 0; wIdx < BEX_PARAM_SIZE; wIdx++) + { + sprintf(sbStr, " abBex[%d]=%02X", wIdx, pParam->abBex[wIdx]); + strcat(gsbLogString, sbStr); + } + for(wIdx = 0; wIdx < WIDE_PARAM_SIZE; wIdx++) + { + sprintf(sbStr, " abWide[%d]=%02X", wIdx, pParam->abWide[wIdx]); + strcat(gsbLogString, sbStr); + } + for(wIdx = 0; wIdx < DRC_PARAM_SIZE; wIdx++) + { + sprintf(sbStr, " abDrc[%d]=%02X", wIdx, pParam->abDrc[wIdx]); + strcat(gsbLogString, sbStr); + } + for(wIdx = 0; wIdx < EQ5_PARAM_SIZE; wIdx++) + { + sprintf(sbStr, " abEq5[%d]=%02X", wIdx, pParam->abEq5[wIdx]); + strcat(gsbLogString, sbStr); + } + for(wIdx = 0; wIdx < EQ3_PARAM_SIZE; wIdx++) + { + sprintf(sbStr, " abEq3[%d]=%02X", wIdx, pParam->abEq3[wIdx]); + strcat(gsbLogString, sbStr); + } +} + +/**************************************************************************** + * MakeAEExInfoLog + * + * Description: + * Make AudioEngineEx Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeAEExInfoLog +( + const UINT16* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " param=%04X", *pParam); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeSetCDSPLog + * + * Description: + * Make CDSP Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeSetCDSPLog +( + const UINT16* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " param=%04X", *pParam); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeCDSPParamLog + * + * Description: + * Make CDSP Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeCDSPParamLog +( + const MCDRV_CDSPPARAM* pParam +) +{ + CHAR sbStr[80]; + UINT8 bIdx; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bId=%02X", pParam->bId); + strcat(gsbLogString, sbStr); + for(bIdx = 0; bIdx < 16; bIdx++) + { + sprintf(sbStr, " abParam[%d]=%02X", bIdx, pParam->abParam[bIdx]); + strcat(gsbLogString, sbStr); + } +} + +/**************************************************************************** + * MakeCDSPCBLog + * + * Description: + * Make CDSP Callback Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeCDSPCBLog +( + const void* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " param=%08lX", *(UINT32*)pParam); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakePDMInfoLog + * + * Description: + * Make PDM Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakePDMInfoLog +( + const MCDRV_PDM_INFO* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bClk=%02X", pParam->bClk); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bAgcAdjust=%02X", pParam->bAgcAdjust); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bAgcOn=%02X", pParam->bAgcOn); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bPdmEdge=%02X", pParam->bPdmEdge); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bPdmWait=%02X", pParam->bPdmWait); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bPdmSel=%02X", pParam->bPdmSel); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " bMono=%02X", pParam->bMono); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeDTMFInfoLog + * + * Description: + * Make DTMF Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeDTMFInfoLog +( + const MCDRV_DTMF_INFO* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bOnOff=%02X", pParam->bOnOff); + strcat(gsbLogString, sbStr); + + sprintf(sbStr, " sParam.bSinGen0Vol=%02X", pParam->sParam.bSinGen0Vol); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sParam.bSinGen1Vol=%02X", pParam->sParam.bSinGen1Vol); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sParam.wSinGen0Freq=%04X", pParam->sParam.wSinGen0Freq); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sParam.wSinGen1Freq=%04X", pParam->sParam.wSinGen1Freq); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sParam.bSinGenGate=%02X", pParam->sParam.bSinGenGate); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sParam.=bSinGenMode%02X", pParam->sParam.bSinGenMode); + strcat(gsbLogString, sbStr); + sprintf(sbStr, " sParam.bSinGenLoop=%02X", pParam->sParam.bSinGenLoop); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeGPModeLog + * + * Description: + * Make GPIO mode Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeGPModeLog +( + const MCDRV_GP_MODE* pParam +) +{ + CHAR sbStr[80]; + UINT8 bPadNo; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + for(bPadNo = 0; bPadNo < GPIO_PAD_NUM; bPadNo++) + { + sprintf(sbStr, " abGpDdr[%d]=%02X", bPadNo, pParam->abGpDdr[bPadNo]); + strcat(gsbLogString, sbStr); + } + for(bPadNo = 0; bPadNo < GPIO_PAD_NUM; bPadNo++) + { + sprintf(sbStr, " abGpMode[%d]=%02X", bPadNo, pParam->abGpMode[bPadNo]); + strcat(gsbLogString, sbStr); + } + for(bPadNo = 0; bPadNo < GPIO_PAD_NUM; bPadNo++) + { + sprintf(sbStr, " abGpHost[%d]=%02X", bPadNo, pParam->abGpHost[bPadNo]); + strcat(gsbLogString, sbStr); + } + for(bPadNo = 0; bPadNo < GPIO_PAD_NUM; bPadNo++) + { + sprintf(sbStr, " abGpInvert[%d]=%02X", bPadNo, pParam->abGpInvert[bPadNo]); + strcat(gsbLogString, sbStr); + } +} + +/**************************************************************************** + * MakeGPMaskLog + * + * Description: + * Make GPIO Mask Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeGPMaskLog +( + const UINT8* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " mask=%02X", *pParam); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakeGetSetGPLog + * + * Description: + * Make Get/Set GPIO Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeGetSetGPLog +( + const UINT8* pParam +) +{ + CHAR sbStr[80]; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " HiLow=%02X", *pParam); + strcat(gsbLogString, sbStr); +} + +/**************************************************************************** + * MakePeakLog + * + * Description: + * Make Peak Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakePeakLog +( + const MCDRV_PEAK* pParam +) +{ + CHAR sbStr[80]; + UINT8 bIdx; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + for(bIdx = 0; bIdx < PEAK_CHANNELS; bIdx++) + { + sprintf(sbStr, " aswPeak[%d]=%02X", bIdx, pParam->aswPeak[bIdx]); + strcat(gsbLogString, sbStr); + } +} + +/**************************************************************************** + * MakeSysEQInfoLog + * + * Description: + * Make System EQ Info Parameter log. + * Arguments: + * pParam pointer to parameter + * Return: + * none + * + ****************************************************************************/ +static void MakeSysEQInfoLog +( + const MCDRV_SYSEQ_INFO* pParam +) +{ + CHAR sbStr[80]; + UINT8 bIdx; + + if(pParam == NULL) + { + strcat(gsbLogString, " param=NULL"); + return; + } + + sprintf(sbStr, " bOnOff=%02X", pParam->bOnOff); + strcat(gsbLogString, sbStr); + + for(bIdx = 0; bIdx < 15; bIdx++) + { + sprintf(sbStr, " abParam[%d]=%02X", bIdx, pParam->abParam[bIdx]); + strcat(gsbLogString, sbStr); + } +} + + + + +#endif /* MCDRV_DEBUG_LEVEL */ diff --git a/sound/soc/codecs/mc1n2/mcdebuglog.h b/sound/soc/codecs/mc1n2/mcdebuglog.h new file mode 100644 index 0000000..0a7b0ad --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdebuglog.h @@ -0,0 +1,31 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcdebuglog.h
+ *
+ * Description : MC Driver debug log header
+ *
+ * Version : 1.0.0 2010.08.16
+ *
+ ****************************************************************************/
+
+#ifndef _MCDEBUGLOB_H_
+#define _MCDEBUGLOG_H_
+
+#include "mcdriver.h"
+#include "mcmachdep.h"
+
+#if MCDRV_DEBUG_LEVEL
+
+
+void McDebugLog_CmdIn (UINT32 dCmd, const void* pvParam, UINT32 dUpdateInfo);
+void McDebugLog_CmdOut (UINT32 dCmd, const SINT32* psdRet, const void* pvParam);
+
+void McDebugLog_FuncIn (void* pvFuncName);
+void McDebugLog_FuncOut (void* pvFuncName, const SINT32* psdRet);
+
+
+#endif /* MCDRV_DEBUG_LEVEL */
+
+#endif /* _MCDEBUGLOG_H_ */
diff --git a/sound/soc/codecs/mc1n2/mcdefs.h b/sound/soc/codecs/mc1n2/mcdefs.h new file mode 100644 index 0000000..1407ffd --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdefs.h @@ -0,0 +1,1160 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcdefs.h
+ *
+ * Description : MC Device Definitions
+ *
+ * Version : 1.0.0 2010.07.05
+ *
+ ****************************************************************************/
+
+#ifndef _MCDEFS_H_
+#define _MCDEFS_H_
+
+/* Register Definition
+
+ [Naming Rules]
+
+ MCI_xxx : Registers
+ MCI_xxx_DEF : Default setting of registers
+ MCB_xxx : Miscelleneous bit definition
+*/
+
+/* Registers */
+/* A_ADR */
+#define MCI_RST (0)
+#define MCB_RST (0x01)
+#define MCI_RST_DEF (MCB_RST)
+
+#define MCI_BASE_ADR (1)
+#define MCI_BASE_WINDOW (2)
+
+#define MCI_HW_ID (8)
+#define MCI_HW_ID_DEF (0x79)
+
+#define MCI_ANA_ADR (12)
+#define MCI_ANA_WINDOW (13)
+
+#define MCI_CD_ADR (14)
+#define MCI_CD_WINDOW (15)
+
+#define MCI_MIX_ADR (16)
+#define MCI_MIX_WINDOW (17)
+
+#define MCI_AE_ADR (18)
+#define MCI_AE_WINDOW (19)
+
+#define MCI_BDSP_ST (20)
+#define MCB_EQ5ON (0x80)
+#define MCB_DRCON (0x40)
+#define MCB_EQ3ON (0x20)
+#define MCB_DBEXON (0x08)
+#define MCB_BDSP_ST (0x01)
+
+#define MCI_BDSP_RST (21)
+#define MCB_TRAM_RST (0x02)
+#define MCB_BDSP_RST (0x01)
+
+#define MCI_BDSP_ADR (22)
+#define MCI_BDSP_WINDOW (23)
+
+#define MCI_CDSP_ADR (24)
+#define MCI_CDSP_WINDOW (25)
+
+/* B_ADR(BASE) */
+#define MCI_RSTB (0)
+#define MCB_RSTB (0x10)
+#define MCI_RSTB_DEF (MCB_RSTB)
+
+#define MCI_PWM_DIGITAL (1)
+#define MCB_PWM_DP2 (0x04)
+#define MCB_PWM_DP1 (0x02)
+#define MCI_PWM_DIGITAL_DEF (MCB_PWM_DP2 | MCB_PWM_DP1)
+
+#define MCI_PWM_DIGITAL_1 (3)
+#define MCB_PWM_DPPDM (0x10)
+#define MCB_PWM_DPDI2 (0x08)
+#define MCB_PWM_DPDI1 (0x04)
+#define MCB_PWM_DPDI0 (0x02)
+#define MCB_PWM_DPB (0x01)
+#define MCI_PWM_DIGITAL_1_DEF (MCB_PWM_DPPDM | MCB_PWM_DPDI2 | MCB_PWM_DPDI1 | MCB_PWM_DPDI0 | MCB_PWM_DPB)
+
+#define MCI_PWM_DIGITAL_CDSP (4)
+#define MCB_PWM_DPCDSP (0x00)
+#define MCI_PWM_DIGITAL_CDSP_DEF (MCB_PWM_DPCDSP)
+
+#define MCI_PWM_DIGITAL_BDSP (6)
+#define MCI_PWM_DIGITAL_BDSP_DEF (MCB_PWM_DPBDSP)
+#define MCB_PWM_DPBDSP (0x01)
+
+#define MCI_SD_MSK (9)
+#define MCB_SDIN_MSK2 (0x80)
+#define MCB_SDO_DDR2 (0x10)
+#define MCB_SDIN_MSK1 (0x08)
+#define MCB_SDO_DDR1 (0x01)
+#define MCI_SD_MSK_DEF (MCB_SDIN_MSK2 | MCB_SDIN_MSK1)
+
+#define MCI_SD_MSK_1 (10)
+#define MCB_SDIN_MSK0 (0x80)
+#define MCB_SDO_DDR0 (0x10)
+#define MCI_SD_MSK_1_DEF (MCB_SDIN_MSK0)
+
+#define MCI_BCLK_MSK (11)
+#define MCB_BCLK_MSK2 (0x80)
+#define MCB_BCLK_DDR2 (0x40)
+#define MCB_LRCK_MSK2 (0x20)
+#define MCB_LRCK_DDR2 (0x10)
+#define MCB_BCLK_MSK1 (0x08)
+#define MCB_BCLK_DDR1 (0x04)
+#define MCB_LRCK_MSK1 (0x02)
+#define MCB_LRCK_DDR1 (0x01)
+#define MCI_BCLK_MSK_DEF (MCB_BCLK_MSK2 | MCB_LRCK_MSK2 | MCB_BCLK_MSK1 | MCB_LRCK_MSK1)
+
+#define MCI_BCLK_MSK_1 (12)
+#define MCB_BCLK_MSK0 (0x80)
+#define MCB_BCLK_DDR0 (0x40)
+#define MCB_LRCK_MSK0 (0x20)
+#define MCB_LRCK_DDR0 (0x10)
+#define MCB_PCMOUT_HIZ2 (0x08)
+#define MCB_PCMOUT_HIZ1 (0x04)
+#define MCB_PCMOUT_HIZ0 (0x02)
+#define MCB_ROUTER_MS (0x01)
+#define MCI_BCLK_MSK_1_DEF (MCB_BCLK_MSK0 | MCB_LRCK_MSK0)
+
+#define MCI_BCKP (13)
+#define MCB_DI2_BCKP (0x04)
+#define MCB_DI1_BCKP (0x02)
+#define MCB_DI0_BCKP (0x01)
+#define MCI_BCKP_DEF (0)
+
+#define MCI_BYPASS (21)
+#define MCB_LOCK1 (0x80)
+#define MCB_LOCK0 (0x40)
+#define MCB_BYPASS1 (0x02)
+#define MCB_BYPASS0 (0x01)
+
+#define MCI_EPA_IRQ (22)
+#define MCB_EPA2_IRQ (0x04)
+#define MCB_EPA1_IRQ (0x02)
+#define MCB_EPA0_IRQ (0x01)
+
+#define MCI_PA_FLG (23)
+#define MCB_PA2_FLAG (0x04)
+#define MCB_PA1_FLAG (0x02)
+#define MCB_PA0_FLAG (0x01)
+
+#define MCI_PA_MSK (26)
+#define MCB_PA1_MSK (0x80)
+#define MCB_PA1_DDR (0x40)
+#define MCB_PA0_MSK (0x08)
+#define MCB_PA0_DDR (0x04)
+#define MCI_PA_MSK_DEF (MCB_PA1_MSK | MCB_PA0_MSK)
+
+#define MCI_PA_HOST (28)
+#define MCI_PA_HOST_1 (29)
+
+#define MCI_PA_OUT (30)
+#define MCB_PA_OUT (0x01)
+
+#define MCI_PA_SCU_PA (31)
+#define MCB_PA_SCU_PA0 (0x01)
+#define MCB_PA_SCU_PA1 (0x02)
+
+/* B_ADR(MIX) */
+#define MCI_DIT_INVFLAGL (0)
+#define MCB_DIT0_INVFLAGL (0x20)
+#define MCB_DIT1_INVFLAGL (0x10)
+#define MCB_DIT2_INVFLAGL (0x08)
+
+#define MCI_DIT_INVFLAGR (1)
+#define MCB_DIT0_INVFLAGR (0x20)
+#define MCB_DIT1_INVFLAGR (0x10)
+#define MCB_DIT2_INVFLAGR (0x08)
+
+#define MCI_DIR_VFLAGL (2)
+#define MCB_PDM0_VFLAGL (0x80)
+#define MCB_DIR0_VFLAGL (0x20)
+#define MCB_DIR1_VFLAGL (0x10)
+#define MCB_DIR2_VFLAGL (0x08)
+
+#define MCI_DIR_VFLAGR (3)
+#define MCB_PDM0_VFLAGR (0x80)
+#define MCB_DIR0_VFLAGR (0x20)
+#define MCB_DIR1_VFLAGR (0x10)
+#define MCB_DIR2_VFLAGR (0x08)
+
+#define MCI_AD_VFLAGL (4)
+#define MCB_ADC_VFLAGL (0x80)
+#define MCB_AENG6_VFLAGL (0x20)
+
+#define MCI_AD_VFLAGR (5)
+#define MCB_ADC_VFLAGR (0x80)
+#define MCB_AENG6_VFLAGR (0x20)
+
+#define MCI_AFLAGL (6)
+#define MCB_ADC_AFLAGL (0x40)
+#define MCB_DIR0_AFLAGL (0x20)
+#define MCB_DIR1_AFLAGL (0x10)
+#define MCB_DIR2_AFLAGL (0x04)
+
+#define MCI_AFLAGR (7)
+#define MCB_ADC_AFLAGR (0x40)
+#define MCB_DIR0_AFLAGR (0x20)
+#define MCB_DIR1_AFLAGR (0x10)
+#define MCB_DIR2_AFLAGR (0x04)
+
+#define MCI_DAC_INS_FLAG (8)
+#define MCB_DAC_INS_FLAG (0x80)
+
+#define MCI_INS_FLAG (9)
+#define MCB_ADC_INS_FLAG (0x40)
+#define MCB_DIR0_INS_FLAG (0x20)
+#define MCB_DIR1_INS_FLAG (0x10)
+#define MCB_DIR2_INS_FLAG (0x04)
+
+#define MCI_DAC_FLAGL (10)
+#define MCB_ST_FLAGL (0x80)
+#define MCB_MASTER_OFLAGL (0x40)
+#define MCB_VOICE_FLAGL (0x10)
+#define MCB_DAC_FLAGL (0x02)
+
+#define MCI_DAC_FLAGR (11)
+#define MCB_ST_FLAGR (0x80)
+#define MCB_MASTER_OFLAGR (0x40)
+#define MCB_VOICE_FLAGR (0x10)
+#define MCB_DAC_FLAGR (0x02)
+
+#define MCI_DIT0_INVOLL (12)
+#define MCB_DIT0_INLAT (0x80)
+#define MCB_DIT0_INVOLL (0x7F)
+
+#define MCI_DIT0_INVOLR (13)
+#define MCB_DIT0_INVOLR (0x7F)
+
+#define MCI_DIT1_INVOLL (14)
+#define MCB_DIT1_INLAT (0x80)
+#define MCB_DIT1_INVOLL (0x7F)
+
+#define MCI_DIT1_INVOLR (15)
+#define MCB_DIT1_INVOLR (0x7F)
+
+#define MCI_DIT2_INVOLL (16)
+#define MCB_DIT2_INLAT (0x80)
+#define MCB_DIT2_INVOLL (0x7F)
+
+#define MCI_DIT2_INVOLR (17)
+#define MCB_DIT2_INVOLR (0x7F)
+
+#define MCI_ESRC0_INVOLL (16)
+#define MCI_ESRC0_INVOLR (17)
+
+#define MCI_PDM0_VOLL (24)
+#define MCB_PDM0_LAT (0x80)
+#define MCB_PDM0_VOLL (0x7F)
+
+#define MCI_PDM0_VOLR (25)
+#define MCB_PDM0_VOLR (0x7F)
+
+#define MCI_DIR0_VOLL (28)
+#define MCB_DIR0_LAT (0x80)
+#define MCB_DIR0_VOLL (0x7F)
+
+#define MCI_DIR0_VOLR (29)
+#define MCB_DIR0_VOLR (0x7F)
+
+#define MCI_DIR1_VOLL (30)
+#define MCB_DIR1_LAT (0x80)
+#define MCB_DIR1_VOLL (0x7F)
+
+#define MCI_DIR1_VOLR (31)
+#define MCB_DIR1_VOLR (0x7F)
+
+#define MCI_DIR2_VOLL (32)
+#define MCB_DIR2_LAT (0x80)
+#define MCB_DIR2_VOLL (0x7F)
+
+#define MCI_DIR2_VOLR (33)
+#define MCB_DIR2_VOLR (0x7F)
+/*
+#define MCI_ADC1_VOLL (38?)
+#define MCB_ADC1_LAT (0x80)
+#define MCB_ADC1_VOLL (0x7F)
+
+#define MCI_ADC1_VOLR (39?)
+#define MCB_ADC1_VOLR (0x7F)
+*/
+#define MCI_ADC_VOLL (40)
+#define MCB_ADC_LAT (0x80)
+#define MCB_ADC_VOLL (0x7F)
+
+#define MCI_ADC_VOLR (41)
+#define MCB_ADC_VOLR (0x7F)
+/*
+#define MCI_DTMFB_VOLL (42)
+#define MCI_DTMFB_VOLR (43)
+*/
+#define MCI_AENG6_VOLL (44)
+#define MCB_AENG6_LAT (0x80)
+#define MCB_AENG6_VOLL (0x7F)
+
+#define MCI_AENG6_VOLR (45)
+#define MCB_AENG6_VOLR (0x7F)
+
+#define MCI_DIT_ININTP (50)
+#define MCB_DIT0_ININTP (0x20)
+#define MCB_DIT1_ININTP (0x10)
+#define MCB_DIT2_ININTP (0x08)
+#define MCI_DIT_ININTP_DEF (MCB_DIT0_ININTP | MCB_DIT1_ININTP | MCB_DIT2_ININTP)
+
+#define MCI_DIR_INTP (51)
+#define MCB_PDM0_INTP (0x80)
+#define MCB_DIR0_INTP (0x20)
+#define MCB_DIR1_INTP (0x10)
+#define MCB_DIR2_INTP (0x08)
+#define MCB_ADC2_INTP (0x01)
+#define MCI_DIR_INTP_DEF (MCB_PDM0_INTP | MCB_DIR0_INTP | MCB_DIR1_INTP | MCB_DIR2_INTP)
+
+#define MCI_ADC_INTP (52)
+#define MCB_ADC_INTP (0x80)
+#define MCB_AENG6_INTP (0x20)
+#define MCI_ADC_INTP_DEF (MCB_ADC_INTP | MCB_AENG6_INTP)
+
+#define MCI_ADC_ATTL (54)
+#define MCB_ADC_ALAT (0x80)
+#define MCB_ADC_ATTL (0x7F)
+
+#define MCI_ADC_ATTR (55)
+#define MCB_ADC_ATTR (0x7F)
+
+#define MCI_DIR0_ATTL (56)
+#define MCB_DIR0_ALAT (0x80)
+#define MCB_DIR0_ATTL (0x7F)
+
+#define MCI_DIR0_ATTR (57)
+#define MCB_DIR0_ATTR (0x7F)
+
+#define MCI_DIR1_ATTL (58)
+#define MCB_DIR1_ALAT (0x80)
+#define MCB_DIR1_ATTL (0x7F)
+
+#define MCI_DIR1_ATTR (59)
+#define MCB_DIR1_ATTR (0x7F)
+/*
+#define MCI_ADC2_ATTL (60)
+#define MCI_ADC2_ATTR (61)
+*/
+#define MCI_DIR2_ATTL (62)
+#define MCB_DIR2_ALAT (0x80)
+#define MCB_DIR2_ATTL (0x7F)
+
+#define MCI_DIR2_ATTR (63)
+#define MCB_DIR2_ATTR (0x7F)
+
+#define MCI_AINTP (72)
+#define MCB_ADC_AINTP (0x40)
+#define MCB_DIR0_AINTP (0x20)
+#define MCB_DIR1_AINTP (0x10)
+#define MCB_DIR2_AINTP (0x04)
+#define MCI_AINTP_DEF (MCB_ADC_AINTP | MCB_DIR0_AINTP | MCB_DIR1_AINTP | MCB_DIR2_AINTP)
+
+#define MCI_DAC_INS (74)
+#define MCB_DAC_INS (0x80)
+
+#define MCI_INS (75)
+#define MCB_ADC_INS (0x40)
+#define MCB_DIR0_INS (0x20)
+#define MCB_DIR1_INS (0x10)
+#define MCB_DIR2_INS (0x04)
+
+#define MCI_IINTP (76)
+#define MCB_DAC_IINTP (0x80)
+#define MCB_ADC_IINTP (0x40)
+#define MCB_DIR0_IINTP (0x20)
+#define MCB_DIR1_IINTP (0x10)
+#define MCB_DIR2_IINTP (0x04)
+#define MCI_IINTP_DEF (MCB_DAC_IINTP | MCB_ADC_IINTP | MCB_DIR0_IINTP | MCB_DIR1_IINTP | MCB_DIR2_IINTP)
+
+#define MCI_ST_VOLL (77)
+#define MCB_ST_LAT (0x80)
+#define MCB_ST_VOLL (0x7F)
+
+#define MCI_ST_VOLR (78)
+#define MCB_ST_VOLR (0x7F)
+
+#define MCI_MASTER_OUTL (79)
+#define MCB_MASTER_OLAT (0x80)
+#define MCB_MASTER_OUTL (0x7F)
+
+#define MCI_MASTER_OUTR (80)
+#define MCB_MASTER_OUTR (0x7F)
+
+#define MCI_VOICE_ATTL (83)
+#define MCB_VOICE_LAT (0x80)
+#define MCB_VOICE_ATTL (0x7F)
+
+#define MCI_VOICE_ATTR (84)
+#define MCB_VOICE_ATTR (0x7F)
+/*
+#define MCI_DTMF_ATTL (85)
+#define MCI_DTMF_ATTR (86)
+*/
+#define MCI_DAC_ATTL (89)
+#define MCB_DAC_LAT (0x80)
+#define MCB_DAC_ATTL (0x7F)
+
+#define MCI_DAC_ATTR (90)
+#define MCB_DAC_ATTR (0x7F)
+
+#define MCI_DAC_INTP (93)
+#define MCB_ST_INTP (0x80)
+#define MCB_MASTER_OINTP (0x40)
+#define MCB_VOICE_INTP (0x10)
+/*#define MCB_DTMF_INTP (0x08)*/
+#define MCB_DAC_INTP (0x02)
+#define MCI_DAC_INTP_DEF (MCB_ST_INTP | MCB_MASTER_OINTP | MCB_VOICE_INTP | MCB_DAC_INTP)
+
+#define MCI_SOURCE (110)
+#define MCB_DAC_SOURCE_AD (0x10)
+#define MCB_DAC_SOURCE_DIR2 (0x20)
+#define MCB_DAC_SOURCE_DIR0 (0x30)
+#define MCB_DAC_SOURCE_DIR1 (0x40)
+#define MCB_DAC_SOURCE_MIX (0x70)
+#define MCB_VOICE_SOURCE_AD (0x01)
+#define MCB_VOICE_SOURCE_DIR2 (0x02)
+#define MCB_VOICE_SOURCE_DIR0 (0x03)
+#define MCB_VOICE_SOURCE_DIR1 (0x04)
+#define MCB_VOICE_SOURCE_MIX (0x07)
+
+#define MCI_SWP (111)
+
+#define MCI_SRC_SOURCE (112)
+#define MCB_DIT0_SOURCE_AD (0x10)
+#define MCB_DIT0_SOURCE_DIR2 (0x20)
+#define MCB_DIT0_SOURCE_DIR0 (0x30)
+#define MCB_DIT0_SOURCE_DIR1 (0x40)
+#define MCB_DIT0_SOURCE_MIX (0x70)
+#define MCB_DIT1_SOURCE_AD (0x01)
+#define MCB_DIT1_SOURCE_DIR2 (0x02)
+#define MCB_DIT1_SOURCE_DIR0 (0x03)
+#define MCB_DIT1_SOURCE_DIR1 (0x04)
+#define MCB_DIT1_SOURCE_MIX (0x07)
+
+#define MCI_SRC_SOURCE_1 (113)
+#define MCB_AE_SOURCE_AD (0x10)
+#define MCB_AE_SOURCE_DIR2 (0x20)
+#define MCB_AE_SOURCE_DIR0 (0x30)
+#define MCB_AE_SOURCE_DIR1 (0x40)
+#define MCB_AE_SOURCE_MIX (0x70)
+#define MCB_DIT2_SOURCE_AD (0x01)
+#define MCB_DIT2_SOURCE_DIR2 (0x02)
+#define MCB_DIT2_SOURCE_DIR0 (0x03)
+#define MCB_DIT2_SOURCE_DIR1 (0x04)
+#define MCB_DIT2_SOURCE_MIX (0x07)
+
+#define MCI_ESRC_SOURCE (114)
+
+#define MCI_AENG6_SOURCE (115)
+#define MCB_AENG6_ADC0 (0x00)
+#define MCB_AENG6_PDM (0x01)
+
+#define MCI_EFIFO_SOURCE (116)
+
+#define MCI_SRC_SOURCE_2 (117)
+
+#define MCI_PEAK_METER (121)
+
+#define MCI_OVFL (122)
+#define MCI_OVFR (123)
+
+#define MCI_DIMODE0 (130)
+
+#define MCI_DIRSRC_RATE0_MSB (131)
+
+#define MCI_DIRSRC_RATE0_LSB (132)
+
+#define MCI_DITSRC_RATE0_MSB (133)
+
+#define MCI_DITSRC_RATE0_LSB (134)
+
+#define MCI_DI_FS0 (135)
+
+/* DI Common Parameter */
+#define MCB_DICOMMON_SRC_RATE_SET (0x01)
+
+#define MCI_DI0_SRC (136)
+
+#define MCI_DIX0_START (137)
+#define MCB_DITIM0_START (0x40)
+#define MCB_DIR0_SRC_START (0x08)
+#define MCB_DIR0_START (0x04)
+#define MCB_DIT0_SRC_START (0x02)
+#define MCB_DIT0_START (0x01)
+
+#define MCI_DIX0_FMT (142)
+
+#define MCI_DIR0_CH (143)
+#define MCI_DIR0_CH_DEF (0x10)
+
+#define MCI_DIT0_SLOT (144)
+#define MCI_DIT0_SLOT_DEF (0x10)
+
+#define MCI_HIZ_REDGE0 (145)
+
+#define MCI_PCM_RX0 (146)
+#define MCB_PCM_MONO_RX0 (0x80)
+#define MCI_PCM_RX0_DEF (MCB_PCM_MONO_RX0)
+
+#define MCI_PCM_SLOT_RX0 (147)
+
+#define MCI_PCM_TX0 (148)
+#define MCB_PCM_MONO_TX0 (0x80)
+#define MCI_PCM_TX0_DEF (MCB_PCM_MONO_TX0)
+
+#define MCI_PCM_SLOT_TX0 (149)
+#define MCI_PCM_SLOT_TX0_DEF (0x10)
+
+#define MCI_DIMODE1 (150)
+
+#define MCI_DIRSRC_RATE1_MSB (151)
+#define MCI_DIRSRC_RATE1_LSB (152)
+
+#define MCI_DITSRC_RATE1_MSB (153)
+#define MCI_DITSRC_RATE1_LSB (154)
+
+#define MCI_DI_FS1 (155)
+
+#define MCI_DI1_SRC (156)
+
+#define MCI_DIX1_START (157)
+#define MCB_DITIM1_START (0x40)
+#define MCB_DIR1_SRC_START (0x08)
+#define MCB_DIR1_START (0x04)
+#define MCB_DIT1_SRC_START (0x02)
+#define MCB_DIT1_START (0x01)
+
+#define MCI_DIX1_FMT (162)
+
+#define MCI_DIR1_CH (163)
+#define MCB_DIR1_CH1 (0x10)
+#define MCI_DIR1_CH_DEF (MCB_DIR1_CH1)
+
+#define MCI_DIT1_SLOT (164)
+#define MCB_DIT1_SLOT1 (0x10)
+#define MCI_DIT1_SLOT_DEF (MCB_DIT1_SLOT1)
+
+#define MCI_HIZ_REDGE1 (165)
+
+#define MCI_PCM_RX1 (166)
+#define MCB_PCM_MONO_RX1 (0x80)
+#define MCI_PCM_RX1_DEF (MCB_PCM_MONO_RX1)
+
+#define MCI_PCM_SLOT_RX1 (167)
+
+#define MCI_PCM_TX1 (168)
+#define MCB_PCM_MONO_TX1 (0x80)
+#define MCI_PCM_TX1_DEF (MCB_PCM_MONO_TX1)
+
+#define MCI_PCM_SLOT_TX1 (169)
+#define MCI_PCM_SLOT_TX1_DEF (0x10)
+
+#define MCI_DIMODE2 (170)
+
+#define MCI_DIRSRC_RATE2_MSB (171)
+#define MCI_DIRSRC_RATE2_LSB (172)
+
+#define MCI_DITSRC_RATE2_MSB (173)
+#define MCI_DITSRC_RATE2_LSB (174)
+
+#define MCI_DI_FS2 (175)
+
+#define MCI_DI2_SRC (176)
+
+#define MCI_DIX2_START (177)
+#define MCB_DITIM2_START (0x40)
+#define MCB_DIR2_SRC_START (0x08)
+#define MCB_DIR2_START (0x04)
+#define MCB_DIT2_SRC_START (0x02)
+#define MCB_DIT2_START (0x01)
+
+#define MCI_DIX2_FMT (182)
+
+#define MCI_DIR2_CH (183)
+#define MCB_DIR2_CH1 (0x10)
+#define MCB_DIR2_CH0 (0x01)
+#define MCI_DIR2_CH_DEF (MCB_DIR2_CH1)
+
+#define MCI_DIT2_SLOT (184)
+#define MCB_DIT2_SLOT1 (0x10)
+#define MCB_DIT2_SLOT0 (0x01)
+#define MCI_DIT2_SLOT_DEF (MCB_DIT2_SLOT1)
+
+#define MCI_HIZ_REDGE2 (185)
+
+#define MCI_PCM_RX2 (186)
+#define MCB_PCM_MONO_RX2 (0x80)
+#define MCI_PCM_RX2_DEF (MCB_PCM_MONO_RX2)
+
+#define MCI_PCM_SLOT_RX2 (187)
+
+#define MCI_PCM_TX2 (188)
+#define MCB_PCM_MONO_TX2 (0x80)
+#define MCI_PCM_TX2_DEF (MCB_PCM_MONO_TX2)
+
+#define MCI_PCM_SLOT_TX2 (189)
+#define MCI_PCM_SLOT_TX2_DEF (0x10)
+
+#define MCI_CD_START (192)
+
+#define MCI_CDI_CH (193)
+#define MCI_CDI_CH_DEF (0xE4)
+
+#define MCI_CDO_SLOT (194)
+#define MCI_CDO_SLOT_DEF (0xE4)
+
+#define MCI_PDM_AGC (200)
+#define MCI_PDM_AGC_DEF (0x03)
+
+#define MCI_PDM_START (202)
+#define MCB_PDM_MN (0x02)
+#define MCB_PDM_START (0x01)
+
+#define MCI_PDM_STWAIT (205)
+#define MCI_PDM_STWAIT_DEF (0x40)
+
+#define MCI_HP_ID (206)
+
+#define MCI_CHP_H (207)
+#define MCI_CHP_H_DEF (0x3F)
+
+#define MCI_CHP_M (208)
+#define MCI_CHP_M_DEF (0xEA)
+
+#define MCI_CHP_L (209)
+#define MCI_CHP_L_DEF (0x94)
+
+#define MCI_SINGEN0_VOL (210)
+#define MCI_SINGEN1_VOL (211)
+
+#define MCI_SINGEN_FREQ0_MSB (212)
+#define MCI_SINGEN_FREQ0_LSB (213)
+
+#define MCI_SINGEN_FREQ1_MSB (214)
+#define MCI_SINGEN_FREQ1_LSB (215)
+
+#define MCI_SINGEN_GATETIME (216)
+
+#define MCI_SINGEN_FLAG (217)
+
+/* BADR(AE) */
+#define MCI_BAND0_CEQ0 (0)
+#define MCI_BAND0_CEQ0_H_DEF (0x10)
+
+#define MCI_BAND1_CEQ0 (15)
+#define MCI_BAND1_CEQ0_H_DEF (0x10)
+
+#define MCI_BAND2_CEQ0 (30)
+#define MCI_BAND2_CEQ0_H_DEF (0x10)
+
+#define MCI_BAND3H_CEQ0 (45)
+#define MCI_BAND3H_CEQ0_H_DEF (0x10)
+
+#define MCI_BAND4H_CEQ0 (75)
+#define MCI_BAND4H_CEQ0_H_DEF (0x10)
+
+#define MCI_BAND5_CEQ0 (105)
+#define MCI_BAND5_CEQ0_H_DEF (0x10)
+
+#define MCI_BAND6H_CEQ0 (120)
+#define MCI_BAND6H_CEQ0_H_DEF (0x10)
+
+#define MCI_BAND7H_CEQ0 (150)
+#define MCI_BAND7H_CEQ0_H_DEF (0x10)
+
+#define MCI_PDM_CHP0_H (240)
+#define MCI_PDM_CHP0_H_DEF (0x3F)
+#define MCI_PDM_CHP0_M (241)
+#define MCI_PDM_CHP0_M_DEF (0xEA)
+#define MCI_PDM_CHP0_L (242)
+#define MCI_PDM_CHP0_L_DEF (0x94)
+
+#define MCI_PDM_CHP1_H (243)
+#define MCI_PDM_CHP1_H_DEF (0xC0)
+#define MCI_PDM_CHP1_M (244)
+#define MCI_PDM_CHP1_M_DEF (0x15)
+#define MCI_PDM_CHP1_L (245)
+#define MCI_PDM_CHP1_L_DEF (0x6C)
+
+#define MCI_PDM_CHP2_H (246)
+#define MCI_PDM_CHP2_H_DEF (0x00)
+#define MCI_PDM_CHP2_M (247)
+#define MCI_PDM_CHP2_M_DEF (0x00)
+#define MCI_PDM_CHP2_L (248)
+#define MCI_PDM_CHP2_L_DEF (0x00)
+
+#define MCI_PDM_CHP3_H (249)
+#define MCI_PDM_CHP3_H_DEF (0x3F)
+#define MCI_PDM_CHP3_M (250)
+#define MCI_PDM_CHP3_M_DEF (0xD5)
+#define MCI_PDM_CHP3_L (251)
+#define MCI_PDM_CHP3_L_DEF (0x29)
+
+#define MCI_PDM_CHP4_H (252)
+#define MCI_PDM_CHP4_H_DEF (0x00)
+#define MCI_PDM_CHP4_M (253)
+#define MCI_PDM_CHP4_M_DEF (0x00)
+#define MCI_PDM_CHP4_L (254)
+#define MCI_PDM_CHP4_L_DEF (0x00)
+
+/* B_ADR(CDSP) */
+#define MCI_CDSP_SAVEOFF (0)
+
+#define MCI_OFIFO_LVL (1)
+
+#define MCI_EFIFO_LVL (2)
+
+#define MCI_DEC_POS_24 (4)
+#define MCI_DEC_POS_16 (5)
+#define MCI_DEC_POS_8 (6)
+#define MCI_DEC_POS_0 (7)
+
+#define MCI_ENC_POS_24 (8)
+#define MCI_ENC_POS_16 (9)
+#define MCI_ENC_POS_8 (10)
+#define MCI_ENC_POS_0 (11)
+
+#define MCI_DEC_ERR (12)
+#define MCI_ENC_ERR (13)
+
+#define MCI_FIFO_RST (14)
+
+#define MCI_DEC_ENC_START (15)
+
+#define MCI_FIFO4CH (16)
+
+#define MCI_DEC_CTL15 (19)
+
+#define MCI_DEC_GPR15 (35)
+
+#define MCI_DEC_SFR1 (51)
+#define MCI_DEC_SFR0 (52)
+
+#define MCI_ENC_CTL15 (53)
+
+#define MCI_ENC_GPR15 (69)
+
+#define MCI_ENC_SFR1 (85)
+#define MCI_ENC_SFR0 (86)
+
+#define MCI_JOEMP (92)
+#define MCB_JOEMP (0x80)
+#define MCB_JOPNT (0x40)
+#define MCB_OOVF_FLG (0x08)
+#define MCB_OUDF_FLG (0x04)
+#define MCB_OEMP_FLG (0x02)
+#define MCB_OPNT_FLG (0x01)
+#define MCI_JOEMP_DEF (MCB_JOEMP | MCB_OEMP_FLG)
+
+#define MCI_JEEMP (93)
+#define MCB_JEEMP (0x80)
+#define MCB_JEPNT (0x40)
+#define MCB_EOVF_FLG (0x08)
+#define MCB_EUDF_FLG (0x04)
+#define MCB_EEMP_FLG (0x02)
+#define MCB_EPNT_FLG (0x01)
+#define MCI_JEEMP_DEF (MCB_JEEMP | MCB_EEMP_FLG)
+
+#define MCI_DEC_FLG (96)
+#define MCI_ENC_FLG (97)
+
+#define MCI_DEC_GPR_FLG (98)
+#define MCI_ENC_GPR_FLG (99)
+
+#define MCI_EOPNT (101)
+
+#define MCI_EDEC (105)
+#define MCI_EENC (106)
+
+#define MCI_EDEC_GPR (107)
+#define MCI_EENC_GPR (108)
+
+#define MCI_CDSP_SRST (110)
+#define MCB_CDSP_FMODE (0x10)
+#define MCB_CDSP_MSAVE (0x08)
+#define MCB_CDSP_SRST (0x01)
+#define MCI_CDSP_SRST_DEF (MCB_CDSP_SRST)
+
+#define MCI_CDSP_SLEEP (112)
+
+#define MCI_CDSP_ERR (113)
+
+#define MCI_CDSP_MAR_MSB (114)
+#define MCI_CDSP_MAR_LSB (115)
+
+#define MCI_OFIFO_IRQ_PNT (116)
+
+#define MCI_EFIFO_IRQ_PNT (122)
+
+#define MCI_CDSP_FLG (128)
+
+#define MCI_ECDSP_ERR (129)
+
+/* B_ADR(CD) */
+#define MCI_DPADIF (1)
+#define MCB_CLKSRC (0x80)
+#define MCB_CLKBUSY (0x40)
+#define MCB_CLKINPUT (0x20)
+#define MCB_DPADIF (0x10)
+#define MCB_DP0_CLKI1 (0x08)
+#define MCB_DP0_CLKI0 (0x01)
+#define MCI_DPADIF_DEF (MCB_DPADIF|MCB_DP0_CLKI1|MCB_DP0_CLKI0)
+
+#define MCI_CKSEL (4)
+#define MCB_CK1SEL (0x80)
+#define MCB_CK0SEL (0x40)
+
+#define MCI_CD_HW_ID (8)
+#define MCI_CD_HW_ID_DEF (0x79)
+
+#define MCI_PLL_RST (15)
+#define MCB_PLLRST0 (0x01)
+#define MCI_PLL_RST_DEF (MCB_PLLRST0)
+
+#define MCI_DIVR0 (16)
+#define MCI_DIVR0_DEF (0x0D)
+
+#define MCI_DIVF0 (17)
+#define MCI_DIVF0_DEF (0x55)
+
+#define MCI_DIVR1 (18)
+#define MCI_DIVR1_DEF (0x02)
+
+#define MCI_DIVF1 (19)
+#define MCI_DIVF1_DEF (0x48)
+
+#define MCI_AD_AGC (70)
+#define MCI_AD_AGC_DEF (0x03)
+
+#define MCI_AD_START (72)
+#define MCI_AD_START_DEF (0x00)
+#define MCB_AD_START (0x01)
+
+#define MCI_DCCUTOFF (77)
+#define MCI_DCCUTOFF_DEF (0x00)
+
+#define MCI_DAC_CONFIG (78)
+#define MCI_DAC_CONFIG_DEF (0x02)
+#define MCB_NSMUTE (0x02)
+#define MCB_DACON (0x01)
+
+#define MCI_DCL (79)
+#define MCI_DCL_DEF (0x00)
+
+#define MCI_SYS_CEQ0_19_12 (80)
+#define MCI_SYS_CEQ0_19_12_DEF (0x10)
+
+#define MCI_SYS_CEQ0_11_4 (81)
+#define MCI_SYS_CEQ0_11_4_DEF (0xC4)
+
+#define MCI_SYS_CEQ0_3_0 (82)
+#define MCI_SYS_CEQ0_3_0_DEF (0x50)
+
+#define MCI_SYS_CEQ1_19_12 (83)
+#define MCI_SYS_CEQ1_19_12_DEF (0x12)
+
+#define MCI_SYS_CEQ1_11_4 (84)
+#define MCI_SYS_CEQ1_11_4_DEF (0xC4)
+
+#define MCI_SYS_CEQ1_3_0 (85)
+#define MCI_SYS_CEQ1_3_0_DEF (0x40)
+
+#define MCI_SYS_CEQ2_19_12 (86)
+#define MCI_SYS_CEQ2_19_12_DEF (0x02)
+
+#define MCI_SYS_CEQ2_11_4 (87)
+#define MCI_SYS_CEQ2_11_4_DEF (0xA9)
+
+#define MCI_SYS_CEQ2_3_0 (88)
+#define MCI_SYS_CEQ2_3_0_DEF (0x60)
+
+#define MCI_SYS_CEQ3_19_12 (89)
+#define MCI_SYS_CEQ3_19_12_DEF (0xED)
+
+#define MCI_SYS_CEQ3_11_4 (90)
+#define MCI_SYS_CEQ3_11_4_DEF (0x3B)
+
+#define MCI_SYS_CEQ3_3_0 (91)
+#define MCI_SYS_CEQ3_3_0_DEF (0xC0)
+
+#define MCI_SYS_CEQ4_19_12 (92)
+#define MCI_SYS_CEQ4_19_12_DEF (0xFC)
+
+#define MCI_SYS_CEQ4_11_4 (93)
+#define MCI_SYS_CEQ4_11_4_DEF (0x92)
+
+#define MCI_SYS_CEQ4_3_0 (94)
+#define MCI_SYS_CEQ4_3_0_DEF (0x40)
+
+#define MCI_SYSTEM_EQON (95)
+#define MCB_SYSEQ_INTP (0x20)
+#define MCB_SYSEQ_FLAG (0x10)
+#define MCB_SYSTEM_EQON (0x01)
+#define MCI_SYSTEM_EQON_DEF (MCB_SYSEQ_INTP|MCB_SYSTEM_EQON)
+
+/* B_ADR(ANA) */
+#define MCI_ANA_RST (0)
+#define MCI_ANA_RST_DEF (0x01)
+
+#define MCI_PWM_ANALOG_0 (2)
+#define MCB_PWM_VR (0x01)
+#define MCB_PWM_CP (0x02)
+#define MCB_PWM_REFA (0x04)
+#define MCB_PWM_LDOA (0x08)
+#define MCI_PWM_ANALOG_0_DEF (MCB_PWM_VR|MCB_PWM_CP|MCB_PWM_REFA|MCB_PWM_LDOA)
+
+#define MCI_PWM_ANALOG_1 (3)
+#define MCB_PWM_SPL1 (0x01)
+#define MCB_PWM_SPL2 (0x02)
+#define MCB_PWM_SPR1 (0x04)
+#define MCB_PWM_SPR2 (0x08)
+#define MCB_PWM_HPL (0x10)
+#define MCB_PWM_HPR (0x20)
+#define MCB_PWM_ADL (0x40)
+#define MCB_PWM_ADR (0x80)
+#define MCI_PWM_ANALOG_1_DEF (MCB_PWM_SPL1|MCB_PWM_SPL2|MCB_PWM_SPR1|MCB_PWM_SPR2|MCB_PWM_HPL|MCB_PWM_HPR|MCB_PWM_ADL|MCB_PWM_ADR)
+
+#define MCI_PWM_ANALOG_2 (4)
+#define MCB_PWM_LO1L (0x01)
+#define MCB_PWM_LO1R (0x02)
+#define MCB_PWM_LO2L (0x04)
+#define MCB_PWM_LO2R (0x08)
+#define MCB_PWM_RC1 (0x10)
+#define MCB_PWM_RC2 (0x20)
+#define MCI_PWM_ANALOG_2_DEF (MCB_PWM_LO1L|MCB_PWM_LO1R|MCB_PWM_LO2L|MCB_PWM_LO2R|MCB_PWM_RC1|MCB_PWM_RC2)
+
+#define MCI_PWM_ANALOG_3 (5)
+#define MCB_PWM_MB1 (0x01)
+#define MCB_PWM_MB2 (0x02)
+#define MCB_PWM_MB3 (0x04)
+#define MCB_PWM_DAL (0x08)
+#define MCB_PWM_DAR (0x10)
+#define MCI_PWM_ANALOG_3_DEF (MCB_PWM_MB1|MCB_PWM_MB2|MCB_PWM_MB3|MCB_PWM_DAL|MCB_PWM_DAR)
+
+#define MCI_PWM_ANALOG_4 (6)
+#define MCB_PWM_MC1 (0x10)
+#define MCB_PWM_MC2 (0x20)
+#define MCB_PWM_MC3 (0x40)
+#define MCB_PWM_LI (0x80)
+#define MCI_PWM_ANALOG_4_DEF (MCB_PWM_MC1|MCB_PWM_MC2|MCB_PWM_MC3|MCB_PWM_LI)
+
+#define MCI_BUSY1 (12)
+#define MCB_RC_BUSY (0x20)
+#define MCB_HPL_BUSY (0x10)
+#define MCB_SPL_BUSY (0x08)
+
+#define MCI_BUSY2 (13)
+#define MCB_HPR_BUSY (0x10)
+#define MCB_SPR_BUSY (0x08)
+
+#define MCI_APMOFF (16)
+#define MCB_APMOFF_SP (0x01)
+#define MCB_APMOFF_HP (0x02)
+#define MCB_APMOFF_RC (0x04)
+
+#define MCI_DIF_LINE (24)
+#define MCI_DIF_LINE_DEF (0x00)
+
+#define MCI_LI1VOL_L (25)
+#define MCI_LI1VOL_L_DEF (0x00)
+#define MCB_ALAT_LI1 (0x40)
+#define MCB_LI1VOL_L (0x1F)
+
+#define MCI_LI1VOL_R (26)
+#define MCI_LI1VOL_R_DEF (0x00)
+#define MCB_LI1VOL_R (0x1F)
+
+#define MCI_LI2VOL_L (27)
+#define MCI_LI2VOL_L_DEF (0x00)
+#define MCB_ALAT_LI2 (0x40)
+#define MCB_LI2VOL_L (0x1F)
+
+#define MCI_LI2VOL_R (28)
+#define MCI_LI2VOL_R_DEF (0x00)
+#define MCB_LI2VOL_R (0x1F)
+
+#define MCI_MC1VOL (29)
+#define MCI_MC1VOL_DEF (0x00)
+#define MCB_MC1VOL (0x1F)
+
+#define MCI_MC2VOL (30)
+#define MCI_MC2VOL_DEF (0x00)
+#define MCB_MC2VOL (0x1F)
+
+#define MCI_MC3VOL (31)
+#define MCI_MC3VOL_DEF (0x00)
+#define MCB_MC3VOL (0x1F)
+
+#define MCI_ADVOL_L (32)
+#define MCI_ADVOL_L_DEF (0x00)
+#define MCB_ALAT_AD (0x40)
+#define MCB_ADVOL_L (0x1F)
+
+#define MCI_ADVOL_R (33)
+#define MCB_ADVOL_R (0x1F)
+
+#define MCI_HPVOL_L (35)
+#define MCB_ALAT_HP (0x40)
+#define MCB_SVOL_HP (0x20)
+#define MCB_HPVOL_L (0x1F)
+#define MCI_HPVOL_L_DEF (MCB_SVOL_HP)
+
+#define MCI_HPVOL_R (36)
+#define MCI_HPVOL_R_DEF (0x00)
+#define MCB_HPVOL_R (0x1F)
+
+#define MCI_SPVOL_L (37)
+#define MCB_ALAT_SP (0x40)
+#define MCB_SVOL_SP (0x20)
+#define MCB_SPVOL_L (0x1F)
+#define MCI_SPVOL_L_DEF (MCB_SVOL_SP)
+
+#define MCI_SPVOL_R (38)
+#define MCI_SPVOL_R_DEF (0x00)
+#define MCB_SPVOL_R (0x1F)
+
+#define MCI_RCVOL (39)
+#define MCB_SVOL_RC (0x20)
+#define MCB_RCVOL (0x1F)
+#define MCI_RCVOL_DEF (MCB_SVOL_RC)
+
+#define MCI_LO1VOL_L (40)
+#define MCI_LO1VOL_L_DEF (0x20)
+#define MCB_ALAT_LO1 (0x40)
+#define MCB_LO1VOL_L (0x1F)
+
+#define MCI_LO1VOL_R (41)
+#define MCI_LO1VOL_R_DEF (0x00)
+#define MCB_LO1VOL_R (0x1F)
+
+#define MCI_LO2VOL_L (42)
+#define MCI_LO2VOL_L_DEF (0x20)
+#define MCB_ALAT_LO2 (0x40)
+#define MCB_LO2VOL_L (0x1F)
+
+#define MCI_LO2VOL_R (43)
+#define MCI_LO2VOL_R_DEF (0x00)
+#define MCB_LO2VOL_R (0x1F)
+
+#define MCI_SP_MODE (44)
+#define MCB_SPR_HIZ (0x20)
+#define MCB_SPL_HIZ (0x10)
+#define MCB_SPMN (0x02)
+#define MCB_SP_SWAP (0x01)
+
+#define MCI_MC_GAIN (45)
+#define MCI_MC_GAIN_DEF (0x00)
+#define MCB_MC2SNG (0x40)
+#define MCB_MC2GAIN (0x30)
+#define MCB_MC1SNG (0x04)
+#define MCB_MC1GAIN (0x03)
+
+#define MCI_MC3_GAIN (46)
+#define MCI_MC3_GAIN_DEF (0x00)
+#define MCB_MC3SNG (0x04)
+#define MCB_MC3GAIN (0x03)
+
+#define MCI_RDY_FLAG (47)
+#define MCB_LDO_RDY (0x80)
+#define MCB_VREF_RDY (0x40)
+#define MCB_SPRDY_R (0x20)
+#define MCB_SPRDY_L (0x10)
+#define MCB_HPRDY_R (0x08)
+#define MCB_HPRDY_L (0x04)
+#define MCB_CPPDRDY (0x02)
+
+/* analog mixer common */
+#define MCB_LI1MIX (0x01)
+#define MCB_M1MIX (0x08)
+#define MCB_M2MIX (0x10)
+#define MCB_M3MIX (0x20)
+#define MCB_DAMIX (0x40)
+#define MCB_DARMIX (0x40)
+#define MCB_DALMIX (0x80)
+
+#define MCB_MONO_DA (0x40)
+#define MCB_MONO_LI1 (0x01)
+
+#define MCI_ADL_MIX (50)
+#define MCI_ADL_MONO (51)
+#define MCI_ADR_MIX (52)
+#define MCI_ADR_MONO (53)
+
+#define MCI_LO1L_MIX (55)
+#define MCI_LO1L_MONO (56)
+#define MCI_LO1R_MIX (57)
+
+#define MCI_LO2L_MIX (58)
+#define MCI_LO2L_MONO (59)
+#define MCI_LO2R_MIX (60)
+
+#define MCI_HPL_MIX (61)
+#define MCI_HPL_MONO (62)
+#define MCI_HPR_MIX (63)
+
+#define MCI_SPL_MIX (64)
+#define MCI_SPL_MONO (65)
+#define MCI_SPR_MIX (66)
+#define MCI_SPR_MONO (67)
+
+#define MCI_RC_MIX (69)
+
+#define MCI_CPMOD (72)
+
+#define MCI_HP_GAIN (77)
+
+#define MCI_LEV (79)
+#define MCB_AVDDLEV (0x07)
+#define MCI_LEV_DEF (0x24)
+
+#define MCI_DNGATRT_HP (82)
+#define MCI_DNGATRT_HP_DEF (0x23)
+
+#define MCI_DNGTARGET_HP (83)
+#define MCI_DNGTARGET_HP_DEF (0x50)
+
+#define MCI_DNGON_HP (84)
+#define MCI_DNGON_HP_DEF (0x54)
+
+#define MCI_DNGATRT_SP (85)
+#define MCI_DNGATRT_SP_DEF (0x23)
+
+#define MCI_DNGTARGET_SP (86)
+#define MCI_DNGTARGET_SP_DEF (0x50)
+
+#define MCI_DNGON_SP (87)
+#define MCI_DNGON_SP_DEF (0x54)
+
+#define MCI_DNGATRT_RC (88)
+#define MCI_DNGATRT_RC_DEF (0x23)
+
+#define MCI_DNGTARGET_RC (89)
+#define MCI_DNGTARGET_RC_DEF (0x50)
+
+#define MCI_DNGON_RC (90)
+#define MCI_DNGON_RC_DEF (0x54)
+
+#define MCI_AP_A1 (123)
+#define MCB_AP_CP_A (0x10)
+#define MCB_AP_HPL_A (0x02)
+#define MCB_AP_HPR_A (0x01)
+
+#define MCI_AP_A2 (124)
+#define MCB_AP_RC1_A (0x20)
+#define MCB_AP_RC2_A (0x10)
+#define MCB_AP_SPL1_A (0x08)
+#define MCB_AP_SPR1_A (0x04)
+#define MCB_AP_SPL2_A (0x02)
+#define MCB_AP_SPR2_A (0x01)
+
+#endif /* __MCDEFS_H__ */
diff --git a/sound/soc/codecs/mc1n2/mcdevif.c b/sound/soc/codecs/mc1n2/mcdevif.c new file mode 100644 index 0000000..3f99b1c --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdevif.c @@ -0,0 +1,317 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcdevif.c
+ *
+ * Description : MC Driver device interface
+ *
+ * Version : 1.0.0 2010.09.10
+ *
+ ****************************************************************************/
+
+
+#include "mcdevif.h"
+#include "mcservice.h"
+#include "mcresctrl.h"
+#include "mcmachdep.h"
+#if MCDRV_DEBUG_LEVEL
+#include "mcdebuglog.h"
+#endif
+
+
+
+static MCDRV_PACKET* gpsPacket = NULL;
+
+/****************************************************************************
+ * McDevIf_AllocPacketBuf
+ *
+ * Description:
+ * allocate the buffer for register setting packets.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR
+ *
+ ****************************************************************************/
+SINT32 McDevIf_AllocPacketBuf
+(
+ void
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McDevIf_AllocPacketBuf");
+#endif
+
+ gpsPacket = McResCtrl_AllocPacketBuf();
+ if(gpsPacket == NULL)
+ {
+ sdRet = MCDRV_ERROR;
+ }
+ else
+ {
+ McDevIf_ClearPacket();
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McDevIf_AllocPacketBuf", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McDevIf_ReleasePacketBuf
+ *
+ * Description:
+ * Release the buffer for register setting packets.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McDevIf_ReleasePacketBuf
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McDevIf_ReleasePacketBuf");
+#endif
+
+ McResCtrl_ReleasePacketBuf();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McDevIf_ReleasePacketBuf", 0);
+#endif
+}
+
+/****************************************************************************
+ * McDevIf_ClearPacket
+ *
+ * Description:
+ * Clear packets.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McDevIf_ClearPacket
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McDevIf_ClearPacket");
+#endif
+
+ if(gpsPacket == NULL)
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = MCDRV_ERROR;
+ McDebugLog_FuncOut("McDevIf_ClearPacket", &sdRet);
+ #endif
+ return;
+ }
+
+ gpsPacket[0].dDesc = MCDRV_PACKET_TYPE_TERMINATE;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McDevIf_ClearPacket", 0);
+#endif
+}
+
+/****************************************************************************
+ * McDevIf_AddPacket
+ *
+ * Description:
+ * Add a packet.
+ * Arguments:
+ * dDesc packet info
+ * bData packet data
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McDevIf_AddPacket
+(
+ UINT32 dDesc,
+ UINT8 bData
+)
+{
+ UINT32 i;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McDevIf_AddPacket");
+#endif
+
+ if(gpsPacket == NULL)
+ {
+ }
+ else
+ {
+ for(i = 0; i < MCDRV_MAX_PACKETS; i++)
+ {
+ if(gpsPacket[i].dDesc == MCDRV_PACKET_TYPE_TERMINATE)
+ {
+ break;
+ }
+ }
+ if(i >= MCDRV_MAX_PACKETS)
+ {
+ McDevIf_ExecutePacket();
+ i = 0;
+ }
+
+ gpsPacket[i].dDesc = dDesc;
+ gpsPacket[i].bData = bData;
+ gpsPacket[i+1UL].dDesc = MCDRV_PACKET_TYPE_TERMINATE;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McDevIf_AddPacket", 0);
+#endif
+}
+
+/****************************************************************************
+ * McDevIf_AddPacketRepeat
+ *
+ * Description:
+ * Add packets to set data at same register over agian.
+ * Arguments:
+ * dDesc packet info
+ * pbData poointer to packet data
+ * wDataCount packet data count
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McDevIf_AddPacketRepeat
+(
+ UINT32 dDesc,
+ const UINT8* pbData,
+ UINT16 wDataCount
+)
+{
+ UINT16 wCount;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McDevIf_AddPacketRepeat");
+#endif
+
+ for(wCount = 0; wCount < wDataCount; wCount++)
+ {
+ McDevIf_AddPacket(dDesc, pbData[wCount]);
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McDevIf_AddPacketRepeat", 0);
+#endif
+}
+
+/****************************************************************************
+ * McDevIf_ExecutePacket
+ *
+ * Description:
+ * Execute sequence for register setting.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_ARGUMENT
+ *
+ ****************************************************************************/
+SINT32 McDevIf_ExecutePacket
+(
+ void
+)
+{
+ SINT32 sdRet;
+ SINT16 swPacketIndex;
+ UINT32 dPacketType;
+ UINT32 dParam1;
+ UINT32 dParam2;
+ UINT16 wAddress;
+ UINT16 wRegType;
+ MCDRV_UPDATE_MODE eUpdateMode;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McDevIf_ExecutePacket");
+#endif
+
+ if(gpsPacket == NULL)
+ {
+ sdRet = MCDRV_ERROR_RESOURCEOVER;
+ }
+ else
+ {
+ sdRet = MCDRV_SUCCESS;
+
+ McResCtrl_InitRegUpdate();
+ swPacketIndex = 0;
+ while ((MCDRV_PACKET_TYPE_TERMINATE != (gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_TYPE_MASK)) && (sdRet == MCDRV_SUCCESS))
+ {
+ dPacketType = gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_TYPE_MASK;
+ switch (dPacketType)
+ {
+ case MCDRV_PACKET_TYPE_WRITE:
+ case MCDRV_PACKET_TYPE_FORCE_WRITE:
+ wRegType = (UINT16)(gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_REGTYPE_MASK);
+ wAddress = (UINT16)(gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_ADR_MASK);
+ if (MCDRV_PACKET_TYPE_WRITE == dPacketType)
+ {
+ eUpdateMode = eMCDRV_UPDATE_NORMAL;
+ }
+ else if (MCDRV_PACKET_TYPE_FORCE_WRITE == dPacketType)
+ {
+ eUpdateMode = eMCDRV_UPDATE_FORCE;
+ }
+ else
+ {
+ eUpdateMode = eMCDRV_UPDATE_DUMMY;
+ }
+ McResCtrl_AddRegUpdate(wRegType, wAddress, gpsPacket[swPacketIndex].bData, eUpdateMode);
+ break;
+
+ case MCDRV_PACKET_TYPE_TIMWAIT:
+ McResCtrl_ExecuteRegUpdate();
+ McResCtrl_InitRegUpdate();
+ dParam1 = gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_TIME_MASK;
+ McSrv_Sleep(dParam1);
+ break;
+
+ case MCDRV_PACKET_TYPE_EVTWAIT:
+ McResCtrl_ExecuteRegUpdate();
+ McResCtrl_InitRegUpdate();
+ dParam1 = gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_EVT_MASK;
+ dParam2 = gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_EVTPRM_MASK;
+ sdRet = McResCtrl_WaitEvent(dParam1, dParam2);
+ break;
+
+ default:
+ sdRet = MCDRV_ERROR;
+ break;
+ }
+
+ swPacketIndex++;
+ }
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McResCtrl_ExecuteRegUpdate();
+ }
+ McDevIf_ClearPacket();
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McDevIf_ExecutePacket", &sdRet);
+#endif
+
+ return sdRet;
+}
+
diff --git a/sound/soc/codecs/mc1n2/mcdevif.h b/sound/soc/codecs/mc1n2/mcdevif.h new file mode 100644 index 0000000..4cc7fd5 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdevif.h @@ -0,0 +1,81 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcdevif.h
+ *
+ * Description : MC Driver device interface header
+ *
+ * Version : 1.0.0 2010.07.05
+ *
+ ****************************************************************************/
+
+#ifndef _MCDEVIF_H_
+#define _MCDEVIF_H_
+
+#include "mctypedef.h"
+#include "mcdriver.h"
+
+/* packet */
+typedef struct
+{
+ UINT32 dDesc;
+ UINT8 bData;
+} MCDRV_PACKET;
+
+#define MCDRV_MAX_PACKETS (256UL)
+
+/* packet dDesc */
+/* packet type */
+#define MCDRV_PACKET_TYPE_WRITE (0x10000000UL)
+#define MCDRV_PACKET_TYPE_FORCE_WRITE (0x20000000UL)
+#define MCDRV_PACKET_TYPE_TIMWAIT (0x30000000UL)
+#define MCDRV_PACKET_TYPE_EVTWAIT (0x40000000UL)
+#define MCDRV_PACKET_TYPE_TERMINATE (0xF0000000UL)
+
+#define MCDRV_PACKET_TYPE_MASK (0xF0000000UL)
+
+/* reg type */
+#define MCDRV_PACKET_REGTYPE_A (0x00000000UL)
+#define MCDRV_PACKET_REGTYPE_B_BASE (0x00001000UL)
+#define MCDRV_PACKET_REGTYPE_B_MIXER (0x00002000UL)
+#define MCDRV_PACKET_REGTYPE_B_AE (0x00003000UL)
+#define MCDRV_PACKET_REGTYPE_B_CDSP (0x00004000UL)
+#define MCDRV_PACKET_REGTYPE_B_CODEC (0x00005000UL)
+#define MCDRV_PACKET_REGTYPE_B_ANA (0x00006000UL)
+
+#define MCDRV_PACKET_REGTYPE_MASK (0x0000F000UL)
+#define MCDRV_PACKET_ADR_MASK (0x00000FFFUL)
+
+/* event */
+#define MCDRV_EVT_INSFLG (0x00010000UL)
+#define MCDRV_EVT_ALLMUTE (0x00020000UL)
+#define MCDRV_EVT_DACMUTE (0x00030000UL)
+#define MCDRV_EVT_DITMUTE (0x00040000UL)
+#define MCDRV_EVT_SVOL_DONE (0x00050000UL)
+#define MCDRV_EVT_APM_DONE (0x00060000UL)
+#define MCDRV_EVT_ANA_RDY (0x00070000UL)
+#define MCDRV_EVT_SYSEQ_FLAG_RESET (0x00080000UL)
+#define MCDRV_EVT_CLKBUSY_RESET (0x00090000UL)
+#define MCDRV_EVT_CLKSRC_SET (0x000A0000UL)
+#define MCDRV_EVT_CLKSRC_RESET (0x000B0000UL)
+#define MCDRV_EVT_ADCMUTE (0x000C0000UL)
+
+
+#define MCDRV_PACKET_EVT_MASK (0x0FFF0000UL)
+#define MCDRV_PACKET_EVTPRM_MASK (0x0000FFFFUL)
+
+/* timer */
+#define MCDRV_PACKET_TIME_MASK (0x0FFFFFFFUL)
+
+
+
+SINT32 McDevIf_AllocPacketBuf (void);
+void McDevIf_ReleasePacketBuf (void);
+void McDevIf_ClearPacket (void);
+void McDevIf_AddPacket (UINT32 dDesc, UINT8 bData);
+void McDevIf_AddPacketRepeat (UINT32 dDesc, const UINT8* pbData, UINT16 wDataCount);
+SINT32 McDevIf_ExecutePacket (void);
+
+
+#endif /* _MCDEVIF_H_ */
diff --git a/sound/soc/codecs/mc1n2/mcdevprof.c b/sound/soc/codecs/mc1n2/mcdevprof.c new file mode 100644 index 0000000..1bf62c9 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdevprof.c @@ -0,0 +1,131 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcdevprof.c
+ *
+ * Description : MC Driver device profile
+ *
+ * Version : 1.0.0 2010.09.10
+ *
+ ****************************************************************************/
+
+
+#include "mcdevprof.h"
+#include "mcmachdep.h"
+#if MCDRV_DEBUG_LEVEL
+#include "mcdebuglog.h"
+#endif
+
+
+static MCDRV_DEV_ID geDevID = eMCDRV_DEV_ID_1N2;
+
+static UINT8 gabValid[][3] =
+{
+/* MC-1N2 MC-2N MC-3N */
+ {0, 0, 1}, /* DI2 */
+ {0, 0, 1}, /* RANGE */
+ {0, 0, 1}, /* BYPASS */
+ {0, 0, 1}, /* ADC1 */
+ {0, 0, 0}, /* PAD2 */
+ {0, 1, 1}, /* DBEX */
+ {0, 0, 1}, /* GPMODE */
+ {0, 0, 1}, /* DTMF */
+ {0, 0, 1}, /* IRQ */
+};
+
+static UINT8 gabSlaveAddr[3][2] =
+{
+/* Digital Analog */
+ {0x3A, 0x3A}, /* MC1N2 */
+ {0x00, 0x00}, /* MC2N */
+ {0x00, 0x00} /* MC3N */
+};
+
+/****************************************************************************
+ * McDevProf_SetDevId
+ *
+ * Description:
+ * Set device ID.
+ * Arguments:
+ * eDevId device ID
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McDevProf_SetDevId(MCDRV_DEV_ID eDevId)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McDevProf_SetDevId");
+#endif
+
+ geDevID = eDevId;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McDevProf_SetDevId", 0);
+#endif
+}
+
+/****************************************************************************
+ * McDevProf_IsValid
+ *
+ * Description:
+ * Validity function.
+ * Arguments:
+ * function kind
+ * Return:
+ * 0:Invalid/1:Valid
+ *
+ ****************************************************************************/
+UINT8 McDevProf_IsValid
+(
+ MCDRV_FUNC_KIND eFuncKind
+)
+{
+ UINT8 bData;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McDevProf_IsValid");
+#endif
+
+ bData = gabValid[eFuncKind][geDevID];
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bData;
+ McDebugLog_FuncOut("McDevProf_IsValid", &sdRet);
+#endif
+ return bData;
+}
+
+/****************************************************************************
+ * McDevProf_GetSlaveAddr
+ *
+ * Description:
+ * get slave address.
+ * Arguments:
+ * eSlaveAddrKind slave address kind
+ * Return:
+ * slave address
+ *
+ ****************************************************************************/
+UINT8 McDevProf_GetSlaveAddr
+(
+ MCDRV_SLAVE_ADDR_KIND eSlaveAddrKind
+)
+{
+ UINT8 bData = gabSlaveAddr[geDevID][eSlaveAddrKind];
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McDevProf_GetSlaveAddr");
+#endif
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bData;
+ McDebugLog_FuncOut("McDevProf_GetSlaveAddr", &sdRet);
+#endif
+
+ return bData;
+}
+
diff --git a/sound/soc/codecs/mc1n2/mcdevprof.h b/sound/soc/codecs/mc1n2/mcdevprof.h new file mode 100644 index 0000000..4e757f4 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdevprof.h @@ -0,0 +1,53 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcdevprof.h
+ *
+ * Description : MC Driver device profile header
+ *
+ * Version : 1.0.0 2010.07.05
+ *
+ ****************************************************************************/
+
+#ifndef _MCDEVPROF_H_
+#define _MCDEVPROF_H_
+
+#include "mctypedef.h"
+
+typedef enum
+{
+ eMCDRV_DEV_ID_1N2 = 0,
+ eMCDRV_DEV_ID_2N,
+ eMCDRV_DEV_ID_3N
+} MCDRV_DEV_ID;
+
+typedef enum
+{
+ eMCDRV_FUNC_LI2 = 0,
+ eMCDRV_FUNC_RANGE,
+ eMCDRV_FUNC_BYPASS,
+ eMCDRV_FUNC_ADC1,
+ eMCDRV_FUNC_PAD2,
+ eMCDRV_FUNC_DBEX,
+ eMCDRV_FUNC_GPMODE,
+ eMCDRV_FUNC_DTMF,
+ eMCDRV_FUNC_IRQ
+} MCDRV_FUNC_KIND;
+
+typedef enum
+{
+ eMCDRV_SLAVE_ADDR_DIG = 0,
+ eMCDRV_SLAVE_ADDR_ANA
+} MCDRV_SLAVE_ADDR_KIND;
+
+
+
+void McDevProf_SetDevId(MCDRV_DEV_ID eDevId);
+
+UINT8 McDevProf_IsValid(MCDRV_FUNC_KIND eFuncKind);
+UINT8 McDevProf_GetSlaveAddr(MCDRV_SLAVE_ADDR_KIND eSlaveAddrKind);
+
+
+
+#endif /* _MCDEVPROF_H_ */
diff --git a/sound/soc/codecs/mc1n2/mcdriver.c b/sound/soc/codecs/mc1n2/mcdriver.c new file mode 100644 index 0000000..af3cdc3 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdriver.c @@ -0,0 +1,4047 @@ +/**************************************************************************** + * + * Copyright(c) 2010-2011 Yamaha Corporation. All rights reserved. + * + * Module : mcdriver.c + * + * Description : MC Driver + * + * Version : 1.0.2 2011.04.18 + * + ****************************************************************************/ + + +#include "mcdriver_AA.h" +#include "mcdriver.h" +#include "mcservice.h" +#include "mcdevif.h" +#include "mcresctrl.h" +#include "mcdefs.h" +#include "mcdevprof.h" +#include "mcmachdep.h" +#if MCDRV_DEBUG_LEVEL +#include "mcdebuglog.h" +#endif + + + +#define MCDRV_MAX_WAIT_TIME ((UINT32)0x0FFFFFFF) + +static SINT32 init (const MCDRV_INIT_INFO* psInitInfo); +static SINT32 term (void); + +static SINT32 read_reg (MCDRV_REG_INFO* psRegInfo); +static SINT32 write_reg (const MCDRV_REG_INFO* psRegInfo); + +static SINT32 update_clock (const MCDRV_CLOCK_INFO* psClockInfo); +static SINT32 switch_clock (const MCDRV_CLKSW_INFO* psClockInfo); + +static SINT32 get_path (MCDRV_PATH_INFO* psPathInfo); +static SINT32 set_path (const MCDRV_PATH_INFO* psPathInfo); + +static SINT32 get_volume (MCDRV_VOL_INFO* psVolInfo); +static SINT32 set_volume (const MCDRV_VOL_INFO *psVolInfo); + +static SINT32 get_digitalio (MCDRV_DIO_INFO* psDioInfo); +static SINT32 set_digitalio (const MCDRV_DIO_INFO* psDioInfo, UINT32 dUpdateInfo); + +static SINT32 get_dac (MCDRV_DAC_INFO* psDacInfo); +static SINT32 set_dac (const MCDRV_DAC_INFO* psDacInfo, UINT32 dUpdateInfo); + +static SINT32 get_adc (MCDRV_ADC_INFO* psAdcInfo); +static SINT32 set_adc (const MCDRV_ADC_INFO* psAdcInfo, UINT32 dUpdateInfo); + +static SINT32 get_sp (MCDRV_SP_INFO* psSpInfo); +static SINT32 set_sp (const MCDRV_SP_INFO* psSpInfo); + +static SINT32 get_dng (MCDRV_DNG_INFO* psDngInfo); +static SINT32 set_dng (const MCDRV_DNG_INFO* psDngInfo, UINT32 dUpdateInfo); + +static SINT32 set_ae (const MCDRV_AE_INFO* psAeInfo, UINT32 dUpdateInfo); + +static SINT32 get_pdm (MCDRV_PDM_INFO* psPdmInfo); +static SINT32 set_pdm (const MCDRV_PDM_INFO* psPdmInfo, UINT32 dUpdateInfo); + +static SINT32 config_gp (const MCDRV_GP_MODE* psGpMode); +static SINT32 mask_gp (UINT8* pbMask, UINT32 dPadNo); +static SINT32 getset_gp (UINT8* pbGpio, UINT32 dPadNo); + +static SINT32 get_syseq (MCDRV_SYSEQ_INFO* psSysEq); +static SINT32 set_syseq (const MCDRV_SYSEQ_INFO* psSysEq, UINT32 dUpdateInfo); + +static SINT32 ValidateInitParam (const MCDRV_INIT_INFO* psInitInfo); +static SINT32 ValidateClockParam (const MCDRV_CLOCK_INFO* psClockInfo); +static SINT32 ValidateReadRegParam (const MCDRV_REG_INFO* psRegInfo); +static SINT32 ValidateWriteRegParam (const MCDRV_REG_INFO* psRegInfo); +static SINT32 ValidatePathParam (const MCDRV_PATH_INFO* psPathInfo); +static SINT32 ValidateDioParam (const MCDRV_DIO_INFO* psDioInfo, UINT32 dUpdateInfo); +static SINT32 CheckDIOCommon (const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort); +static SINT32 CheckDIODIR (const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort, UINT8 bInterface); +static SINT32 CheckDIODIT (const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort, UINT8 bInterface); + +static SINT32 SetVol (UINT32 dUpdate, MCDRV_VOLUPDATE_MODE eMode, UINT32* pdSVolDoneParam); +static SINT32 PreUpdatePath (UINT16* pwDACMuteParam, UINT16* pwDITMuteParam); + + +/**************************************************************************** + * init + * + * Description: + * Initialize. + * Arguments: + * psInitInfo initialize information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 init +( + const MCDRV_INIT_INFO *psInitInfo +) +{ + SINT32 sdRet; + UINT8 bHWID; + + if(NULL == psInitInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT != McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McSrv_SystemInit(); + McSrv_Lock(); + + bHWID = McSrv_ReadI2C(McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG), (UINT32)MCI_HW_ID); + sdRet = McResCtrl_SetHwId(bHWID); + if(sdRet != MCDRV_SUCCESS) + { + McSrv_Unlock(); + McSrv_SystemTerm(); + return sdRet; + } + + if(bHWID == MCDRV_HWID_AA) + { + McSrv_Unlock(); + McSrv_SystemTerm(); + return McDrv_Ctrl_AA(MCDRV_INIT, (MCDRV_INIT_INFO*)psInitInfo, 0); + } + else + { + sdRet = ValidateInitParam(psInitInfo); + + if(sdRet == MCDRV_SUCCESS) + { + McResCtrl_Init(psInitInfo); + sdRet = McDevIf_AllocPacketBuf(); + } + + if(sdRet == MCDRV_SUCCESS) + { + sdRet = McPacket_AddInit(psInitInfo); + } + + if(sdRet == MCDRV_SUCCESS) + { + sdRet = McDevIf_ExecutePacket(); + } + + if(sdRet == MCDRV_SUCCESS) + { + McResCtrl_UpdateState(eMCDRV_STATE_READY); + } + else + { + McDevIf_ReleasePacketBuf(); + } + + McSrv_Unlock(); + + if(sdRet != MCDRV_SUCCESS) + { + McSrv_SystemTerm(); + } + } + + return sdRet; +} + +/**************************************************************************** + * term + * + * Description: + * Terminate. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 term +( + void +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bCh, bSrcIdx; + UINT8 abOnOff[SOURCE_BLOCK_NUM]; + MCDRV_PATH_INFO sPathInfo; + MCDRV_POWER_INFO sPowerInfo; + MCDRV_POWER_UPDATE sPowerUpdate; + + if(eMCDRV_STATE_READY != McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McSrv_Lock(); + + abOnOff[0] = (MCDRV_SRC0_MIC1_OFF|MCDRV_SRC0_MIC2_OFF|MCDRV_SRC0_MIC3_OFF); + abOnOff[1] = (MCDRV_SRC1_LINE1_L_OFF|MCDRV_SRC1_LINE1_R_OFF|MCDRV_SRC1_LINE1_M_OFF); + abOnOff[2] = (MCDRV_SRC2_LINE2_L_OFF|MCDRV_SRC2_LINE2_R_OFF|MCDRV_SRC2_LINE2_M_OFF); + abOnOff[3] = (MCDRV_SRC3_DIR0_OFF|MCDRV_SRC3_DIR1_OFF|MCDRV_SRC3_DIR2_OFF|MCDRV_SRC3_DIR2_DIRECT_OFF); + abOnOff[4] = (MCDRV_SRC4_DTMF_OFF|MCDRV_SRC4_PDM_OFF|MCDRV_SRC4_ADC0_OFF|MCDRV_SRC4_ADC1_OFF); + abOnOff[5] = (MCDRV_SRC5_DAC_L_OFF|MCDRV_SRC5_DAC_R_OFF|MCDRV_SRC5_DAC_M_OFF); + abOnOff[6] = (MCDRV_SRC6_MIX_OFF|MCDRV_SRC6_AE_OFF|MCDRV_SRC6_CDSP_OFF|MCDRV_SRC6_CDSP_DIRECT_OFF); + + for(bSrcIdx = 0; bSrcIdx < SOURCE_BLOCK_NUM; bSrcIdx++) + { + for(bCh = 0; bCh < HP_PATH_CHANNELS; bCh++) + { + sPathInfo.asHpOut[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < SP_PATH_CHANNELS; bCh++) + { + sPathInfo.asSpOut[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < RC_PATH_CHANNELS; bCh++) + { + sPathInfo.asRcOut[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < LOUT1_PATH_CHANNELS; bCh++) + { + sPathInfo.asLout1[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < LOUT2_PATH_CHANNELS; bCh++) + { + sPathInfo.asLout2[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < PEAK_PATH_CHANNELS; bCh++) + { + sPathInfo.asPeak[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < DIT0_PATH_CHANNELS; bCh++) + { + sPathInfo.asDit0[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < DIT1_PATH_CHANNELS; bCh++) + { + sPathInfo.asDit1[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < DIT2_PATH_CHANNELS; bCh++) + { + sPathInfo.asDit2[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++) + { + sPathInfo.asDac[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < AE_PATH_CHANNELS; bCh++) + { + sPathInfo.asAe[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < CDSP_PATH_CHANNELS; bCh++) + { + sPathInfo.asCdsp[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < ADC0_PATH_CHANNELS; bCh++) + { + sPathInfo.asAdc0[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < ADC1_PATH_CHANNELS; bCh++) + { + sPathInfo.asAdc1[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < MIX_PATH_CHANNELS; bCh++) + { + sPathInfo.asMix[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < BIAS_PATH_CHANNELS; bCh++) + { + sPathInfo.asBias[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + } + sdRet = set_path(&sPathInfo); + if(sdRet == MCDRV_SUCCESS) + { + sPowerInfo.dDigital = (MCDRV_POWINFO_DIGITAL_DP0 + |MCDRV_POWINFO_DIGITAL_DP1 + |MCDRV_POWINFO_DIGITAL_DP2 + |MCDRV_POWINFO_DIGITAL_DPB + |MCDRV_POWINFO_DIGITAL_DPDI0 + |MCDRV_POWINFO_DIGITAL_DPDI1 + |MCDRV_POWINFO_DIGITAL_DPDI2 + |MCDRV_POWINFO_DIGITAL_DPPDM + |MCDRV_POWINFO_DIGITAL_DPBDSP + |MCDRV_POWINFO_DIGITAL_DPADIF + |MCDRV_POWINFO_DIGITAL_PLLRST0); + sPowerInfo.abAnalog[0] = + sPowerInfo.abAnalog[1] = + sPowerInfo.abAnalog[2] = + sPowerInfo.abAnalog[3] = + sPowerInfo.abAnalog[4] = (UINT8)0xFF; + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL; + sdRet = McPacket_AddPowerDown(&sPowerInfo, &sPowerUpdate); + } + if(sdRet == MCDRV_SUCCESS) + { + sdRet = McDevIf_ExecutePacket(); + } + + McDevIf_ReleasePacketBuf(); + + McResCtrl_UpdateState(eMCDRV_STATE_NOTINIT); + + McSrv_Unlock(); + + McSrv_SystemTerm(); + + return sdRet; +} + +/**************************************************************************** + * read_reg + * + * Description: + * read register. + * Arguments: + * psRegInfo register information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 read_reg +( + MCDRV_REG_INFO* psRegInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bSlaveAddr; + UINT8 bAddr; + UINT8 abData[2]; + MCDRV_POWER_INFO sPowerInfo; + MCDRV_POWER_INFO sCurPowerInfo; + MCDRV_POWER_UPDATE sPowerUpdate; + + if(NULL == psRegInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + sdRet = ValidateReadRegParam(psRegInfo); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + /* get current power info */ + McResCtrl_GetCurPowerInfo(&sCurPowerInfo); + + /* power up */ + McResCtrl_GetPowerInfoRegAccess(psRegInfo, &sPowerInfo); + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL; + sdRet = McPacket_AddPowerUp(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + bAddr = psRegInfo->bAddress; + + if(psRegInfo->bRegType == MCDRV_REGTYPE_A) + { + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + } + else + { + switch(psRegInfo->bRegType) + { + case MCDRV_REGTYPE_B_BASE: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_BASE_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_BASE_WINDOW; + break; + + case MCDRV_REGTYPE_B_MIXER: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_MIX_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_MIX_WINDOW; + break; + + case MCDRV_REGTYPE_B_AE: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_AE_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_AE_WINDOW; + break; + + case MCDRV_REGTYPE_B_CDSP: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_CDSP_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_CDSP_WINDOW; + break; + + case MCDRV_REGTYPE_B_CODEC: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_CD_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_CD_WINDOW; + break; + + case MCDRV_REGTYPE_B_ANALOG: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA); + abData[0] = MCI_ANA_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_ANA_WINDOW; + break; + + default: + return MCDRV_ERROR_ARGUMENT; + } + } + + /* read register */ + psRegInfo->bData = McSrv_ReadI2C(bSlaveAddr, bAddr); + + /* restore power */ + sdRet = McPacket_AddPowerDown(&sCurPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * write_reg + * + * Description: + * Write register. + * Arguments: + * psWR register information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +static SINT32 write_reg +( + const MCDRV_REG_INFO* psRegInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_POWER_INFO sPowerInfo; + MCDRV_POWER_INFO sCurPowerInfo; + MCDRV_POWER_UPDATE sPowerUpdate; + + if(NULL == psRegInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + sdRet = ValidateWriteRegParam(psRegInfo); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + /* get current power info */ + McResCtrl_GetCurPowerInfo(&sCurPowerInfo); + + /* power up */ + McResCtrl_GetPowerInfoRegAccess(psRegInfo, &sPowerInfo); + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL; + sdRet = McPacket_AddPowerUp(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + switch(psRegInfo->bRegType) + { + case MCDRV_REGTYPE_A: + McDevIf_AddPacket((MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_A | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_BASE: + McDevIf_AddPacket((MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_MIXER: + McDevIf_AddPacket((MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_AE: + McDevIf_AddPacket((MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_AE | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_CDSP: + McDevIf_AddPacket((MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_CDSP | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_CODEC: + McDevIf_AddPacket((MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_ANALOG: + McDevIf_AddPacket((MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | psRegInfo->bAddress), psRegInfo->bData); + break; + + default: + return MCDRV_ERROR_ARGUMENT; + } + + sdRet = McDevIf_ExecutePacket(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* restore power */ + if(psRegInfo->bRegType == MCDRV_REGTYPE_B_BASE) + { + if(psRegInfo->bAddress == MCI_PWM_DIGITAL) + { + if((psRegInfo->bData & MCB_PWM_DP1) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP1; + } + if((psRegInfo->bData & MCB_PWM_DP2) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP2; + } + } + else if(psRegInfo->bAddress == MCI_PWM_DIGITAL_1) + { + if((psRegInfo->bData & MCB_PWM_DPB) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPB; + } + if((psRegInfo->bData & MCB_PWM_DPDI0) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPDI0; + } + if((psRegInfo->bData & MCB_PWM_DPDI1) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPDI1; + } + if((psRegInfo->bData & MCB_PWM_DPDI2) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPDI2; + } + if((psRegInfo->bData & MCB_PWM_DPPDM) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPPDM; + } + } + else if(psRegInfo->bAddress == MCI_PWM_DIGITAL_BDSP) + { + if((psRegInfo->bData & MCB_PWM_DPBDSP) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPBDSP; + } + } + else + { + } + } + else if(psRegInfo->bRegType == MCDRV_REGTYPE_B_CODEC) + { + if(psRegInfo->bAddress == MCI_DPADIF) + { + if((psRegInfo->bData & MCB_DPADIF) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPADIF; + } + if((psRegInfo->bData & MCB_DP0_CLKI0) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP0; + } + if((psRegInfo->bData & MCB_DP0_CLKI1) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP0; + } + } + if(psRegInfo->bAddress == MCI_PLL_RST) + { + if((psRegInfo->bData & MCB_PLLRST0) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_PLLRST0; + } + } + } + else if(psRegInfo->bRegType == MCDRV_REGTYPE_B_ANALOG) + { + if(psRegInfo->bAddress == MCI_PWM_ANALOG_0) + { + sCurPowerInfo.abAnalog[0] = psRegInfo->bData; + } + else if(psRegInfo->bAddress == MCI_PWM_ANALOG_1) + { + sCurPowerInfo.abAnalog[1] = psRegInfo->bData; + } + else if(psRegInfo->bAddress == MCI_PWM_ANALOG_2) + { + sCurPowerInfo.abAnalog[2] = psRegInfo->bData; + } + else if(psRegInfo->bAddress == MCI_PWM_ANALOG_3) + { + sCurPowerInfo.abAnalog[3] = psRegInfo->bData; + } + else if(psRegInfo->bAddress == MCI_PWM_ANALOG_4) + { + sCurPowerInfo.abAnalog[4] = psRegInfo->bData; + } + else + { + } + } + else + { + } + + sdRet = McPacket_AddPowerDown(&sCurPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * update_clock + * + * Description: + * Update clock info. + * Arguments: + * psClockInfo clock info + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 update_clock +( + const MCDRV_CLOCK_INFO* psClockInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + MCDRV_INIT_INFO sInitInfo; + + if(NULL == psClockInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetInitInfo(&sInitInfo); + if((sInitInfo.bPowerMode & MCDRV_POWMODE_CLKON) != 0) + { + return MCDRV_ERROR_ARGUMENT; + } + + sdRet = ValidateClockParam(psClockInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + McResCtrl_SetClockInfo(psClockInfo); + return sdRet; +} + +/**************************************************************************** + * switch_clock + * + * Description: + * Switch clock. + * Arguments: + * psClockInfo clock info + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 switch_clock +( + const MCDRV_CLKSW_INFO* psClockInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + if(NULL == psClockInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if((psClockInfo->bClkSrc != MCDRV_CLKSW_CLKI0) && (psClockInfo->bClkSrc != MCDRV_CLKSW_CLKI1)) + { + return MCDRV_ERROR_ARGUMENT; + } + + McResCtrl_SetClockSwitch(psClockInfo); + + sdRet = McPacket_AddClockSwitch(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * get_path + * + * Description: + * Get current path setting. + * Arguments: + * psPathInfo path information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_path +( + MCDRV_PATH_INFO* psPathInfo +) +{ + if(NULL == psPathInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetPathInfoVirtual(psPathInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_path + * + * Description: + * Set path. + * Arguments: + * psPathInfo path information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_path +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT32 dSVolDoneParam = 0; + UINT16 wDACMuteParam = 0; + UINT16 wDITMuteParam = 0; + MCDRV_STATE eState = McResCtrl_GetState(); + MCDRV_POWER_INFO sPowerInfo; + MCDRV_POWER_UPDATE sPowerUpdate; + + if(NULL == psPathInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + sdRet = ValidatePathParam(psPathInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + McResCtrl_SetPathInfo(psPathInfo); + + /* unused analog out volume mute */ + sdRet = SetVol(MCDRV_VOLUPDATE_ANAOUT_ALL, eMCDRV_VOLUPDATE_MUTE, &dSVolDoneParam); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* DAC/DIT* mute */ + sdRet = PreUpdatePath(&wDACMuteParam, &wDITMuteParam); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* unused volume mute */ + sdRet = SetVol(MCDRV_VOLUPDATE_ALL&~MCDRV_VOLUPDATE_ANAOUT_ALL, eMCDRV_VOLUPDATE_MUTE, NULL); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* wait XX_BUSY */ + if(dSVolDoneParam != (UINT32)0) + { + McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_SVOL_DONE | dSVolDoneParam, 0); + } + if(wDACMuteParam != 0) + { + McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_DACMUTE | wDACMuteParam, 0); + } + if(wDITMuteParam != 0) + { + McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_DITMUTE | wDITMuteParam, 0); + } + + /* stop unused path */ + sdRet = McPacket_AddStop(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + McResCtrl_GetPowerInfo(&sPowerInfo); + + /* used path power up */ + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL; + sdRet = McPacket_AddPowerUp(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* set digital mixer */ + sdRet = McPacket_AddPathSet(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* set analog mixer */ + sdRet = McPacket_AddMixSet(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* unused path power down */ + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL; + sdRet = McPacket_AddPowerDown(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* start */ + sdRet = McPacket_AddStart(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* set volume */ + sdRet = SetVol(MCDRV_VOLUPDATE_ALL&~MCDRV_VOLUPDATE_ANAOUT_ALL, eMCDRV_VOLUPDATE_ALL, NULL); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return SetVol(MCDRV_VOLUPDATE_ANAOUT_ALL, eMCDRV_VOLUPDATE_ALL, &dSVolDoneParam); +} + +/**************************************************************************** + * get_volume + * + * Description: + * Get current volume setting. + * Arguments: + * psVolInfo volume information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 get_volume +( + MCDRV_VOL_INFO* psVolInfo +) +{ + if(NULL == psVolInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetVolInfo(psVolInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_volume + * + * Description: + * Set volume. + * Arguments: + * psVolInfo volume update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 set_volume +( + const MCDRV_VOL_INFO* psVolInfo +) +{ + MCDRV_STATE eState = McResCtrl_GetState(); + MCDRV_PATH_INFO sPathInfo; + + if(NULL == psVolInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetVolInfo(psVolInfo); + + McResCtrl_GetPathInfoVirtual(&sPathInfo); + return set_path(&sPathInfo); +} + +/**************************************************************************** + * get_digitalio + * + * Description: + * Get current digital IO setting. + * Arguments: + * psDioInfo digital IO information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_digitalio +( + MCDRV_DIO_INFO* psDioInfo +) +{ + if(NULL == psDioInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetDioInfo(psDioInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_digitalio + * + * Description: + * Update digital IO configuration. + * Arguments: + * psDioInfo digital IO configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_digitalio +( + const MCDRV_DIO_INFO* psDioInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + + if(NULL == psDioInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + sdRet = ValidateDioParam(psDioInfo, dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + McResCtrl_SetDioInfo(psDioInfo, dUpdateInfo); + + sdRet = McPacket_AddDigitalIO(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * get_dac + * + * Description: + * Get current DAC setting. + * Arguments: + * psDacInfo DAC information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_dac +( + MCDRV_DAC_INFO* psDacInfo +) +{ + if(NULL == psDacInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetDacInfo(psDacInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_dac + * + * Description: + * Update DAC configuration. + * Arguments: + * psDacInfo DAC configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_dac +( + const MCDRV_DAC_INFO* psDacInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + + if(NULL == psDacInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetDacInfo(psDacInfo, dUpdateInfo); + + sdRet = McPacket_AddDAC(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * get_adc + * + * Description: + * Get current ADC setting. + * Arguments: + * psAdcInfo ADC information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_adc +( + MCDRV_ADC_INFO* psAdcInfo +) +{ + if(NULL == psAdcInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetAdcInfo(psAdcInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_adc + * + * Description: + * Update ADC configuration. + * Arguments: + * psAdcInfo ADC configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_adc +( + const MCDRV_ADC_INFO* psAdcInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + + if(NULL == psAdcInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetAdcInfo(psAdcInfo, dUpdateInfo); + + sdRet = McPacket_AddADC(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * get_sp + * + * Description: + * Get current SP setting. + * Arguments: + * psSpInfo SP information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_sp +( + MCDRV_SP_INFO* psSpInfo +) +{ + if(NULL == psSpInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetSpInfo(psSpInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_sp + * + * Description: + * Update SP configuration. + * Arguments: + * psSpInfo SP configuration + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_sp +( + const MCDRV_SP_INFO* psSpInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + + if(NULL == psSpInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetSpInfo(psSpInfo); + + sdRet = McPacket_AddSP(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * get_dng + * + * Description: + * Get current Digital Noise Gate setting. + * Arguments: + * psDngInfo DNG information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_dng +( + MCDRV_DNG_INFO* psDngInfo +) +{ + if(NULL == psDngInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetDngInfo(psDngInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_dng + * + * Description: + * Update Digital Noise Gate configuration. + * Arguments: + * psDngInfo DNG configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_dng +( + const MCDRV_DNG_INFO* psDngInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + + if(NULL == psDngInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetDngInfo(psDngInfo, dUpdateInfo); + + sdRet = McPacket_AddDNG(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * set_ae + * + * Description: + * Update Audio Engine configuration. + * Arguments: + * psAeInfo AE configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_ae +( + const MCDRV_AE_INFO* psAeInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + MCDRV_PATH_INFO sPathInfo; + + if(NULL == psAeInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetAeInfo(psAeInfo, dUpdateInfo); + + sdRet = McPacket_AddAE(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + McResCtrl_GetPathInfoVirtual(&sPathInfo); + return set_path(&sPathInfo); +} + +/**************************************************************************** + * get_pdm + * + * Description: + * Get current PDM setting. + * Arguments: + * psPdmInfo PDM information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_pdm +( + MCDRV_PDM_INFO* psPdmInfo +) +{ + if(NULL == psPdmInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == McResCtrl_GetState()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetPdmInfo(psPdmInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_pdm + * + * Description: + * Update PDM configuration. + * Arguments: + * psPdmInfo PDM configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_pdm +( + const MCDRV_PDM_INFO* psPdmInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + + if(NULL == psPdmInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetPdmInfo(psPdmInfo, dUpdateInfo); + + sdRet = McPacket_AddPDM(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * config_gp + * + * Description: + * Set GPIO mode. + * Arguments: + * psGpMode GPIO mode information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE +* + ****************************************************************************/ +static SINT32 config_gp +( + const MCDRV_GP_MODE* psGpMode +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + + if(NULL == psGpMode) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetGPMode(psGpMode); + + sdRet = McPacket_AddGPMode(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * mask_gp + * + * Description: + * Set GPIO input mask. + * Arguments: + * pbMask mask setting + * dPadNo PAD number + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * MCDRV_ERROR +* + ****************************************************************************/ +static SINT32 mask_gp +( + UINT8* pbMask, + UINT32 dPadNo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + MCDRV_INIT_INFO sInitInfo; + MCDRV_GP_MODE sGPMode; + + if(NULL == pbMask) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetInitInfo(&sInitInfo); + McResCtrl_GetGPMode(&sGPMode); + + if(dPadNo == MCDRV_GP_PAD0) + { + if((sInitInfo.bPad0Func == MCDRV_PAD_GPIO) && (sGPMode.abGpDdr[dPadNo] == MCDRV_GPDDR_OUT)) + { + return MCDRV_ERROR; + } + } + else if(dPadNo == MCDRV_GP_PAD1) + { + if((sInitInfo.bPad1Func == MCDRV_PAD_GPIO) && (sGPMode.abGpDdr[dPadNo] == MCDRV_GPDDR_OUT)) + { + return MCDRV_ERROR; + } + } + else + { + return MCDRV_ERROR; + } + + McResCtrl_SetGPMask(*pbMask, dPadNo); + + sdRet = McPacket_AddGPMask(dPadNo); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + +/**************************************************************************** + * getset_gp + * + * Description: + * Set or get state of GPIO pin. + * Arguments: + * pbGpio pin state + * dPadNo PAD number + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT +* + ****************************************************************************/ +static SINT32 getset_gp +( + UINT8* pbGpio, + UINT32 dPadNo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bSlaveAddr; + UINT8 abData[2]; + UINT8 bRegData; + MCDRV_STATE eState = McResCtrl_GetState(); + MCDRV_INIT_INFO sInitInfo; + MCDRV_GP_MODE sGPMode; + + if(NULL == pbGpio) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetInitInfo(&sInitInfo); + McResCtrl_GetGPMode(&sGPMode); + + if(((dPadNo == MCDRV_GP_PAD0) && (sInitInfo.bPad0Func != MCDRV_PAD_GPIO)) + || ((dPadNo == MCDRV_GP_PAD1) && (sInitInfo.bPad1Func != MCDRV_PAD_GPIO))) + { + return MCDRV_ERROR; + } + + if(sGPMode.abGpDdr[dPadNo] == MCDRV_GPDDR_IN) + { + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_BASE_ADR<<1; + abData[1] = MCI_PA_SCU_PA; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bRegData = McSrv_ReadI2C(bSlaveAddr, MCI_BASE_WINDOW); + if(dPadNo == MCDRV_GP_PAD0) + { + *pbGpio = bRegData & MCB_PA_SCU_PA0; + } + else if(dPadNo == MCDRV_GP_PAD1) + { + *pbGpio = (bRegData & MCB_PA_SCU_PA1) >> 1; + } + else + { + return MCDRV_ERROR_ARGUMENT; + } + } + else + { + sdRet = McPacket_AddGPSet(*pbGpio, dPadNo); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + return McDevIf_ExecutePacket(); + } + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * get_syseq + * + * Description: + * Get System Eq. + * Arguments: + * psSysEq pointer to MCDRV_SYSEQ_INFO struct + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * MCDRV_ERROR_ARGUMENT +* + ****************************************************************************/ +static SINT32 get_syseq +( + MCDRV_SYSEQ_INFO* psSysEq +) +{ + MCDRV_STATE eState = McResCtrl_GetState(); + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + if(NULL == psSysEq) + { + return MCDRV_ERROR_ARGUMENT; + } + + McResCtrl_GetSysEq(psSysEq); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_syseq + * + * Description: + * Set System Eq. + * Arguments: + * psSysEq pointer to MCDRV_SYSEQ_INFO struct + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * MCDRV_ERROR_ARGUMENT +* + ****************************************************************************/ +static SINT32 set_syseq +( + const MCDRV_SYSEQ_INFO* psSysEq, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE eState = McResCtrl_GetState(); + + if(eMCDRV_STATE_NOTINIT == eState) + { + return MCDRV_ERROR_STATE; + } + + if(NULL == psSysEq) + { + return MCDRV_ERROR_ARGUMENT; + } + + McResCtrl_SetSysEq(psSysEq, dUpdateInfo); + sdRet = McPacket_AddSysEq(dUpdateInfo); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + return McDevIf_ExecutePacket(); +} + + +/**************************************************************************** + * ValidateInitParam + * + * Description: + * validate init parameters. + * Arguments: + * psInitInfo initialize information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateInitParam +( + const MCDRV_INIT_INFO* psInitInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("ValidateInitParam"); +#endif + + + if((MCDRV_CKSEL_CMOS != psInitInfo->bCkSel) + && (MCDRV_CKSEL_TCXO != psInitInfo->bCkSel) + && (MCDRV_CKSEL_CMOS_TCXO != psInitInfo->bCkSel) + && (MCDRV_CKSEL_TCXO_CMOS != psInitInfo->bCkSel)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psInitInfo->bDivR0 == 0x00) || (psInitInfo->bDivR0 > 0x3F)) + || ((psInitInfo->bDivR1 == 0x00) || (psInitInfo->bDivR1 > 0x3F)) + || ((psInitInfo->bDivF0 == 0x00) || (psInitInfo->bDivF0 > 0x7F)) + || ((psInitInfo->bDivF1 == 0x00) || (psInitInfo->bDivF1 > 0x7F))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_RANGE) == 1) && (((psInitInfo->bRange0 > 0x07) || (psInitInfo->bRange1 > 0x07)))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_BYPASS) == 1) && (psInitInfo->bBypass > 0x03)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((MCDRV_DAHIZ_LOW != psInitInfo->bDioSdo0Hiz) && (MCDRV_DAHIZ_HIZ != psInitInfo->bDioSdo0Hiz)) + || ((MCDRV_DAHIZ_LOW != psInitInfo->bDioSdo1Hiz) && (MCDRV_DAHIZ_HIZ != psInitInfo->bDioSdo1Hiz)) + || ((MCDRV_DAHIZ_LOW != psInitInfo->bDioSdo2Hiz) && (MCDRV_DAHIZ_HIZ != psInitInfo->bDioSdo2Hiz))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_PCMHIZ_HIZ != psInitInfo->bPcmHiz) && (MCDRV_PCMHIZ_LOW != psInitInfo->bPcmHiz)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((MCDRV_DAHIZ_LOW != psInitInfo->bDioClk0Hiz) && (MCDRV_DAHIZ_HIZ != psInitInfo->bDioClk0Hiz)) + || ((MCDRV_DAHIZ_LOW != psInitInfo->bDioClk1Hiz) && (MCDRV_DAHIZ_HIZ != psInitInfo->bDioClk1Hiz)) + || ((MCDRV_DAHIZ_LOW != psInitInfo->bDioClk2Hiz) && (MCDRV_DAHIZ_HIZ != psInitInfo->bDioClk2Hiz))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_PCMHIZ_HIZ != psInitInfo->bPcmHiz) && (MCDRV_PCMHIZ_LOW != psInitInfo->bPcmHiz)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_LINE_STEREO != psInitInfo->bLineIn1Dif) && (MCDRV_LINE_DIF != psInitInfo->bLineIn1Dif)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1) && (MCDRV_LINE_STEREO != psInitInfo->bLineIn2Dif) && (MCDRV_LINE_DIF != psInitInfo->bLineIn2Dif)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((MCDRV_LINE_STEREO != psInitInfo->bLineOut1Dif) && (MCDRV_LINE_DIF != psInitInfo->bLineOut1Dif)) + || ((MCDRV_LINE_STEREO != psInitInfo->bLineOut2Dif) && (MCDRV_LINE_DIF != psInitInfo->bLineOut2Dif))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_SPMN_ON != psInitInfo->bSpmn) && (MCDRV_SPMN_OFF != psInitInfo->bSpmn)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((MCDRV_MIC_DIF != psInitInfo->bMic1Sng) && (MCDRV_MIC_SINGLE != psInitInfo->bMic1Sng)) + || ((MCDRV_MIC_DIF != psInitInfo->bMic2Sng) && (MCDRV_MIC_SINGLE != psInitInfo->bMic2Sng)) + || ((MCDRV_MIC_DIF != psInitInfo->bMic3Sng) && (MCDRV_MIC_SINGLE != psInitInfo->bMic3Sng))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_POWMODE_NORMAL != psInitInfo->bPowerMode) + && (MCDRV_POWMODE_CLKON != psInitInfo->bPowerMode) + && (MCDRV_POWMODE_VREFON != psInitInfo->bPowerMode) + && (MCDRV_POWMODE_CLKVREFON != psInitInfo->bPowerMode) + && (MCDRV_POWMODE_FULL != psInitInfo->bPowerMode)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_SPHIZ_PULLDOWN != psInitInfo->bSpHiz) && (MCDRV_SPHIZ_HIZ != psInitInfo->bSpHiz)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_LDO_OFF != psInitInfo->bLdo) && (MCDRV_LDO_ON != psInitInfo->bLdo)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_PAD_GPIO != psInitInfo->bPad0Func) && (MCDRV_PAD_PDMCK != psInitInfo->bPad0Func) && (MCDRV_PAD_IRQ != psInitInfo->bPad0Func)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_IRQ) != 1) && (MCDRV_PAD_IRQ == psInitInfo->bPad0Func)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_PAD_GPIO != psInitInfo->bPad1Func) && (MCDRV_PAD_PDMDI != psInitInfo->bPad1Func) && (MCDRV_PAD_IRQ != psInitInfo->bPad1Func)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_IRQ) != 1) && (MCDRV_PAD_IRQ == psInitInfo->bPad1Func)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_PAD2) == 1) + && (MCDRV_PAD_GPIO != psInitInfo->bPad2Func) + && (MCDRV_PAD_PDMDI != psInitInfo->bPad2Func) + && (MCDRV_PAD_IRQ != psInitInfo->bPad2Func)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_OUTLEV_0 != psInitInfo->bAvddLev) && (MCDRV_OUTLEV_1 != psInitInfo->bAvddLev) + && (MCDRV_OUTLEV_2 != psInitInfo->bAvddLev) && (MCDRV_OUTLEV_3 != psInitInfo->bAvddLev) + && (MCDRV_OUTLEV_4 != psInitInfo->bAvddLev) && (MCDRV_OUTLEV_5 != psInitInfo->bAvddLev) + && (MCDRV_OUTLEV_6 != psInitInfo->bAvddLev) && (MCDRV_OUTLEV_7 != psInitInfo->bAvddLev)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_OUTLEV_0 != psInitInfo->bVrefLev) && (MCDRV_OUTLEV_1 != psInitInfo->bVrefLev) + && (MCDRV_OUTLEV_2 != psInitInfo->bVrefLev) && (MCDRV_OUTLEV_3 != psInitInfo->bVrefLev) + && (MCDRV_OUTLEV_4 != psInitInfo->bVrefLev) && (MCDRV_OUTLEV_5 != psInitInfo->bVrefLev) + && (MCDRV_OUTLEV_6 != psInitInfo->bVrefLev) && (MCDRV_OUTLEV_7 != psInitInfo->bVrefLev)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_DCLGAIN_0 != psInitInfo->bDclGain) && (MCDRV_DCLGAIN_6 != psInitInfo->bDclGain) + && (MCDRV_DCLGAIN_12!= psInitInfo->bDclGain) && (MCDRV_DCLGAIN_18!= psInitInfo->bDclGain)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_DCLLIMIT_0 != psInitInfo->bDclLimit) && (MCDRV_DCLLIMIT_116 != psInitInfo->bDclLimit) + && (MCDRV_DCLLIMIT_250 != psInitInfo->bDclLimit) && (MCDRV_DCLLIMIT_602 != psInitInfo->bDclLimit)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_CPMOD_ON != psInitInfo->bCpMod) && (MCDRV_CPMOD_OFF != psInitInfo->bCpMod)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if((MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dAdHpf) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dMic1Cin) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dMic2Cin) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dMic3Cin) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dLine1Cin) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dLine2Cin) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dVrefRdy1) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dVrefRdy2) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dHpRdy) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dSpRdy) + || (MCDRV_MAX_WAIT_TIME < psInitInfo->sWaitTime.dPdm)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("ValidateInitParam", &sdRet); +#endif + + return sdRet; +} + +/**************************************************************************** + * ValidateClockParam + * + * Description: + * validate clock parameters. + * Arguments: + * psClockInfo clock information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateClockParam +( + const MCDRV_CLOCK_INFO* psClockInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("ValidateClockParam"); +#endif + + + if((MCDRV_CKSEL_CMOS != psClockInfo->bCkSel) + && (MCDRV_CKSEL_TCXO != psClockInfo->bCkSel) + && (MCDRV_CKSEL_CMOS_TCXO != psClockInfo->bCkSel) + && (MCDRV_CKSEL_TCXO_CMOS != psClockInfo->bCkSel)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else if((psClockInfo->bDivR0 == 0x00) || (psClockInfo->bDivR0 > 0x3F)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else if((psClockInfo->bDivR1 == 0x00) || (psClockInfo->bDivR1 > 0x3F)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else if((psClockInfo->bDivF0 == 0x00) || (psClockInfo->bDivF0 > 0x7F)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else if((psClockInfo->bDivF1 == 0x00) || (psClockInfo->bDivF1 > 0x7F)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else if((McDevProf_IsValid(eMCDRV_FUNC_RANGE) == 1) + && ((psClockInfo->bRange0 > 0x07) || (psClockInfo->bRange1 > 0x07))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else if((McDevProf_IsValid(eMCDRV_FUNC_BYPASS) == 1) && (psClockInfo->bBypass > 0x03)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("ValidateClockParam", &sdRet); +#endif + + return sdRet; +} + +/**************************************************************************** + * ValidateReadRegParam + * + * Description: + * validate read reg parameter. + * Arguments: + * psRegInfo register information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateReadRegParam +( + const MCDRV_REG_INFO* psRegInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("ValidateReadRegParam"); +#endif + + + if((McResCtrl_GetRegAccess(psRegInfo) & eMCDRV_READ_ONLY) == 0) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("ValidateReadRegParam", &sdRet); +#endif + + return sdRet; +} + +/**************************************************************************** + * ValidateWriteRegParam + * + * Description: + * validate write reg parameter. + * Arguments: + * psRegInfo register information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateWriteRegParam +( + const MCDRV_REG_INFO* psRegInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("ValidateWriteRegParam"); +#endif + + + if((McResCtrl_GetRegAccess(psRegInfo) & eMCDRV_WRITE_ONLY) == 0) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("ValidateWriteRegParam", &sdRet); +#endif + + return sdRet; +} + +/**************************************************************************** + * ValidatePathParam + * + * Description: + * validate path parameters. + * Arguments: + * psPathInfo path information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +SINT32 ValidatePathParam +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bBlock; + UINT8 bCh; + UINT8 bPDMIsSrc = 0; + UINT8 bADC0IsSrc = 0; + MCDRV_PATH_INFO sCurPathInfo; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("ValidatePathParam"); +#endif + + + McResCtrl_GetPathInfoVirtual(&sCurPathInfo); + /* set off to current path info */ + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + for(bCh = 0; bCh < HP_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asHpOut[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asHpOut[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asHpOut[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asHpOut[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < SP_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asSpOut[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x02; + } + if((psPathInfo->asSpOut[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x08; + } + if((psPathInfo->asSpOut[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x20; + } + if((psPathInfo->asSpOut[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x80; + } + } + for(bCh = 0; bCh < RC_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asRcOut[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x02; + } + if((psPathInfo->asRcOut[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x08; + } + if((psPathInfo->asRcOut[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x20; + } + if((psPathInfo->asRcOut[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x80; + } + } + for(bCh = 0; bCh < LOUT1_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asLout1[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] |= (UINT8)0x02; + } + if((psPathInfo->asLout1[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] |= (UINT8)0x08; + } + if((psPathInfo->asLout1[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] |= (UINT8)0x20; + } + if((psPathInfo->asLout1[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] |= (UINT8)0x80; + } + } + for(bCh = 0; bCh < LOUT2_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asLout2[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asLout2[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asLout2[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asLout2[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < DIT0_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDit0[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asDit0[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asDit0[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asDit0[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < DIT1_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDit1[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asDit1[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asDit1[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asDit1[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < DIT2_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDit2[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asDit2[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asDit2[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asDit2[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asDac[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asDac[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asDac[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < AE_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asAe[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asAe[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asAe[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asAe[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < ADC0_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asAdc0[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] |= (UINT8)0x02; + } + if((psPathInfo->asAdc0[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] |= (UINT8)0x08; + } + if((psPathInfo->asAdc0[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] |= (UINT8)0x20; + } + if((psPathInfo->asAdc0[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] |= (UINT8)0x80; + } + } + for(bCh = 0; bCh < MIX_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asMix[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asMix[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asMix[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asMix[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + } + + if(((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)) + { + bPDMIsSrc = 1; + } + if(((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)) + { + bADC0IsSrc = 1; + } + + /* HP */ + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + if(((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + /* SP */ + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + if(((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + if(((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON) + { + if(((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + /* RCV */ + + /* LOUT1 */ + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + if(((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + /* LOUT2 */ + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + if(((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + /* PeakMeter */ + + /* DIT0 */ + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if(((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if(((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if(((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + if((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + + /* DIT1 */ + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if(((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if(((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if(((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + if((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + + /* DIT2 */ + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if(((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if(((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if(((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + if((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + + /* DAC */ + for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if(((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if(((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if(((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + if((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + } + + /* AE */ + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + && (((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + || ((sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + + /* CDSP */ + for(bCh = 0; bCh < 4; bCh++) + { + } + + /* ADC0 */ + if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + if(((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + + /* ADC1 */ + + /* MIX */ + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + && (((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + || ((sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + )) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + && (((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + || ((sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + )) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + && (((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + || ((sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + )) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + && (((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + || ((sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + && (((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + || ((sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + && (((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + || ((sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + )) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("ValidatePathParam", &sdRet); +#endif + + return sdRet; +} + +/**************************************************************************** + * ValidateDioParam + * + * Description: + * validate digital IO parameters. + * Arguments: + * psDioInfo digital IO information + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateDioParam +( + const MCDRV_DIO_INFO* psDioInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bPort; + MCDRV_SRC_TYPE aeDITSource[IOPORT_NUM]; + MCDRV_SRC_TYPE eAESource; + MCDRV_SRC_TYPE eDAC0Source; + MCDRV_SRC_TYPE eDAC1Source; + UINT8 bDIRUsed[IOPORT_NUM]; + MCDRV_DIO_INFO sDioInfo; + MCDRV_DIO_PORT_NO aePort[IOPORT_NUM] = {eMCDRV_DIO_0, eMCDRV_DIO_1, eMCDRV_DIO_2}; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("ValidateDioParam"); +#endif + + eAESource = McResCtrl_GetAESource(); + eDAC0Source = McResCtrl_GetDACSource(eMCDRV_DAC_MASTER); + eDAC1Source = McResCtrl_GetDACSource(eMCDRV_DAC_VOICE); + + + McResCtrl_GetDioInfo(&sDioInfo); + + for(bPort = 0; bPort < IOPORT_NUM; bPort++) + { + aeDITSource[bPort] = McResCtrl_GetDITSource(aePort[bPort]); + bDIRUsed[bPort] = 0; + } + + if(((eAESource == eMCDRV_SRC_DIR0) || (eDAC0Source == eMCDRV_SRC_DIR0) || (eDAC1Source == eMCDRV_SRC_DIR0)) + || ((aeDITSource[0] == eMCDRV_SRC_DIR0) || (aeDITSource[1] == eMCDRV_SRC_DIR0) || (aeDITSource[2] == eMCDRV_SRC_DIR0))) + { + bDIRUsed[0] = 1; + } + if(((eAESource == eMCDRV_SRC_DIR1) || (eDAC0Source == eMCDRV_SRC_DIR1) || (eDAC1Source == eMCDRV_SRC_DIR1)) + || ((aeDITSource[0] == eMCDRV_SRC_DIR1) || (aeDITSource[1] == eMCDRV_SRC_DIR1) || (aeDITSource[2] == eMCDRV_SRC_DIR1))) + { + bDIRUsed[1] = 1; + } + if(((eAESource == eMCDRV_SRC_DIR2) || (eDAC0Source == eMCDRV_SRC_DIR2) || (eDAC1Source == eMCDRV_SRC_DIR2)) + || ((aeDITSource[0] == eMCDRV_SRC_DIR2) || (aeDITSource[1] == eMCDRV_SRC_DIR2) || (aeDITSource[2] == eMCDRV_SRC_DIR2))) + { + bDIRUsed[2] = 1; + } + + if(((bDIRUsed[0] == 1) && (((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != 0UL) || ((dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != 0UL))) + || ((aeDITSource[0] != eMCDRV_SRC_NONE) && (((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != 0UL) || ((dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != 0UL)))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((bDIRUsed[1] == 1) && (((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != 0UL) || ((dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != 0UL))) + || ((aeDITSource[1] != eMCDRV_SRC_NONE) && (((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != 0UL) || ((dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != 0UL)))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + if(((bDIRUsed[2] == 1) && (((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != 0UL) || ((dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != 0UL))) + || ((aeDITSource[2] != eMCDRV_SRC_NONE) && (((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != 0UL) || ((dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != 0UL)))) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + + if(sdRet == MCDRV_SUCCESS) + { + if((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != 0UL) + { + sdRet = CheckDIOCommon(psDioInfo, 0); + if(sdRet == MCDRV_SUCCESS) + { + sDioInfo.asPortInfo[0].sDioCommon.bInterface = psDioInfo->asPortInfo[0].sDioCommon.bInterface; + } + } + } + if(sdRet == MCDRV_SUCCESS) + { + if((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != 0UL) + { + sdRet = CheckDIOCommon(psDioInfo, 1); + if(sdRet == MCDRV_SUCCESS) + { + sDioInfo.asPortInfo[1].sDioCommon.bInterface = psDioInfo->asPortInfo[1].sDioCommon.bInterface; + } + } + } + if(sdRet == MCDRV_SUCCESS) + { + if((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != 0UL) + { + sdRet = CheckDIOCommon(psDioInfo, 2); + if(sdRet == MCDRV_SUCCESS) + { + sDioInfo.asPortInfo[2].sDioCommon.bInterface = psDioInfo->asPortInfo[2].sDioCommon.bInterface; + } + } + } + + if(sdRet == MCDRV_SUCCESS) + { + if((dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != 0UL) + { + sdRet = CheckDIODIR(psDioInfo, 0, sDioInfo.asPortInfo[0].sDioCommon.bInterface); + } + } + if(sdRet == MCDRV_SUCCESS) + { + if((dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != 0UL) + { + sdRet = CheckDIODIR(psDioInfo, 1, sDioInfo.asPortInfo[1].sDioCommon.bInterface); + } + } + if(sdRet == MCDRV_SUCCESS) + { + if((dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != 0UL) + { + sdRet = CheckDIODIR(psDioInfo, 2, sDioInfo.asPortInfo[2].sDioCommon.bInterface); + } + } + + if(sdRet == MCDRV_SUCCESS) + { + if((dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != 0UL) + { + sdRet = CheckDIODIT(psDioInfo, 0, sDioInfo.asPortInfo[0].sDioCommon.bInterface); + } + } + if(sdRet == MCDRV_SUCCESS) + { + if((dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != 0UL) + { + sdRet = CheckDIODIT(psDioInfo, 1, sDioInfo.asPortInfo[1].sDioCommon.bInterface); + } + } + if(sdRet == MCDRV_SUCCESS) + { + if((dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != 0UL) + { + sdRet = CheckDIODIT(psDioInfo, 2, sDioInfo.asPortInfo[2].sDioCommon.bInterface); + } + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("ValidateDioParam", &sdRet); +#endif + + return sdRet; +} + + +/**************************************************************************** + * CheckDIOCommon + * + * Description: + * validate Digital IO Common parameters. + * Arguments: + * psDioInfo digital IO information + * bPort port number + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 CheckDIOCommon +( + const MCDRV_DIO_INFO* psDioInfo, + UINT8 bPort +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("CheckDIOCommon"); +#endif + + + if(psDioInfo->asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM) + { + if((psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_48000) + || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_44100) + || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_32000) + || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_24000) + || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_22050) + || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_12000) + || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_11025)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + + if((psDioInfo->asPortInfo[bPort].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + && (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_16000)) + { + if(psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_512) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + } + else + { + if((psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_512) + || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_256) + || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_128) + || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_16)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("CheckDIOCommon", &sdRet); +#endif + return sdRet; +} + +/**************************************************************************** + * CheckDIODIR + * + * Description: + * validate Digital IO DIR parameters. + * Arguments: + * psDioInfo digital IO information + * bPort port number + * bInterface Interface(DA/PCM) + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 CheckDIODIR +( + const MCDRV_DIO_INFO* psDioInfo, + UINT8 bPort, + UINT8 bInterface +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("CheckDIODIR"); +#endif + + + if(bInterface == MCDRV_DIO_PCM) + { + if((psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_ALAW) + || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_MULAW)) + { + if((psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_13) + || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_14) + || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_16)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("CheckDIODIR", &sdRet); +#endif + return sdRet; +} + +/**************************************************************************** + * CheckDIDIT + * + * Description: + * validate Digital IO DIT parameters. + * Arguments: + * psDioInfo digital IO information + * bPort port number + * bInterface Interface(DA/PCM) + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 CheckDIODIT +( + const MCDRV_DIO_INFO* psDioInfo, + UINT8 bPort, + UINT8 bInterface +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("CheckDIODIT"); +#endif + + + if(bInterface == MCDRV_DIO_PCM) + { + if((psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_ALAW) + || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_MULAW)) + { + if((psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_13) + || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_14) + || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_16)) + { + sdRet = MCDRV_ERROR_ARGUMENT; + } + } + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("CheckDIODIT", &sdRet); +#endif + return sdRet; +} + +/**************************************************************************** + * SetVol + * + * Description: + * set volume. + * Arguments: + * dUpdate target volume items + * eMode update mode + * pdSVolDoneParam wait soft volume complete flag + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +static SINT32 SetVol +( + UINT32 dUpdate, + MCDRV_VOLUPDATE_MODE eMode, + UINT32* pdSVolDoneParam +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("SetVol"); +#endif + + sdRet = McPacket_AddVol(dUpdate, eMode, pdSVolDoneParam); + if(sdRet == MCDRV_SUCCESS) + { + sdRet = McDevIf_ExecutePacket(); + } + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("SetVol", &sdRet); +#endif + + return sdRet; +} + +/**************************************************************************** + * PreUpdatePath + * + * Description: + * Preprocess update path. + * Arguments: + * pwDACMuteParam wait DAC mute complete flag + * pwDITMuteParam wait DIT mute complete flag + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +static SINT32 PreUpdatePath +( + UINT16* pwDACMuteParam, + UINT16* pwDITMuteParam +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg = 0; + UINT8 bReadReg= 0; + UINT8 bLAT = 0; + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncIn("PreUpdatePath"); +#endif + + *pwDACMuteParam = 0; + *pwDITMuteParam = 0; + + switch(McResCtrl_GetDACSource(eMCDRV_DAC_MASTER)) + { + case eMCDRV_SRC_PDM: + bReg = MCB_DAC_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0: + bReg = MCB_DAC_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0: + bReg = MCB_DAC_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1: + bReg = MCB_DAC_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2: + bReg = MCB_DAC_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX: + bReg = MCB_DAC_SOURCE_MIX; + break; + default: + bReg = 0; + } + bReadReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_SOURCE); + if(((bReadReg & 0xF0) != 0) && (bReg != (bReadReg & 0xF0))) + {/* DAC source changed */ + if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_MASTER_OUTL)&MCB_MASTER_OUTL) != 0) + { + if(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_MASTER_OUTR) != 0) + { + bLAT = MCB_MASTER_OLAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_MASTER_OUTL, bLAT); + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_MASTER_OUTR, 0); + *pwDACMuteParam |= (UINT16)(MCB_MASTER_OFLAGL<<8); + *pwDACMuteParam |= MCB_MASTER_OFLAGR; + } + + switch(McResCtrl_GetDACSource(eMCDRV_DAC_VOICE)) + { + case eMCDRV_SRC_PDM: + bReg = MCB_VOICE_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0: + bReg = MCB_VOICE_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0: + bReg = MCB_VOICE_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1: + bReg = MCB_VOICE_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2: + bReg = MCB_VOICE_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX: + bReg = MCB_VOICE_SOURCE_MIX; + break; + default: + bReg = 0; + } + if(((bReadReg & 0x0F) != 0) && (bReg != (bReadReg & 0x0F))) + {/* VOICE source changed */ + if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_VOICE_ATTL)&MCB_VOICE_ATTL) != 0) + { + if(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_VOICE_ATTR) != 0) + { + bLAT = MCB_VOICE_LAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_VOICE_ATTL, bLAT); + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_VOICE_ATTR, 0); + *pwDACMuteParam |= (UINT16)(MCB_VOICE_FLAGL<<8); + *pwDACMuteParam |= MCB_VOICE_FLAGR; + } + + switch(McResCtrl_GetDITSource(eMCDRV_DIO_0)) + { + case eMCDRV_SRC_PDM: + bReg = MCB_DIT0_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0: + bReg = MCB_DIT0_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0: + bReg = MCB_DIT0_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1: + bReg = MCB_DIT0_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2: + bReg = MCB_DIT0_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX: + bReg = MCB_DIT0_SOURCE_MIX; + break; + default: + bReg = 0; + } + bReadReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_SRC_SOURCE); + if(((bReadReg & 0xF0) != 0) && (bReg != (bReadReg & 0xF0))) + {/* DIT source changed */ + if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIT0_INVOLL)&MCB_DIT0_INVOLL) != 0) + { + if(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIT0_INVOLR) != 0) + { + bLAT = MCB_DIT0_INLAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIT0_INVOLL, bLAT); + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIT0_INVOLR, 0); + *pwDITMuteParam |= (UINT16)(MCB_DIT0_INVFLAGL<<8); + *pwDITMuteParam |= MCB_DIT0_INVFLAGR; + } + + switch(McResCtrl_GetDITSource(eMCDRV_DIO_1)) + { + case eMCDRV_SRC_PDM: + bReg = MCB_DIT1_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0: + bReg = MCB_DIT1_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0: + bReg = MCB_DIT1_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1: + bReg = MCB_DIT1_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2: + bReg = MCB_DIT1_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX: + bReg = MCB_DIT1_SOURCE_MIX; + break; + default: + bReg = 0; + } + if(((bReadReg & 0x0F) != 0) && (bReg != (bReadReg & 0x0F))) + {/* DIT source changed */ + if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIT1_INVOLL)&MCB_DIT1_INVOLL) != 0) + { + if(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIT1_INVOLR) != 0) + { + bLAT = MCB_DIT1_INLAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIT1_INVOLL, bLAT); + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIT1_INVOLR, 0); + *pwDITMuteParam |= (UINT16)(MCB_DIT1_INVFLAGL<<8); + *pwDITMuteParam |= MCB_DIT1_INVFLAGR; + } + + switch(McResCtrl_GetDITSource(eMCDRV_DIO_2)) + { + case eMCDRV_SRC_PDM: + bReg = MCB_DIT2_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0: + bReg = MCB_DIT2_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0: + bReg = MCB_DIT2_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1: + bReg = MCB_DIT2_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2: + bReg = MCB_DIT2_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX: + bReg = MCB_DIT2_SOURCE_MIX; + break; + default: + bReg = 0; + } + bReadReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_SRC_SOURCE_1); + if(((bReadReg & 0x0F) != 0) && (bReg != (bReadReg & 0x0F))) + {/* DIT source changed */ + if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIT2_INVOLL)&MCB_DIT2_INVOLL) != 0) + { + if(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIT2_INVOLR) != 0) + { + bLAT = MCB_DIT2_INLAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIT2_INVOLL, bLAT); + } + McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIT2_INVOLR, 0); + *pwDITMuteParam |= (UINT16)(MCB_DIT2_INVFLAGL<<8); + *pwDITMuteParam |= MCB_DIT2_INVFLAGR; + } + + sdRet = McDevIf_ExecutePacket(); + +#if (MCDRV_DEBUG_LEVEL>=4) + McDebugLog_FuncOut("PreUpdatePath", &sdRet); +#endif + /* do not Execute & Clear */ + return sdRet; +} + +/**************************************************************************** + * McDrv_Ctrl + * + * Description: + * MC Driver I/F function. + * Arguments: + * dCmd command # + * pvPrm parameter + * dPrm update info + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +SINT32 McDrv_Ctrl +( + UINT32 dCmd, + void* pvPrm, + UINT32 dPrm +) +{ + SINT32 sdRet = MCDRV_ERROR; + +#if MCDRV_DEBUG_LEVEL + McDebugLog_CmdIn(dCmd, pvPrm, dPrm); +#endif + + if((UINT32)MCDRV_INIT == dCmd) + { + sdRet = init((MCDRV_INIT_INFO*)pvPrm); + } + else if((UINT32)MCDRV_TERM == dCmd) + { + if(McResCtrl_GetHwId() == MCDRV_HWID_AA) + { + sdRet = McDrv_Ctrl_AA(dCmd, pvPrm, dPrm); + } + else + { + sdRet = term(); + } + } + else + { + if(McResCtrl_GetHwId() == MCDRV_HWID_AA) + { + sdRet = McDrv_Ctrl_AA(dCmd, pvPrm, dPrm); + } + else + { + McSrv_Lock(); + + switch (dCmd) + { + case MCDRV_UPDATE_CLOCK: + sdRet = update_clock((MCDRV_CLOCK_INFO*)pvPrm); + break; + case MCDRV_SWITCH_CLOCK: + sdRet = switch_clock((MCDRV_CLKSW_INFO*)pvPrm); + break; + case MCDRV_GET_PATH: + sdRet = get_path((MCDRV_PATH_INFO*)pvPrm); + break; + case MCDRV_SET_PATH: + sdRet = set_path((MCDRV_PATH_INFO*)pvPrm); + break; + case MCDRV_GET_VOLUME: + sdRet = get_volume((MCDRV_VOL_INFO*)pvPrm); + break; + case MCDRV_SET_VOLUME: + sdRet = set_volume((MCDRV_VOL_INFO*)pvPrm); + break; + case MCDRV_GET_DIGITALIO: + sdRet = get_digitalio((MCDRV_DIO_INFO*)pvPrm); + break; + case MCDRV_SET_DIGITALIO: + sdRet = set_digitalio((MCDRV_DIO_INFO*)pvPrm, dPrm); + break; + case MCDRV_GET_DAC: + sdRet = get_dac((MCDRV_DAC_INFO*)pvPrm); + break; + case MCDRV_SET_DAC: + sdRet = set_dac((MCDRV_DAC_INFO*)pvPrm, dPrm); + break; + case MCDRV_GET_ADC: + sdRet = get_adc((MCDRV_ADC_INFO*)pvPrm); + break; + case MCDRV_SET_ADC: + sdRet = set_adc((MCDRV_ADC_INFO*)pvPrm, dPrm); + break; + case MCDRV_GET_SP: + sdRet = get_sp((MCDRV_SP_INFO*)pvPrm); + break; + case MCDRV_SET_SP: + sdRet = set_sp((MCDRV_SP_INFO*)pvPrm); + break; + case MCDRV_GET_DNG: + sdRet = get_dng((MCDRV_DNG_INFO*)pvPrm); + break; + case MCDRV_SET_DNG: + sdRet = set_dng((MCDRV_DNG_INFO*)pvPrm, dPrm); + break; + case MCDRV_SET_AUDIOENGINE: + sdRet = set_ae((MCDRV_AE_INFO*)pvPrm, dPrm); + break; + case MCDRV_GET_PDM: + sdRet = get_pdm((MCDRV_PDM_INFO*)pvPrm); + break; + case MCDRV_SET_PDM: + sdRet = set_pdm((MCDRV_PDM_INFO*)pvPrm, dPrm); + break; + case MCDRV_CONFIG_GP: + sdRet = config_gp((MCDRV_GP_MODE*)pvPrm); + break; + case MCDRV_MASK_GP: + sdRet = mask_gp((UINT8*)pvPrm, dPrm); + break; + case MCDRV_GETSET_GP: + sdRet = getset_gp((UINT8*)pvPrm, dPrm); + break; + case MCDRV_GET_SYSEQ: + sdRet = get_syseq((MCDRV_SYSEQ_INFO*)pvPrm); + break; + case MCDRV_SET_SYSEQ: + sdRet = set_syseq((MCDRV_SYSEQ_INFO*)pvPrm, dPrm); + break; + case MCDRV_READ_REG : + sdRet = read_reg((MCDRV_REG_INFO*)pvPrm); + break; + case MCDRV_WRITE_REG : + sdRet = write_reg((MCDRV_REG_INFO*)pvPrm); + break; + + case MCDRV_IRQ: + break; + + default: + break; + } + + McSrv_Unlock(); + } + } + +#if MCDRV_DEBUG_LEVEL + McDebugLog_CmdOut(dCmd, &sdRet, pvPrm); +#endif + + return sdRet; +} diff --git a/sound/soc/codecs/mc1n2/mcdriver.h b/sound/soc/codecs/mc1n2/mcdriver.h new file mode 100644 index 0000000..af27d30 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdriver.h @@ -0,0 +1,906 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcdriver.h
+ *
+ * Description : MC Driver header
+ *
+ * Version : 1.0.0 2010.07.05
+ *
+ ****************************************************************************/
+
+#ifndef _MCDRIVER_H_
+#define _MCDRIVER_H_
+
+#include "mctypedef.h"
+
+
+
+signed long McDrv_Ctrl( UINT32 dCmd, void* pvPrm, UINT32 dPrm );
+
+
+
+
+/* return value */
+#define MCDRV_SUCCESS ((SINT32)0)
+#define MCDRV_ERROR_ARGUMENT (-1)
+#define MCDRV_ERROR_TIMEOUT (-2)
+#define MCDRV_ERROR_INIT (-3)
+#define MCDRV_ERROR_RESOURCEOVER (-4)
+#define MCDRV_ERROR_STATE (-5)
+
+#define MCDRV_ERROR (-10)
+
+
+/* dCmd */
+#define MCDRV_INIT (0)
+#define MCDRV_TERM (1)
+#define MCDRV_READ_REG (2)
+#define MCDRV_WRITE_REG (3)
+#define MCDRV_GET_PATH (4)
+#define MCDRV_SET_PATH (5)
+#define MCDRV_GET_VOLUME (6)
+#define MCDRV_SET_VOLUME (7)
+#define MCDRV_GET_DIGITALIO (8)
+#define MCDRV_SET_DIGITALIO (9)
+#define MCDRV_GET_DAC (10)
+#define MCDRV_SET_DAC (11)
+#define MCDRV_GET_ADC (12)
+#define MCDRV_SET_ADC (13)
+#define MCDRV_GET_SP (14)
+#define MCDRV_SET_SP (15)
+#define MCDRV_GET_DNG (16)
+#define MCDRV_SET_DNG (17)
+#define MCDRV_SET_AUDIOENGINE (18)
+#define MCDRV_SET_AUDIOENGINE_EX (19)
+#define MCDRV_SET_CDSP (20)
+#define MCDRV_GET_CDSP_PARAM (21)
+#define MCDRV_SET_CDSP_PARAM (22)
+#define MCDRV_REGISTER_CDSP_CB (23)
+#define MCDRV_GET_PDM (24)
+#define MCDRV_SET_PDM (25)
+#define MCDRV_SET_DTMF (26)
+#define MCDRV_CONFIG_GP (27)
+#define MCDRV_MASK_GP (28)
+#define MCDRV_GETSET_GP (29)
+#define MCDRV_GET_PEAK (30)
+#define MCDRV_IRQ (31)
+#define MCDRV_UPDATE_CLOCK (32)
+#define MCDRV_SWITCH_CLOCK (33)
+#define MCDRV_GET_SYSEQ (34)
+#define MCDRV_SET_SYSEQ (35)
+
+/* pvPrm */
+/* init */
+/* MCDRV_INIT_INFO bCkSel setting */
+#define MCDRV_CKSEL_CMOS (0x00)
+#define MCDRV_CKSEL_TCXO (0xC0)
+#define MCDRV_CKSEL_CMOS_TCXO (0x80)
+#define MCDRV_CKSEL_TCXO_CMOS (0x40)
+
+/* MCDRV_INIT_INFO bXXXHiz setting */
+#define MCDRV_DAHIZ_LOW (0)
+#define MCDRV_DAHIZ_HIZ (1)
+
+/* CDRV_INIT_INFO bPcmHiz setting */
+#define MCDRV_PCMHIZ_LOW (0)
+#define MCDRV_PCMHIZ_HIZ (1)
+
+/* MCDRV_INIT_INFO bSvolStep setting */
+#define MCDRV_SVOLSTEP_0137 (0)
+#define MCDRV_SVOLSTEP_0274 (1)
+#define MCDRV_SVOLSTEP_0548 (2)
+#define MCDRV_SVOLSTEP_1096 (3)
+
+/* MCDRV_INIT_INFO bLinexxDif setting */
+#define MCDRV_LINE_STEREO (0)
+#define MCDRV_LINE_DIF (1)
+
+/* MCDRV_INIT_INFO bSpmn setting */
+#define MCDRV_SPMN_ON (0)
+#define MCDRV_SPMN_OFF (1)
+
+/* MCDRV_INIT_INFO bMicxSng setting */
+#define MCDRV_MIC_DIF (0)
+#define MCDRV_MIC_SINGLE (1)
+
+/* MCDRV_INIT_INFO bPowerMode setting */
+#define MCDRV_POWMODE_NORMAL (0)
+#define MCDRV_POWMODE_CLKON (1)
+#define MCDRV_POWMODE_VREFON (2)
+#define MCDRV_POWMODE_CLKVREFON (3)
+#define MCDRV_POWMODE_FULL (4)
+
+/* bSpHiz setting */
+#define MCDRV_SPHIZ_PULLDOWN (0)
+#define MCDRV_SPHIZ_HIZ (1)
+
+/* MCDRV_INIT_INFO bLdo setting */
+#define MCDRV_LDO_OFF (0)
+#define MCDRV_LDO_ON (1)
+
+/* MCDRV_INIT_INFO bPadxFunc setting */
+#define MCDRV_PAD_GPIO (0)
+#define MCDRV_PAD_PDMCK (1)
+#define MCDRV_PAD_PDMDI (2)
+#define MCDRV_PAD_IRQ (3)
+
+/* MCDRV_INIT_INFO bAvddLev/bVrefLev setting */
+#define MCDRV_OUTLEV_0 (0)
+#define MCDRV_OUTLEV_1 (1)
+#define MCDRV_OUTLEV_2 (2)
+#define MCDRV_OUTLEV_3 (3)
+#define MCDRV_OUTLEV_4 (4)
+#define MCDRV_OUTLEV_5 (5)
+#define MCDRV_OUTLEV_6 (6)
+#define MCDRV_OUTLEV_7 (7)
+
+/* MCDRV_INIT_INFO bDclGain setting */
+#define MCDRV_DCLGAIN_0 (0)
+#define MCDRV_DCLGAIN_6 (1)
+#define MCDRV_DCLGAIN_12 (2)
+#define MCDRV_DCLGAIN_18 (3)
+
+/* MCDRV_INIT_INFO bDclLimit setting */
+#define MCDRV_DCLLIMIT_0 (0)
+#define MCDRV_DCLLIMIT_116 (1)
+#define MCDRV_DCLLIMIT_250 (2)
+#define MCDRV_DCLLIMIT_602 (3)
+
+/* MCDRV_INIT_INFO bCpMod setting */
+#define MCDRV_CPMOD_ON (0)
+#define MCDRV_CPMOD_OFF (1)
+
+typedef struct
+{
+ UINT32 dAdHpf;
+ UINT32 dMic1Cin;
+ UINT32 dMic2Cin;
+ UINT32 dMic3Cin;
+ UINT32 dLine1Cin;
+ UINT32 dLine2Cin;
+ UINT32 dVrefRdy1;
+ UINT32 dVrefRdy2;
+ UINT32 dHpRdy;
+ UINT32 dSpRdy;
+ UINT32 dPdm;
+ UINT32 dAnaRdyInterval;
+ UINT32 dSvolInterval;
+ UINT32 dAnaRdyTimeOut;
+ UINT32 dSvolTimeOut;
+} MCDRV_WAIT_TIME;
+
+typedef struct
+{
+ UINT8 bCkSel;
+ UINT8 bDivR0;
+ UINT8 bDivF0;
+ UINT8 bDivR1;
+ UINT8 bDivF1;
+ UINT8 bRange0;
+ UINT8 bRange1;
+ UINT8 bBypass;
+ UINT8 bDioSdo0Hiz;
+ UINT8 bDioSdo1Hiz;
+ UINT8 bDioSdo2Hiz;
+ UINT8 bDioClk0Hiz;
+ UINT8 bDioClk1Hiz;
+ UINT8 bDioClk2Hiz;
+ UINT8 bPcmHiz;
+ UINT8 bLineIn1Dif;
+ UINT8 bLineIn2Dif;
+ UINT8 bLineOut1Dif;
+ UINT8 bLineOut2Dif;
+ UINT8 bSpmn;
+ UINT8 bMic1Sng;
+ UINT8 bMic2Sng;
+ UINT8 bMic3Sng;
+ UINT8 bPowerMode;
+ UINT8 bSpHiz;
+ UINT8 bLdo;
+ UINT8 bPad0Func;
+ UINT8 bPad1Func;
+ UINT8 bPad2Func;
+ UINT8 bAvddLev;
+ UINT8 bVrefLev;
+ UINT8 bDclGain;
+ UINT8 bDclLimit;
+ UINT8 bCpMod;
+ UINT8 bReserved1;
+ UINT8 bReserved2;
+ UINT8 bReserved3;
+ UINT8 bReserved4;
+ UINT8 bReserved5;
+ MCDRV_WAIT_TIME sWaitTime;
+} MCDRV_INIT_INFO;
+
+/* update clock */
+typedef struct
+{
+ UINT8 bCkSel;
+ UINT8 bDivR0;
+ UINT8 bDivF0;
+ UINT8 bDivR1;
+ UINT8 bDivF1;
+ UINT8 bRange0;
+ UINT8 bRange1;
+ UINT8 bBypass;
+} MCDRV_CLOCK_INFO;
+
+/* switch clock */
+/* MCDRV_CLKSW_INFO bClkSrc setting */
+#define MCDRV_CLKSW_CLKI0 (0x00)
+#define MCDRV_CLKSW_CLKI1 (0x01)
+
+typedef struct
+{
+ UINT8 bClkSrc;
+} MCDRV_CLKSW_INFO;
+
+/* set/get path */
+#define SOURCE_BLOCK_NUM (7)
+#define MCDRV_SRC_MIC1_BLOCK (0)
+#define MCDRV_SRC_MIC2_BLOCK (0)
+#define MCDRV_SRC_MIC3_BLOCK (0)
+#define MCDRV_SRC_LINE1_L_BLOCK (1)
+#define MCDRV_SRC_LINE1_R_BLOCK (1)
+#define MCDRV_SRC_LINE1_M_BLOCK (1)
+#define MCDRV_SRC_LINE2_L_BLOCK (2)
+#define MCDRV_SRC_LINE2_R_BLOCK (2)
+#define MCDRV_SRC_LINE2_M_BLOCK (2)
+#define MCDRV_SRC_DIR0_BLOCK (3)
+#define MCDRV_SRC_DIR1_BLOCK (3)
+#define MCDRV_SRC_DIR2_BLOCK (3)
+#define MCDRV_SRC_DIR2_DIRECT_BLOCK (3)
+#define MCDRV_SRC_DTMF_BLOCK (4)
+#define MCDRV_SRC_PDM_BLOCK (4)
+#define MCDRV_SRC_ADC0_BLOCK (4)
+#define MCDRV_SRC_ADC1_BLOCK (4)
+#define MCDRV_SRC_DAC_L_BLOCK (5)
+#define MCDRV_SRC_DAC_R_BLOCK (5)
+#define MCDRV_SRC_DAC_M_BLOCK (5)
+#define MCDRV_SRC_MIX_BLOCK (6)
+#define MCDRV_SRC_AE_BLOCK (6)
+#define MCDRV_SRC_CDSP_BLOCK (6)
+#define MCDRV_SRC_CDSP_DIRECT_BLOCK (6)
+
+#define MCDRV_SRC0_MIC1_ON (0x01)
+#define MCDRV_SRC0_MIC1_OFF (0x02)
+#define MCDRV_SRC0_MIC2_ON (0x04)
+#define MCDRV_SRC0_MIC2_OFF (0x08)
+#define MCDRV_SRC0_MIC3_ON (0x10)
+#define MCDRV_SRC0_MIC3_OFF (0x20)
+#define MCDRV_SRC1_LINE1_L_ON (0x01)
+#define MCDRV_SRC1_LINE1_L_OFF (0x02)
+#define MCDRV_SRC1_LINE1_R_ON (0x04)
+#define MCDRV_SRC1_LINE1_R_OFF (0x08)
+#define MCDRV_SRC1_LINE1_M_ON (0x10)
+#define MCDRV_SRC1_LINE1_M_OFF (0x20)
+#define MCDRV_SRC2_LINE2_L_ON (0x01)
+#define MCDRV_SRC2_LINE2_L_OFF (0x02)
+#define MCDRV_SRC2_LINE2_R_ON (0x04)
+#define MCDRV_SRC2_LINE2_R_OFF (0x08)
+#define MCDRV_SRC2_LINE2_M_ON (0x10)
+#define MCDRV_SRC2_LINE2_M_OFF (0x20)
+#define MCDRV_SRC3_DIR0_ON (0x01)
+#define MCDRV_SRC3_DIR0_OFF (0x02)
+#define MCDRV_SRC3_DIR1_ON (0x04)
+#define MCDRV_SRC3_DIR1_OFF (0x08)
+#define MCDRV_SRC3_DIR2_ON (0x10)
+#define MCDRV_SRC3_DIR2_OFF (0x20)
+#define MCDRV_SRC3_DIR2_DIRECT_ON (0x40)
+#define MCDRV_SRC3_DIR2_DIRECT_OFF (0x80)
+#define MCDRV_SRC4_DTMF_ON (0x01)
+#define MCDRV_SRC4_DTMF_OFF (0x02)
+#define MCDRV_SRC4_PDM_ON (0x04)
+#define MCDRV_SRC4_PDM_OFF (0x08)
+#define MCDRV_SRC4_ADC0_ON (0x10)
+#define MCDRV_SRC4_ADC0_OFF (0x20)
+#define MCDRV_SRC4_ADC1_ON (0x40)
+#define MCDRV_SRC4_ADC1_OFF (0x80)
+#define MCDRV_SRC5_DAC_L_ON (0x01)
+#define MCDRV_SRC5_DAC_L_OFF (0x02)
+#define MCDRV_SRC5_DAC_R_ON (0x04)
+#define MCDRV_SRC5_DAC_R_OFF (0x08)
+#define MCDRV_SRC5_DAC_M_ON (0x10)
+#define MCDRV_SRC5_DAC_M_OFF (0x20)
+#define MCDRV_SRC6_MIX_ON (0x01)
+#define MCDRV_SRC6_MIX_OFF (0x02)
+#define MCDRV_SRC6_AE_ON (0x04)
+#define MCDRV_SRC6_AE_OFF (0x08)
+#define MCDRV_SRC6_CDSP_ON (0x10)
+#define MCDRV_SRC6_CDSP_OFF (0x20)
+#define MCDRV_SRC6_CDSP_DIRECT_ON (0x40)
+#define MCDRV_SRC6_CDSP_DIRECT_OFF (0x80)
+
+typedef struct
+{
+ UINT8 abSrcOnOff[SOURCE_BLOCK_NUM];
+} MCDRV_CHANNEL;
+
+#define HP_PATH_CHANNELS (2)
+#define SP_PATH_CHANNELS (2)
+#define RC_PATH_CHANNELS (1)
+#define LOUT1_PATH_CHANNELS (2)
+#define LOUT2_PATH_CHANNELS (2)
+#define PEAK_PATH_CHANNELS (1)
+#define DIT0_PATH_CHANNELS (1)
+#define DIT1_PATH_CHANNELS (1)
+#define DIT2_PATH_CHANNELS (1)
+#define DAC_PATH_CHANNELS (2)
+#define AE_PATH_CHANNELS (1)
+#define CDSP_PATH_CHANNELS (4)
+#define ADC0_PATH_CHANNELS (2)
+#define ADC1_PATH_CHANNELS (1)
+#define MIX_PATH_CHANNELS (1)
+#define BIAS_PATH_CHANNELS (1)
+
+typedef struct
+{
+ MCDRV_CHANNEL asHpOut[HP_PATH_CHANNELS];
+ MCDRV_CHANNEL asSpOut[SP_PATH_CHANNELS];
+ MCDRV_CHANNEL asRcOut[RC_PATH_CHANNELS];
+ MCDRV_CHANNEL asLout1[LOUT1_PATH_CHANNELS];
+ MCDRV_CHANNEL asLout2[LOUT2_PATH_CHANNELS];
+ MCDRV_CHANNEL asPeak[PEAK_PATH_CHANNELS];
+ MCDRV_CHANNEL asDit0[DIT0_PATH_CHANNELS];
+ MCDRV_CHANNEL asDit1[DIT1_PATH_CHANNELS];
+ MCDRV_CHANNEL asDit2[DIT2_PATH_CHANNELS];
+ MCDRV_CHANNEL asDac[DAC_PATH_CHANNELS];
+ MCDRV_CHANNEL asAe[AE_PATH_CHANNELS];
+ MCDRV_CHANNEL asCdsp[CDSP_PATH_CHANNELS];
+ MCDRV_CHANNEL asAdc0[ADC0_PATH_CHANNELS];
+ MCDRV_CHANNEL asAdc1[ADC1_PATH_CHANNELS];
+ MCDRV_CHANNEL asMix[MIX_PATH_CHANNELS];
+ MCDRV_CHANNEL asBias[BIAS_PATH_CHANNELS];
+} MCDRV_PATH_INFO;
+
+/* set/get vol */
+#define MCDRV_VOL_UPDATE (0x0001)
+
+#define AD0_VOL_CHANNELS (2)
+#define AD1_VOL_CHANNELS (1)
+#define AENG6_VOL_CHANNELS (2)
+#define PDM_VOL_CHANNELS (2)
+#define DTMF_VOL_CHANNELS (2)
+#define DIO0_VOL_CHANNELS (2)
+#define DIO1_VOL_CHANNELS (2)
+#define DIO2_VOL_CHANNELS (2)
+#define DTFM_VOL_CHANNELS (2)
+#define DAC_VOL_CHANNELS (2)
+
+#define LIN1_VOL_CHANNELS (2)
+#define LIN2_VOL_CHANNELS (2)
+#define MIC1_VOL_CHANNELS (1)
+#define MIC2_VOL_CHANNELS (1)
+#define MIC3_VOL_CHANNELS (1)
+#define HP_VOL_CHANNELS (2)
+#define SP_VOL_CHANNELS (2)
+#define RC_VOL_CHANNELS (1)
+#define LOUT1_VOL_CHANNELS (2)
+#define LOUT2_VOL_CHANNELS (2)
+#define HPGAIN_VOL_CHANNELS (1)
+
+typedef struct
+{
+ SINT16 aswD_Ad0[AD0_VOL_CHANNELS];
+ SINT16 aswD_Ad1[AD1_VOL_CHANNELS];
+ SINT16 aswD_Aeng6[AENG6_VOL_CHANNELS];
+ SINT16 aswD_Pdm[PDM_VOL_CHANNELS];
+ SINT16 aswD_Dtmfb[DTMF_VOL_CHANNELS];
+ SINT16 aswD_Dir0[DIO0_VOL_CHANNELS];
+ SINT16 aswD_Dir1[DIO1_VOL_CHANNELS];
+ SINT16 aswD_Dir2[DIO2_VOL_CHANNELS];
+ SINT16 aswD_Ad0Att[AD0_VOL_CHANNELS];
+ SINT16 aswD_Ad1Att[AD1_VOL_CHANNELS];
+ SINT16 aswD_Dir0Att[DIO0_VOL_CHANNELS];
+ SINT16 aswD_Dir1Att[DIO1_VOL_CHANNELS];
+ SINT16 aswD_Dir2Att[DIO2_VOL_CHANNELS];
+ SINT16 aswD_SideTone[PDM_VOL_CHANNELS];
+ SINT16 aswD_DtmfAtt[DTFM_VOL_CHANNELS];
+ SINT16 aswD_DacMaster[DAC_VOL_CHANNELS];
+ SINT16 aswD_DacVoice[DAC_VOL_CHANNELS];
+ SINT16 aswD_DacAtt[DAC_VOL_CHANNELS];
+ SINT16 aswD_Dit0[DIO0_VOL_CHANNELS];
+ SINT16 aswD_Dit1[DIO1_VOL_CHANNELS];
+ SINT16 aswD_Dit2[DIO2_VOL_CHANNELS];
+ SINT16 aswA_Ad0[AD0_VOL_CHANNELS];
+ SINT16 aswA_Ad1[AD1_VOL_CHANNELS];
+ SINT16 aswA_Lin1[LIN1_VOL_CHANNELS];
+ SINT16 aswA_Lin2[LIN2_VOL_CHANNELS];
+ SINT16 aswA_Mic1[MIC1_VOL_CHANNELS];
+ SINT16 aswA_Mic2[MIC2_VOL_CHANNELS];
+ SINT16 aswA_Mic3[MIC3_VOL_CHANNELS];
+ SINT16 aswA_Hp[HP_VOL_CHANNELS];
+ SINT16 aswA_Sp[SP_VOL_CHANNELS];
+ SINT16 aswA_Rc[RC_VOL_CHANNELS];
+ SINT16 aswA_Lout1[LOUT1_VOL_CHANNELS];
+ SINT16 aswA_Lout2[LOUT2_VOL_CHANNELS];
+ SINT16 aswA_Mic1Gain[MIC1_VOL_CHANNELS];
+ SINT16 aswA_Mic2Gain[MIC2_VOL_CHANNELS];
+ SINT16 aswA_Mic3Gain[MIC3_VOL_CHANNELS];
+ SINT16 aswA_HpGain[HPGAIN_VOL_CHANNELS];
+} MCDRV_VOL_INFO;
+
+/* set/get digitalio */
+#define MCDRV_DIO0_COM_UPDATE_FLAG ((UINT32)0x00000001)
+#define MCDRV_DIO0_DIR_UPDATE_FLAG ((UINT32)0x00000002)
+#define MCDRV_DIO0_DIT_UPDATE_FLAG ((UINT32)0x00000004)
+#define MCDRV_DIO1_COM_UPDATE_FLAG ((UINT32)0x00000008)
+#define MCDRV_DIO1_DIR_UPDATE_FLAG ((UINT32)0x00000010)
+#define MCDRV_DIO1_DIT_UPDATE_FLAG ((UINT32)0x00000020)
+#define MCDRV_DIO2_COM_UPDATE_FLAG ((UINT32)0x00000040)
+#define MCDRV_DIO2_DIR_UPDATE_FLAG ((UINT32)0x00000080)
+#define MCDRV_DIO2_DIT_UPDATE_FLAG ((UINT32)0x00000100)
+
+/* MCDRV_DIO_COMMON bMasterSlave setting */
+#define MCDRV_DIO_SLAVE (0)
+#define MCDRV_DIO_MASTER (1)
+
+/* MCDRV_DIO_COMMON bDigitalAutoFs setting */
+#define MCDRV_AUTOFS_OFF (0)
+#define MCDRV_AUTOFS_ON (1)
+
+/* MCDRV_DIO_COMMON bFs setting */
+#define MCDRV_FS_48000 (0)
+#define MCDRV_FS_44100 (1)
+#define MCDRV_FS_32000 (2)
+#define MCDRV_FS_24000 (4)
+#define MCDRV_FS_22050 (5)
+#define MCDRV_FS_16000 (6)
+#define MCDRV_FS_12000 (8)
+#define MCDRV_FS_11025 (9)
+#define MCDRV_FS_8000 (10)
+
+/* MCDRV_DIO_COMMON bBckFs setting */
+#define MCDRV_BCKFS_64 (0)
+#define MCDRV_BCKFS_48 (1)
+#define MCDRV_BCKFS_32 (2)
+#define MCDRV_BCKFS_512 (4)
+#define MCDRV_BCKFS_256 (5)
+#define MCDRV_BCKFS_128 (6)
+#define MCDRV_BCKFS_16 (7)
+
+/* MCDRV_DIO_COMMON bInterface setting */
+#define MCDRV_DIO_DA (0)
+#define MCDRV_DIO_PCM (1)
+
+/* MCDRV_DIO_COMMON bBckInvert setting */
+#define MCDRV_BCLK_NORMAL (0)
+#define MCDRV_BCLK_INVERT (1)
+
+/* MCDRV_DIO_COMMON bPcmHizTim setting */
+#define MCDRV_PCMHIZTIM_FALLING (0)
+#define MCDRV_PCMHIZTIM_RISING (1)
+
+/* MCDRV_DIO_COMMON bPcmClkDown setting */
+#define MCDRV_PCM_CLKDOWN_OFF (0)
+#define MCDRV_PCM_CLKDOWN_HALF (1)
+
+/* MCDRV_DIO_COMMON bPcmFrame setting */
+#define MCDRV_PCM_SHORTFRAME (0)
+#define MCDRV_PCM_LONGFRAME (1)
+
+typedef struct
+{
+ UINT8 bMasterSlave;
+ UINT8 bAutoFs;
+ UINT8 bFs;
+ UINT8 bBckFs;
+ UINT8 bInterface;
+ UINT8 bBckInvert;
+ UINT8 bPcmHizTim;
+ UINT8 bPcmClkDown;
+ UINT8 bPcmFrame;
+ UINT8 bPcmHighPeriod;
+} MCDRV_DIO_COMMON;
+
+/* MCDRV_DA_FORMAT bBitSel setting */
+#define MCDRV_BITSEL_16 (0)
+#define MCDRV_BITSEL_20 (1)
+#define MCDRV_BITSEL_24 (2)
+
+/* MCDRV_DA_FORMAT bMode setting */
+#define MCDRV_DAMODE_HEADALIGN (0)
+#define MCDRV_DAMODE_I2S (1)
+#define MCDRV_DAMODE_TAILALIGN (2)
+
+typedef struct
+{
+ UINT8 bBitSel;
+ UINT8 bMode;
+} MCDRV_DA_FORMAT;
+
+/* MCDRV_PCM_FORMAT bMono setting */
+#define MCDRV_PCM_STEREO (0)
+#define MCDRV_PCM_MONO (1)
+
+/* MCDRV_PCM_FORMAT bOrder setting */
+#define MCDRV_PCM_MSB_FIRST (0)
+#define MCDRV_PCM_LSB_FIRST (1)
+#define MCDRV_PCM_MSB_FIRST_SIGN (2)
+#define MCDRV_PCM_LSB_FIRST_SIGN (3)
+#define MCDRV_PCM_MSB_FIRST_ZERO (4)
+#define MCDRV_PCM_LSB_FIRST_ZERO (5)
+
+/* MCDRV_PCM_FORMAT bLaw setting */
+#define MCDRV_PCM_LINEAR (0)
+#define MCDRV_PCM_ALAW (1)
+#define MCDRV_PCM_MULAW (2)
+
+/* MCDRV_PCM_FORMAT bBitSel setting */
+#define MCDRV_PCM_BITSEL_8 (0)
+#define MCDRV_PCM_BITSEL_13 (1)
+#define MCDRV_PCM_BITSEL_14 (2)
+#define MCDRV_PCM_BITSEL_16 (3)
+
+typedef struct
+{
+ UINT8 bMono;
+ UINT8 bOrder;
+ UINT8 bLaw;
+ UINT8 bBitSel;
+} MCDRV_PCM_FORMAT;
+
+#define DIO_CHANNELS (2)
+typedef struct
+{
+ UINT16 wSrcRate;
+ MCDRV_DA_FORMAT sDaFormat;
+ MCDRV_PCM_FORMAT sPcmFormat;
+ UINT8 abSlot[DIO_CHANNELS];
+} MCDRV_DIO_DIR;
+
+typedef struct
+{
+ UINT16 wSrcRate;
+ MCDRV_DA_FORMAT sDaFormat;
+ MCDRV_PCM_FORMAT sPcmFormat;
+ UINT8 abSlot[DIO_CHANNELS];
+} MCDRV_DIO_DIT;
+
+typedef struct
+{
+ MCDRV_DIO_COMMON sDioCommon;
+ MCDRV_DIO_DIR sDir;
+ MCDRV_DIO_DIT sDit;
+} MCDRV_DIO_PORT;
+
+#define IOPORT_NUM (3)
+typedef struct
+{
+ MCDRV_DIO_PORT asPortInfo[IOPORT_NUM];
+} MCDRV_DIO_INFO;
+
+/* set dac */
+#define MCDRV_DAC_MSWP_UPDATE_FLAG ((UINT32)0x01)
+#define MCDRV_DAC_VSWP_UPDATE_FLAG ((UINT32)0x02)
+#define MCDRV_DAC_HPF_UPDATE_FLAG ((UINT32)0x04)
+
+/* MCDRV_DAC_INFO bMasterSwap/bVoiceSwap setting */
+#define MCDRV_DSWAP_OFF (0)
+#define MCDRV_DSWAP_SWAP (1)
+#define MCDRV_DSWAP_MUTE (2)
+#define MCDRV_DSWAP_RMVCENTER (3)
+#define MCDRV_DSWAP_MONO (4)
+#define MCDRV_DSWAP_MONOHALF (5)
+#define MCDRV_DSWAP_BOTHL (6)
+#define MCDRV_DSWAP_BOTHR (7)
+
+/* MCDRV_DAC_INFO bDcCut setting */
+#define MCDRV_DCCUT_ON (0)
+#define MCDRV_DCCUT_OFF (1)
+
+typedef struct
+{
+ UINT8 bMasterSwap;
+ UINT8 bVoiceSwap;
+ UINT8 bDcCut;
+} MCDRV_DAC_INFO;
+
+/* set adc */
+#define MCDRV_ADCADJ_UPDATE_FLAG ((UINT32)0x00000001)
+#define MCDRV_ADCAGC_UPDATE_FLAG ((UINT32)0x00000002)
+#define MCDRV_ADCMONO_UPDATE_FLAG ((UINT32)0x00000004)
+
+/* MCDRV_ADC_INFO bAgcAdjust setting */
+#define MCDRV_AGCADJ_24 (0)
+#define MCDRV_AGCADJ_18 (1)
+#define MCDRV_AGCADJ_12 (2)
+#define MCDRV_AGCADJ_0 (3)
+
+/* MCDRV_ADC_INFO bAgcOn setting */
+#define MCDRV_AGC_OFF (0)
+#define MCDRV_AGC_ON (1)
+
+/* MCDRV_ADC_INFO bMono setting */
+#define MCDRV_ADC_STEREO (0)
+#define MCDRV_ADC_MONO (1)
+
+typedef struct
+{
+ UINT8 bAgcAdjust;
+ UINT8 bAgcOn;
+ UINT8 bMono;
+} MCDRV_ADC_INFO;
+
+/* set sp */
+/* MCDRV_SP_INFO bSwap setting */
+#define MCDRV_SPSWAP_OFF (0)
+#define MCDRV_SPSWAP_SWAP (1)
+
+typedef struct
+{
+ UINT8 bSwap;
+} MCDRV_SP_INFO;
+
+/* set dng */
+#define DNG_ITEM_NUM (3)
+#define MCDRV_DNG_ITEM_HP (0)
+#define MCDRV_DNG_ITEM_SP (1)
+#define MCDRV_DNG_ITEM_RC (2)
+
+#define MCDRV_DNGSW_HP_UPDATE_FLAG ((UINT32)0x00000001)
+#define MCDRV_DNGTHRES_HP_UPDATE_FLAG ((UINT32)0x00000002)
+#define MCDRV_DNGHOLD_HP_UPDATE_FLAG ((UINT32)0x00000004)
+#define MCDRV_DNGATK_HP_UPDATE_FLAG ((UINT32)0x00000008)
+#define MCDRV_DNGREL_HP_UPDATE_FLAG ((UINT32)0x00000010)
+#define MCDRV_DNGTARGET_HP_UPDATE_FLAG ((UINT32)0x00000020)
+#define MCDRV_DNGSW_SP_UPDATE_FLAG ((UINT32)0x00000100)
+#define MCDRV_DNGTHRES_SP_UPDATE_FLAG ((UINT32)0x00000200)
+#define MCDRV_DNGHOLD_SP_UPDATE_FLAG ((UINT32)0x00000400)
+#define MCDRV_DNGATK_SP_UPDATE_FLAG ((UINT32)0x00000800)
+#define MCDRV_DNGREL_SP_UPDATE_FLAG ((UINT32)0x00001000)
+#define MCDRV_DNGTARGET_SP_UPDATE_FLAG ((UINT32)0x00002000)
+#define MCDRV_DNGSW_RC_UPDATE_FLAG ((UINT32)0x00010000)
+#define MCDRV_DNGTHRES_RC_UPDATE_FLAG ((UINT32)0x00020000)
+#define MCDRV_DNGHOLD_RC_UPDATE_FLAG ((UINT32)0x00040000)
+#define MCDRV_DNGATK_RC_UPDATE_FLAG ((UINT32)0x00080000)
+#define MCDRV_DNGREL_RC_UPDATE_FLAG ((UINT32)0x00100000)
+#define MCDRV_DNGTARGET_RC_UPDATE_FLAG ((UINT32)0x00200000)
+
+/* MCDRV_DNG_INFO bOnOff setting */
+#define MCDRV_DNG_OFF (0)
+#define MCDRV_DNG_ON (1)
+
+/* MCDRV_DNG_INFO bThreshold setting */
+#define MCDRV_DNG_THRES_30 (0)
+#define MCDRV_DNG_THRES_36 (1)
+#define MCDRV_DNG_THRES_42 (2)
+#define MCDRV_DNG_THRES_48 (3)
+#define MCDRV_DNG_THRES_54 (4)
+#define MCDRV_DNG_THRES_60 (5)
+#define MCDRV_DNG_THRES_66 (6)
+#define MCDRV_DNG_THRES_72 (7)
+#define MCDRV_DNG_THRES_78 (8)
+#define MCDRV_DNG_THRES_84 (9)
+
+/* MCDRV_DNG_INFO bHold setting */
+#define MCDRV_DNG_HOLD_30 (0)
+#define MCDRV_DNG_HOLD_120 (1)
+#define MCDRV_DNG_HOLD_500 (2)
+
+/* MCDRV_DNG_INFO bAttack setting */
+#define MCDRV_DNG_ATTACK_25 (0)
+#define MCDRV_DNG_ATTACK_100 (1)
+#define MCDRV_DNG_ATTACK_400 (2)
+#define MCDRV_DNG_ATTACK_800 (3)
+
+/* MCDRV_DNG_INFO bRelease setting */
+#define MCDRV_DNG_RELEASE_7950 (0)
+#define MCDRV_DNG_RELEASE_470 (1)
+#define MCDRV_DNG_RELEASE_940 (2)
+
+/* MCDRV_DNG_INFO bTarget setting */
+#define MCDRV_DNG_TARGET_6 (0)
+#define MCDRV_DNG_TARGET_9 (1)
+#define MCDRV_DNG_TARGET_12 (2)
+#define MCDRV_DNG_TARGET_15 (3)
+#define MCDRV_DNG_TARGET_18 (4)
+#define MCDRV_DNG_TARGET_MUTE (5)
+
+typedef struct
+{
+ UINT8 abOnOff[DNG_ITEM_NUM];
+ UINT8 abThreshold[DNG_ITEM_NUM];
+ UINT8 abHold[DNG_ITEM_NUM];
+ UINT8 abAttack[DNG_ITEM_NUM];
+ UINT8 abRelease[DNG_ITEM_NUM];
+ UINT8 abTarget[DNG_ITEM_NUM];
+} MCDRV_DNG_INFO;
+
+/* set audio engine */
+#define MCDRV_AEUPDATE_FLAG_BEXWIDE_ONOFF ((UINT32)0x00000001)
+#define MCDRV_AEUPDATE_FLAG_DRC_ONOFF ((UINT32)0x00000002)
+#define MCDRV_AEUPDATE_FLAG_EQ5_ONOFF ((UINT32)0x00000004)
+#define MCDRV_AEUPDATE_FLAG_EQ3_ONOFF ((UINT32)0x00000008)
+#define MCDRV_AEUPDATE_FLAG_BEX ((UINT32)0x00000010)
+#define MCDRV_AEUPDATE_FLAG_WIDE ((UINT32)0x00000020)
+#define MCDRV_AEUPDATE_FLAG_DRC ((UINT32)0x00000040)
+#define MCDRV_AEUPDATE_FLAG_EQ5 ((UINT32)0x00000080)
+#define MCDRV_AEUPDATE_FLAG_EQ3 ((UINT32)0x00000100)
+
+/* MCDRV_AE_INFO bOnOff setting */
+#define MCDRV_BEXWIDE_ON (0x01)
+#define MCDRV_DRC_ON (0x02)
+#define MCDRV_EQ5_ON (0x04)
+#define MCDRV_EQ3_ON (0x08)
+
+#define BEX_PARAM_SIZE (104)
+#define WIDE_PARAM_SIZE (20)
+#define DRC_PARAM_SIZE (256)
+#define EQ5_PARAM_SIZE (105)
+#define EQ3_PARAM_SIZE (75)
+
+typedef struct
+{
+ UINT8 bOnOff;
+ UINT8 abBex[BEX_PARAM_SIZE];
+ UINT8 abWide[WIDE_PARAM_SIZE];
+ UINT8 abDrc[DRC_PARAM_SIZE];
+ UINT8 abEq5[EQ5_PARAM_SIZE];
+ UINT8 abEq3[EQ3_PARAM_SIZE];
+} MCDRV_AE_INFO;
+
+/* set cdsp param */
+typedef struct
+{
+ UINT8 bId;
+ UINT8 abParam[16];
+} MCDRV_CDSPPARAM;
+
+/* register cdsp cb */
+/* dEvtType */
+#define MCDRV_CDSP_EVT_ERROR (0)
+#define MCDRV_CDSP_EVT_PARAM (1)
+
+/* dEvtPrm */
+#define MCDRV_CDSP_PRG_ERROR (0)
+#define MCDRV_CDSP_PRG_ERROR_FATAL (1)
+#define MCDRV_CDSP_SYS_ERROR (2)
+
+/* set pdm */
+#define MCDRV_PDMCLK_UPDATE_FLAG ((UINT32)0x00000001)
+#define MCDRV_PDMADJ_UPDATE_FLAG ((UINT32)0x00000002)
+#define MCDRV_PDMAGC_UPDATE_FLAG ((UINT32)0x00000004)
+#define MCDRV_PDMEDGE_UPDATE_FLAG ((UINT32)0x00000008)
+#define MCDRV_PDMWAIT_UPDATE_FLAG ((UINT32)0x00000010)
+#define MCDRV_PDMSEL_UPDATE_FLAG ((UINT32)0x00000020)
+#define MCDRV_PDMMONO_UPDATE_FLAG ((UINT32)0x00000040)
+
+/* MCDRV_PDM_INFO bClk setting */
+#define MCDRV_PDM_CLK_128 (1)
+#define MCDRV_PDM_CLK_64 (2)
+#define MCDRV_PDM_CLK_32 (3)
+
+/* MCDRV_PDM_INFO bPdmEdge setting */
+#define MCDRV_PDMEDGE_LH (0)
+#define MCDRV_PDMEDGE_HL (1)
+
+/* MCDRV_PDM_INFO bPdmWait setting */
+#define MCDRV_PDMWAIT_0 (0)
+#define MCDRV_PDMWAIT_1 (1)
+#define MCDRV_PDMWAIT_10 (2)
+#define MCDRV_PDMWAIT_20 (3)
+
+/* MCDRV_PDM_INFO bPdmSel setting */
+#define MCDRV_PDMSEL_L1R2 (0)
+#define MCDRV_PDMSEL_L2R1 (1)
+#define MCDRV_PDMSEL_L1R1 (2)
+#define MCDRV_PDMSEL_L2R2 (3)
+
+/* MCDRV_PDM_INFO bMono setting */
+#define MCDRV_PDM_STEREO (0)
+#define MCDRV_PDM_MONO (1)
+
+typedef struct
+{
+ UINT8 bClk;
+ UINT8 bAgcAdjust;
+ UINT8 bAgcOn;
+ UINT8 bPdmEdge;
+ UINT8 bPdmWait;
+ UINT8 bPdmSel;
+ UINT8 bMono;
+} MCDRV_PDM_INFO;
+
+/* set dtmf */
+typedef struct
+{
+ UINT8 bSinGen0Vol;
+ UINT8 bSinGen1Vol;
+ UINT16 wSinGen0Freq;
+ UINT16 wSinGen1Freq;
+ UINT8 bSinGenGate;
+ UINT8 bSinGenMode;
+ UINT8 bSinGenLoop;
+} MCDRV_DTMF_PARAM;
+
+/* MCDRV_DTMF_INFO bOnOff setting */
+#define MCDRV_DTMF_ON (0)
+#define MCDRV_DTMF_OFF (1)
+
+typedef struct
+{
+ UINT8 bOnOff;
+ MCDRV_DTMF_PARAM sParam;
+} MCDRV_DTMF_INFO;
+
+/* config gp */
+#define GPIO_PAD_NUM (2)
+
+/* MCDRV_GP_MODE abGpDdr setting */
+#define MCDRV_GPDDR_IN (0)
+#define MCDRV_GPDDR_OUT (1)
+
+/* MCDRV_GP_MODE abGpMode setting */
+#define MCDRV_GPMODE_RISING (0)
+#define MCDRV_GPMODE_FALLING (1)
+#define MCDRV_GPMODE_BOTH (2)
+
+/* MCDRV_GP_MODE abGpHost setting */
+#define MCDRV_GPHOST_SCU (0)
+#define MCDRV_GPHOST_CDSP (1)
+
+/* MCDRV_GP_MODE abGpInvert setting */
+#define MCDRV_GPINV_NORMAL (0)
+#define MCDRV_GPINV_INVERT (1)
+
+typedef struct
+{
+ UINT8 abGpDdr[GPIO_PAD_NUM];
+ UINT8 abGpMode[GPIO_PAD_NUM];
+ UINT8 abGpHost[GPIO_PAD_NUM];
+ UINT8 abGpInvert[GPIO_PAD_NUM];
+} MCDRV_GP_MODE;
+
+/* mask gp */
+#define MCDRV_GPMASK_OFF (0)
+#define MCDRV_GPMASK_ON (1)
+
+#define MCDRV_GP_PAD0 ((UINT32)0)
+#define MCDRV_GP_PAD1 ((UINT32)1)
+
+/* getset gp */
+#define MCDRV_GP_LOW (0)
+#define MCDRV_GP_HIGH (1)
+
+/* get peak */
+#define PEAK_CHANNELS (2)
+typedef struct
+{
+ SINT16 aswPeak[PEAK_CHANNELS];
+} MCDRV_PEAK;
+
+/* set/get syseq */
+#define MCDRV_SYSEQ_ONOFF_UPDATE_FLAG ((UINT32)0x00000001)
+#define MCDRV_SYSEQ_PARAM_UPDATE_FLAG ((UINT32)0x00000002)
+
+/* MCDRV_SYSEQ_INFO bOnOff setting */
+#define MCDRV_SYSEQ_OFF (0)
+#define MCDRV_SYSEQ_ON (1)
+
+typedef struct
+{
+ UINT8 bOnOff;
+ UINT8 abParam[15];
+} MCDRV_SYSEQ_INFO;
+
+/* read_reg, write_reg */
+#define MCDRV_REGTYPE_A (0)
+#define MCDRV_REGTYPE_B_BASE (1)
+#define MCDRV_REGTYPE_B_MIXER (2)
+#define MCDRV_REGTYPE_B_AE (3)
+#define MCDRV_REGTYPE_B_CDSP (4)
+#define MCDRV_REGTYPE_B_CODEC (5)
+#define MCDRV_REGTYPE_B_ANALOG (6)
+typedef struct
+{
+ UINT8 bRegType;
+ UINT8 bAddress;
+ UINT8 bData;
+} MCDRV_REG_INFO;
+
+
+#endif /* _MCDRIVER_H_ */
diff --git a/sound/soc/codecs/mc1n2/mcdriver_AA.c b/sound/soc/codecs/mc1n2/mcdriver_AA.c new file mode 100644 index 0000000..ac61eaf --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdriver_AA.c @@ -0,0 +1,18276 @@ +/**************************************************************************** + * + * Copyright(c) 2010-2011 Yamaha Corporation. All rights reserved. + * + * Module : mcdriver.c + * + * Description : MC Driver + * + * Version : 1.0.2 2011.04.18 + * + ****************************************************************************/ + + +#include "mcdriver.h" +#include "mcdriver_AA.h" +#include "mcservice.h" + + + +/*******************************************/ + +/* Register Definition + + [Naming Rules] + + MCI_AA_xxx : Registers + MCI_AA_xxx_DEF : Default setting of registers + MCB_AA_xxx : Miscelleneous bit definition +*/ + +/* Registers */ +/* A_ADR */ +#define MCI_AA_RST (0) +#define MCB_AA_RST (0x01) +#define MCI_AA_RST_DEF (MCB_AA_RST) + +#define MCI_AA_BASE_ADR (1) +#define MCI_AA_BASE_WINDOW (2) + +#define MCI_AA_HW_ID (8) +#define MCI_AA_HW_ID_DEF (0x44) + +#define MCI_AA_ANA_ADR (12) +#define MCI_AA_ANA_WINDOW (13) + +#define MCI_AA_CD_ADR (14) +#define MCI_AA_CD_WINDOW (15) + +#define MCI_AA_MIX_ADR (16) +#define MCI_AA_MIX_WINDOW (17) + +#define MCI_AA_AE_ADR (18) +#define MCI_AA_AE_WINDOW (19) + +#define MCI_AA_BDSP_ST (20) +#define MCB_AA_EQ5ON (0x80) +#define MCB_AA_DRCON (0x40) +#define MCB_AA_EQ3ON (0x20) +#define MCB_AA_DBEXON (0x08) +#define MCB_AA_BDSP_ST (0x01) + +#define MCI_AA_BDSP_RST (21) +#define MCB_AA_TRAM_RST (0x02) +#define MCB_AA_BDSP_RST (0x01) + +#define MCI_AA_BDSP_ADR (22) +#define MCI_AA_BDSP_WINDOW (23) + +#define MCI_AA_CDSP_ADR (24) +#define MCI_AA_CDSP_WINDOW (25) + +/* B_ADR(BASE) */ +#define MCI_AA_RSTB (0) +#define MCB_AA_RSTB (0x10) +#define MCI_AA_RSTB_DEF (MCB_AA_RSTB) + +#define MCI_AA_PWM_DIGITAL (1) +#define MCB_AA_PWM_DP2 (0x04) +#define MCB_AA_PWM_DP1 (0x02) +#define MCB_AA_PWM_DP0 (0x01) +#define MCI_AA_PWM_DIGITAL_DEF (MCB_AA_PWM_DP2 | MCB_AA_PWM_DP1 | MCB_AA_PWM_DP0) + +#define MCI_AA_PWM_DIGITAL_1 (3) +#define MCB_AA_PWM_DPPDM (0x10) +#define MCB_AA_PWM_DPDI2 (0x08) +#define MCB_AA_PWM_DPDI1 (0x04) +#define MCB_AA_PWM_DPDI0 (0x02) +#define MCB_AA_PWM_DPB (0x01) +#define MCI_AA_PWM_DIGITAL_1_DEF (MCB_AA_PWM_DPPDM | MCB_AA_PWM_DPDI2 | MCB_AA_PWM_DPDI1 | MCB_AA_PWM_DPDI0 | MCB_AA_PWM_DPB) + +#define MCI_AA_PWM_DIGITAL_CDSP (4) +#define MCB_AA_PWM_DPCDSP (0x00) +#define MCI_AA_PWM_DIGITAL_CDSP_DEF (MCB_AA_PWM_DPCDSP) + +#define MCI_AA_PWM_DIGITAL_BDSP (6) +#define MCI_AA_PWM_DIGITAL_BDSP_DEF (MCB_AA_PWM_DPBDSP) +#define MCB_AA_PWM_DPBDSP (0x01) + +#define MCI_AA_SD_MSK (9) +#define MCB_AA_SDIN_MSK2 (0x80) +#define MCB_AA_SDO_DDR2 (0x10) +#define MCB_AA_SDIN_MSK1 (0x08) +#define MCB_AA_SDO_DDR1 (0x01) +#define MCI_AA_SD_MSK_DEF (MCB_AA_SDIN_MSK2 | MCB_AA_SDIN_MSK1) + +#define MCI_AA_SD_MSK_1 (10) +#define MCB_AA_SDIN_MSK0 (0x80) +#define MCB_AA_SDO_DDR0 (0x10) +#define MCI_AA_SD_MSK_1_DEF (MCB_AA_SDIN_MSK0) + +#define MCI_AA_BCLK_MSK (11) +#define MCB_AA_BCLK_MSK2 (0x80) +#define MCB_AA_BCLK_DDR2 (0x40) +#define MCB_AA_LRCK_MSK2 (0x20) +#define MCB_AA_LRCK_DDR2 (0x10) +#define MCB_AA_BCLK_MSK1 (0x08) +#define MCB_AA_BCLK_DDR1 (0x04) +#define MCB_AA_LRCK_MSK1 (0x02) +#define MCB_AA_LRCK_DDR1 (0x01) +#define MCI_AA_BCLK_MSK_DEF (MCB_AA_BCLK_MSK2 | MCB_AA_LRCK_MSK2 | MCB_AA_BCLK_MSK1 | MCB_AA_LRCK_MSK1) + +#define MCI_AA_BCLK_MSK_1 (12) +#define MCB_AA_BCLK_MSK0 (0x80) +#define MCB_AA_BCLK_DDR0 (0x40) +#define MCB_AA_LRCK_MSK0 (0x20) +#define MCB_AA_LRCK_DDR0 (0x10) +#define MCB_AA_PCMOUT_HIZ2 (0x08) +#define MCB_AA_PCMOUT_HIZ1 (0x04) +#define MCB_AA_PCMOUT_HIZ0 (0x02) +#define MCB_AA_ROUTER_MS (0x01) +#define MCI_AA_BCLK_MSK_1_DEF (MCB_AA_BCLK_MSK0 | MCB_AA_LRCK_MSK0) + +#define MCI_AA_BCKP (13) +#define MCB_AA_DI2_BCKP (0x04) +#define MCB_AA_DI1_BCKP (0x02) +#define MCB_AA_DI0_BCKP (0x01) +#define MCI_AA_BCKP_DEF (0) + +#define MCI_AA_PLL_RST (14) +#define MCB_AA_PLLRST1 (0x00) +#define MCB_AA_PLLRST0 (0x01) +#define MCI_AA_PLL_RST_DEF (MCB_AA_PLLRST1 | MCB_AA_PLLRST0) + +#define MCI_AA_DIVR0 (15) +#define MCI_AA_DIVR0_DEF (0x0A) + +#define MCI_AA_DIVF0 (16) +#define MCI_AA_DIVF0_DEF (0x48) + +#define MCI_AA_DIVR1 (17) +#define MCI_AA_DIVF1 (18) + +#define MCI_AA_CKSEL (20) +#define MCB_AA_CKSEL (0x80) + +#define MCI_AA_BYPASS (21) +#define MCB_AA_LOCK1 (0x80) +#define MCB_AA_LOCK0 (0x40) +#define MCB_AA_BYPASS1 (0x02) +#define MCB_AA_BYPASS0 (0x01) + +#define MCI_AA_EPA_IRQ (22) +#define MCB_AA_EPA2_IRQ (0x04) +#define MCB_AA_EPA1_IRQ (0x02) +#define MCB_AA_EPA0_IRQ (0x01) + +#define MCI_AA_PA_FLG (23) +#define MCB_AA_PA2_FLAG (0x04) +#define MCB_AA_PA1_FLAG (0x02) +#define MCB_AA_PA0_FLAG (0x01) + +#define MCI_AA_PA_MSK (25) +#define MCB_AA_PA2_MSK (0x08) +#define MCB_AA_PA2_DDR (0x04) +#define MCI_AA_PA_MSK_DEF (MCB_AA_PA2_MSK) + +#define MCI_AA_PA_MSK_1 (26) +#define MCB_AA_PA1_MSK (0x80) +#define MCB_AA_PA1_DDR (0x40) +#define MCB_AA_PA0_MSK (0x08) +#define MCB_AA_PA0_DDR (0x04) +#define MCI_AA_PA_MSK_1_DEF (MCB_AA_PA1_MSK | MCB_AA_PA0_MSK) + +#define MCI_AA_PA_HOST (28) +#define MCI_AA_PA_HOST_1 (29) + +#define MCI_AA_PA_OUT (30) +#define MCB_AA_PA_OUT (0x01) + +#define MCI_AA_PA_SCU_PA (31) +#define MCB_AA_PA_SCU_PA0 (0x01) +#define MCB_AA_PA_SCU_PA1 (0x02) +#define MCB_AA_PA_SCU_PA2 (0x04) + +/* B_ADR(MIX) */ +#define MCI_AA_DIT_INVFLAGL (0) +#define MCB_AA_DIT0_INVFLAGL (0x20) +#define MCB_AA_DIT1_INVFLAGL (0x10) +#define MCB_AA_DIT2_INVFLAGL (0x08) + +#define MCI_AA_DIT_INVFLAGR (1) +#define MCB_AA_DIT0_INVFLAGR (0x20) +#define MCB_AA_DIT1_INVFLAGR (0x10) +#define MCB_AA_DIT2_INVFLAGR (0x08) + +#define MCI_AA_DIR_VFLAGL (2) +#define MCB_AA_PDM0_VFLAGL (0x80) +#define MCB_AA_DIR0_VFLAGL (0x20) +#define MCB_AA_DIR1_VFLAGL (0x10) +#define MCB_AA_DIR2_VFLAGL (0x08) + +#define MCI_AA_DIR_VFLAGR (3) +#define MCB_AA_PDM0_VFLAGR (0x80) +#define MCB_AA_DIR0_VFLAGR (0x20) +#define MCB_AA_DIR1_VFLAGR (0x10) +#define MCB_AA_DIR2_VFLAGR (0x08) + +#define MCI_AA_AD_VFLAGL (4) +#define MCB_AA_ADC_VFLAGL (0x80) +#define MCB_AA_AENG6_VFLAGL (0x20) + +#define MCI_AA_AD_VFLAGR (5) +#define MCB_AA_ADC_VFLAGR (0x80) +#define MCB_AA_AENG6_VFLAGR (0x20) + +#define MCI_AA_AFLAGL (6) +#define MCB_AA_ADC_AFLAGL (0x40) +#define MCB_AA_DIR0_AFLAGL (0x20) +#define MCB_AA_DIR1_AFLAGL (0x10) +#define MCB_AA_DIR2_AFLAGL (0x04) + +#define MCI_AA_AFLAGR (7) +#define MCB_AA_ADC_AFLAGR (0x40) +#define MCB_AA_DIR0_AFLAGR (0x20) +#define MCB_AA_DIR1_AFLAGR (0x10) +#define MCB_AA_DIR2_AFLAGR (0x04) + +#define MCI_AA_DAC_INS_FLAG (8) +#define MCB_AA_DAC_INS_FLAG (0x80) + +#define MCI_AA_INS_FLAG (9) +#define MCB_AA_ADC_INS_FLAG (0x40) +#define MCB_AA_DIR0_INS_FLAG (0x20) +#define MCB_AA_DIR1_INS_FLAG (0x10) +#define MCB_AA_DIR2_INS_FLAG (0x04) + +#define MCI_AA_DAC_FLAGL (10) +#define MCB_AA_ST_FLAGL (0x80) +#define MCB_AA_MASTER_OFLAGL (0x40) +#define MCB_AA_VOICE_FLAGL (0x10) +#define MCB_AA_DAC_FLAGL (0x02) + +#define MCI_AA_DAC_FLAGR (11) +#define MCB_AA_ST_FLAGR (0x80) +#define MCB_AA_MASTER_OFLAGR (0x40) +#define MCB_AA_VOICE_FLAGR (0x10) +#define MCB_AA_DAC_FLAGR (0x02) + +#define MCI_AA_DIT0_INVOLL (12) +#define MCB_AA_DIT0_INLAT (0x80) +#define MCB_AA_DIT0_INVOLL (0x7F) + +#define MCI_AA_DIT0_INVOLR (13) +#define MCB_AA_DIT0_INVOLR (0x7F) + +#define MCI_AA_DIT1_INVOLL (14) +#define MCB_AA_DIT1_INLAT (0x80) +#define MCB_AA_DIT1_INVOLL (0x7F) + +#define MCI_AA_DIT1_INVOLR (15) +#define MCB_AA_DIT1_INVOLR (0x7F) + +#define MCI_AA_DIT2_INVOLL (16) +#define MCB_AA_DIT2_INLAT (0x80) +#define MCB_AA_DIT2_INVOLL (0x7F) + +#define MCI_AA_DIT2_INVOLR (17) +#define MCB_AA_DIT2_INVOLR (0x7F) + +#define MCI_AA_ESRC0_INVOLL (16) +#define MCI_AA_ESRC0_INVOLR (17) + +#define MCI_AA_PDM0_VOLL (24) +#define MCB_AA_PDM0_INLAT (0x80) +#define MCB_AA_PDM0_VOLL (0x7F) + +#define MCI_AA_PDM0_VOLR (25) +#define MCB_AA_PDM0_VOLR (0x7F) + +#define MCI_AA_DIR0_VOLL (28) +#define MCB_AA_DIR0_LAT (0x80) +#define MCB_AA_DIR0_VOLL (0x7F) + +#define MCI_AA_DIR0_VOLR (29) +#define MCB_AA_DIR0_VOLR (0x7F) + +#define MCI_AA_DIR1_VOLL (30) +#define MCB_AA_DIR1_LAT (0x80) +#define MCB_AA_DIR1_VOLL (0x7F) + +#define MCI_AA_DIR1_VOLR (31) +#define MCB_AA_DIR1_VOLR (0x7F) + +#define MCI_AA_DIR2_VOLL (32) +#define MCB_AA_DIR2_LAT (0x80) +#define MCB_AA_DIR2_VOLL (0x7F) + +#define MCI_AA_DIR2_VOLR (33) +#define MCB_AA_DIR2_VOLR (0x7F) +/* +#define MCI_AA_ADC1_VOLL (38?) +#define MCB_AA_ADC1_LAT (0x80) +#define MCB_AA_ADC1_VOLL (0x7F) + +#define MCI_AA_ADC1_VOLR (39?) +#define MCB_AA_ADC1_VOLR (0x7F) +*/ +#define MCI_AA_ADC_VOLL (40) +#define MCB_AA_ADC_LAT (0x80) +#define MCB_AA_ADC_VOLL (0x7F) + +#define MCI_AA_ADC_VOLR (41) +#define MCB_AA_ADC_VOLR (0x7F) +/* +#define MCI_AA_DTMFB_VOLL (42) +#define MCI_AA_DTMFB_VOLR (43) +*/ +#define MCI_AA_AENG6_VOLL (44) +#define MCB_AA_AENG6_LAT (0x80) +#define MCB_AA_AENG6_VOLL (0x7F) + +#define MCI_AA_AENG6_VOLR (45) +#define MCB_AA_AENG6_VOLR (0x7F) + +#define MCI_AA_DIT_ININTP (50) +#define MCB_AA_DIT0_ININTP (0x20) +#define MCB_AA_DIT1_ININTP (0x10) +#define MCB_AA_DIT2_ININTP (0x08) +#define MCI_AA_DIT_ININTP_DEF (MCB_AA_DIT0_ININTP | MCB_AA_DIT1_ININTP | MCB_AA_DIT2_ININTP) + +#define MCI_AA_DIR_INTP (51) +#define MCB_AA_PDM0_INTP (0x80) +#define MCB_AA_DIR0_INTP (0x20) +#define MCB_AA_DIR1_INTP (0x10) +#define MCB_AA_DIR2_INTP (0x08) +#define MCB_AA_ADC2_INTP (0x01) +#define MCI_AA_DIR_INTP_DEF (MCB_AA_PDM0_INTP | MCB_AA_DIR0_INTP | MCB_AA_DIR1_INTP | MCB_AA_DIR2_INTP) + +#define MCI_AA_ADC_INTP (52) +#define MCB_AA_ADC_INTP (0x80) +#define MCB_AA_AENG6_INTP (0x20) +#define MCI_AA_ADC_INTP_DEF (MCB_AA_ADC_INTP | MCB_AA_AENG6_INTP) + +#define MCI_AA_ADC_ATTL (54) +#define MCB_AA_ADC_ALAT (0x80) +#define MCB_AA_ADC_ATTL (0x7F) + +#define MCI_AA_ADC_ATTR (55) +#define MCB_AA_ADC_ATTR (0x7F) + +#define MCI_AA_DIR0_ATTL (56) +#define MCB_AA_DIR0_ALAT (0x80) +#define MCB_AA_DIR0_ATTL (0x7F) + +#define MCI_AA_DIR0_ATTR (57) +#define MCB_AA_DIR0_ATTR (0x7F) + +#define MCI_AA_DIR1_ATTL (58) +#define MCB_AA_DIR1_ALAT (0x80) +#define MCB_AA_DIR1_ATTL (0x7F) + +#define MCI_AA_DIR1_ATTR (59) +#define MCB_AA_DIR1_ATTR (0x7F) +/* +#define MCI_AA_ADC2_ATTL (60) +#define MCI_AA_ADC2_ATTR (61) +*/ +#define MCI_AA_DIR2_ATTL (62) +#define MCB_AA_DIR2_ALAT (0x80) +#define MCB_AA_DIR2_ATTL (0x7F) + +#define MCI_AA_DIR2_ATTR (63) +#define MCB_AA_DIR2_ATTR (0x7F) + +#define MCI_AA_AINTP (72) +#define MCB_AA_ADC_AINTP (0x40) +#define MCB_AA_DIR0_AINTP (0x20) +#define MCB_AA_DIR1_AINTP (0x10) +#define MCB_AA_DIR2_AINTP (0x04) +#define MCI_AA_AINTP_DEF (MCB_AA_ADC_AINTP | MCB_AA_DIR0_AINTP | MCB_AA_DIR1_AINTP | MCB_AA_DIR2_AINTP) + +#define MCI_AA_DAC_INS (74) +#define MCB_AA_DAC_INS (0x80) + +#define MCI_AA_INS (75) +#define MCB_AA_ADC_INS (0x40) +#define MCB_AA_DIR0_INS (0x20) +#define MCB_AA_DIR1_INS (0x10) +#define MCB_AA_DIR2_INS (0x04) + +#define MCI_AA_IINTP (76) +#define MCB_AA_DAC_IINTP (0x80) +#define MCB_AA_ADC_IINTP (0x40) +#define MCB_AA_DIR0_IINTP (0x20) +#define MCB_AA_DIR1_IINTP (0x10) +#define MCB_AA_DIR2_IINTP (0x04) +#define MCI_AA_IINTP_DEF (MCB_AA_DAC_IINTP | MCB_AA_ADC_IINTP | MCB_AA_DIR0_IINTP | MCB_AA_DIR1_IINTP | MCB_AA_DIR2_IINTP) + +#define MCI_AA_ST_VOLL (77) +#define MCB_AA_ST_LAT (0x80) +#define MCB_AA_ST_VOLL (0x7F) + +#define MCI_AA_ST_VOLR (78) +#define MCB_AA_ST_VOLR (0x7F) + +#define MCI_AA_MASTER_OUTL (79) +#define MCB_AA_MASTER_OLAT (0x80) +#define MCB_AA_MASTER_OUTL (0x7F) + +#define MCI_AA_MASTER_OUTR (80) +#define MCB_AA_MASTER_OUTR (0x7F) + +#define MCI_AA_VOICE_ATTL (83) +#define MCB_AA_VOICE_LAT (0x80) +#define MCB_AA_VOICE_ATTL (0x7F) + +#define MCI_AA_VOICE_ATTR (84) +#define MCB_AA_VOICE_ATTR (0x7F) +/* +#define MCI_AA_DTMF_ATTL (85) +#define MCI_AA_DTMF_ATTR (86) +*/ +#define MCI_AA_DAC_ATTL (89) +#define MCB_AA_DAC_LAT (0x80) +#define MCB_AA_DAC_ATTL (0x7F) + +#define MCI_AA_DAC_ATTR (90) +#define MCB_AA_DAC_ATTR (0x7F) + +#define MCI_AA_DAC_INTP (93) +#define MCB_AA_ST_INTP (0x80) +#define MCB_AA_MASTER_OINTP (0x40) +#define MCB_AA_VOICE_INTP (0x10) +/*#define MCB_AA_DTMF_INTP (0x08)*/ +#define MCB_AA_DAC_INTP (0x02) +#define MCI_AA_DAC_INTP_DEF (MCB_AA_ST_INTP | MCB_AA_MASTER_OINTP | MCB_AA_VOICE_INTP | MCB_AA_DAC_INTP) + +#define MCI_AA_SOURCE (110) +#define MCB_AA_DAC_SOURCE_AD (0x10) +#define MCB_AA_DAC_SOURCE_DIR2 (0x20) +#define MCB_AA_DAC_SOURCE_DIR0 (0x30) +#define MCB_AA_DAC_SOURCE_DIR1 (0x40) +#define MCB_AA_DAC_SOURCE_MIX (0x70) +#define MCB_AA_VOICE_SOURCE_AD (0x01) +#define MCB_AA_VOICE_SOURCE_DIR2 (0x02) +#define MCB_AA_VOICE_SOURCE_DIR0 (0x03) +#define MCB_AA_VOICE_SOURCE_DIR1 (0x04) +#define MCB_AA_VOICE_SOURCE_MIX (0x07) + +#define MCI_AA_SWP (111) + +#define MCI_AA_SRC_SOURCE (112) +#define MCB_AA_DIT0_SOURCE_AD (0x10) +#define MCB_AA_DIT0_SOURCE_DIR2 (0x20) +#define MCB_AA_DIT0_SOURCE_DIR0 (0x30) +#define MCB_AA_DIT0_SOURCE_DIR1 (0x40) +#define MCB_AA_DIT0_SOURCE_MIX (0x70) +#define MCB_AA_DIT1_SOURCE_AD (0x01) +#define MCB_AA_DIT1_SOURCE_DIR2 (0x02) +#define MCB_AA_DIT1_SOURCE_DIR0 (0x03) +#define MCB_AA_DIT1_SOURCE_DIR1 (0x04) +#define MCB_AA_DIT1_SOURCE_MIX (0x07) + +#define MCI_AA_SRC_SOURCE_1 (113) +#define MCB_AA_AE_SOURCE_AD (0x10) +#define MCB_AA_AE_SOURCE_DIR2 (0x20) +#define MCB_AA_AE_SOURCE_DIR0 (0x30) +#define MCB_AA_AE_SOURCE_DIR1 (0x40) +#define MCB_AA_AE_SOURCE_MIX (0x70) +#define MCB_AA_DIT2_SOURCE_AD (0x01) +#define MCB_AA_DIT2_SOURCE_DIR2 (0x02) +#define MCB_AA_DIT2_SOURCE_DIR0 (0x03) +#define MCB_AA_DIT2_SOURCE_DIR1 (0x04) +#define MCB_AA_DIT2_SOURCE_MIX (0x07) + +#define MCI_AA_ESRC_SOURCE (114) + +#define MCI_AA_AENG6_SOURCE (115) +#define MCB_AA_AENG6_ADC0 (0x00) +#define MCB_AA_AENG6_PDM (0x01) + +#define MCI_AA_EFIFO_SOURCE (116) + +#define MCI_AA_SRC_SOURCE_2 (117) + +#define MCI_AA_PEAK_METER (121) + +#define MCI_AA_OVFL (122) +#define MCI_AA_OVFR (123) + +#define MCI_AA_DIMODE0 (130) + +#define MCI_AA_DIRSRC_RATE0_MSB (131) + +#define MCI_AA_DIRSRC_RATE0_LSB (132) + +#define MCI_AA_DITSRC_RATE0_MSB (133) + +#define MCI_AA_DITSRC_RATE0_LSB (134) + +#define MCI_AA_DI_FS0 (135) + +/* DI Common Parameter */ +#define MCB_AA_DICOMMON_SRC_RATE_SET (0x01) + +#define MCI_AA_DI0_SRC (136) + +#define MCI_AA_DIX0_START (137) +#define MCB_AA_DITIM0_START (0x40) +#define MCB_AA_DIR0_SRC_START (0x08) +#define MCB_AA_DIR0_START (0x04) +#define MCB_AA_DIT0_SRC_START (0x02) +#define MCB_AA_DIT0_START (0x01) + +#define MCI_AA_DIX0_FMT (142) + +#define MCI_AA_DIR0_CH (143) +#define MCI_AA_DIR0_CH_DEF (0x10) + +#define MCI_AA_DIT0_SLOT (144) +#define MCI_AA_DIT0_SLOT_DEF (0x10) + +#define MCI_AA_HIZ_REDGE0 (145) + +#define MCI_AA_PCM_RX0 (146) +#define MCB_AA_PCM_MONO_RX0 (0x80) +#define MCI_AA_PCM_RX0_DEF (MCB_AA_PCM_MONO_RX0) + +#define MCI_AA_PCM_SLOT_RX0 (147) + +#define MCI_AA_PCM_TX0 (148) +#define MCB_AA_PCM_MONO_TX0 (0x80) +#define MCI_AA_PCM_TX0_DEF (MCB_AA_PCM_MONO_TX0) + +#define MCI_AA_PCM_SLOT_TX0 (149) +#define MCI_AA_PCM_SLOT_TX0_DEF (0x10) + +#define MCI_AA_DIMODE1 (150) + +#define MCI_AA_DIRSRC_RATE1_MSB (151) +#define MCI_AA_DIRSRC_RATE1_LSB (152) + +#define MCI_AA_DITSRC_RATE1_MSB (153) +#define MCI_AA_DITSRC_RATE1_LSB (154) + +#define MCI_AA_DI_FS1 (155) + +#define MCI_AA_DI1_SRC (156) + +#define MCI_AA_DIX1_START (157) +#define MCB_AA_DITIM1_START (0x40) +#define MCB_AA_DIR1_SRC_START (0x08) +#define MCB_AA_DIR1_START (0x04) +#define MCB_AA_DIT1_SRC_START (0x02) +#define MCB_AA_DIT1_START (0x01) + +#define MCI_AA_DIX1_FMT (162) + +#define MCI_AA_DIR1_CH (163) +#define MCB_AA_DIR1_CH1 (0x10) +#define MCI_AA_DIR1_CH_DEF (MCB_AA_DIR1_CH1) + +#define MCI_AA_DIT1_SLOT (164) +#define MCB_AA_DIT1_SLOT1 (0x10) +#define MCI_AA_DIT1_SLOT_DEF (MCB_AA_DIT1_SLOT1) + +#define MCI_AA_HIZ_REDGE1 (165) + +#define MCI_AA_PCM_RX1 (166) +#define MCB_AA_PCM_MONO_RX1 (0x80) +#define MCI_AA_PCM_RX1_DEF (MCB_AA_PCM_MONO_RX1) + +#define MCI_AA_PCM_SLOT_RX1 (167) + +#define MCI_AA_PCM_TX1 (168) +#define MCB_AA_PCM_MONO_TX1 (0x80) +#define MCI_AA_PCM_TX1_DEF (MCB_AA_PCM_MONO_TX1) + +#define MCI_AA_PCM_SLOT_TX1 (169) +#define MCI_AA_PCM_SLOT_TX1_DEF (0x10) + +#define MCI_AA_DIMODE2 (170) + +#define MCI_AA_DIRSRC_RATE2_MSB (171) +#define MCI_AA_DIRSRC_RATE2_LSB (172) + +#define MCI_AA_DITSRC_RATE2_MSB (173) +#define MCI_AA_DITSRC_RATE2_LSB (174) + +#define MCI_AA_DI_FS2 (175) + +#define MCI_AA_DI2_SRC (176) + +#define MCI_AA_DIX2_START (177) +#define MCB_AA_DITIM2_START (0x40) +#define MCB_AA_DIR2_SRC_START (0x08) +#define MCB_AA_DIR2_START (0x04) +#define MCB_AA_DIT2_SRC_START (0x02) +#define MCB_AA_DIT2_START (0x01) + +#define MCI_AA_DIX2_FMT (182) + +#define MCI_AA_DIR2_CH (183) +#define MCB_AA_DIR2_CH1 (0x10) +#define MCB_AA_DIR2_CH0 (0x01) +#define MCI_AA_DIR2_CH_DEF (MCB_AA_DIR2_CH1) + +#define MCI_AA_DIT2_SLOT (184) +#define MCB_AA_DIT2_SLOT1 (0x10) +#define MCB_AA_DIT2_SLOT0 (0x01) +#define MCI_AA_DIT2_SLOT_DEF (MCB_AA_DIT2_SLOT1) + +#define MCI_AA_HIZ_REDGE2 (185) + +#define MCI_AA_PCM_RX2 (186) +#define MCB_AA_PCM_MONO_RX2 (0x80) +#define MCI_AA_PCM_RX2_DEF (MCB_AA_PCM_MONO_RX2) + +#define MCI_AA_PCM_SLOT_RX2 (187) + +#define MCI_AA_PCM_TX2 (188) +#define MCB_AA_PCM_MONO_TX2 (0x80) +#define MCI_AA_PCM_TX2_DEF (MCB_AA_PCM_MONO_TX2) + +#define MCI_AA_PCM_SLOT_TX2 (189) +#define MCI_AA_PCM_SLOT_TX2_DEF (0x10) + +#define MCI_AA_CD_START (192) + +#define MCI_AA_CDI_CH (193) +#define MCI_AA_CDI_CH_DEF (0xE4) + +#define MCI_AA_CDO_SLOT (194) +#define MCI_AA_CDO_SLOT_DEF (0xE4) + +#define MCI_AA_PDM_AGC (200) +#define MCI_AA_PDM_AGC_DEF (0x03) + +#define MCI_AA_PDM_MUTE (201) +#define MCI_AA_PDM_MUTE_DEF (0x00) +#define MCB_AA_PDM_MUTE (0x01) + +#define MCI_AA_PDM_START (202) +#define MCB_AA_PDM_MN (0x02) +#define MCB_AA_PDM_START (0x01) + +#define MCI_AA_PDM_STWAIT (205) +#define MCI_AA_PDM_STWAIT_DEF (0x40) + +#define MCI_AA_HP_ID (206) + +#define MCI_AA_CHP_H (207) +#define MCI_AA_CHP_H_DEF (0x3F) + +#define MCI_AA_CHP_M (208) +#define MCI_AA_CHP_M_DEF (0xEA) + +#define MCI_AA_CHP_L (209) +#define MCI_AA_CHP_L_DEF (0x94) + +#define MCI_AA_SINGEN0_VOL (210) +#define MCI_AA_SINGEN1_VOL (211) + +#define MCI_AA_SINGEN_FREQ0_MSB (212) +#define MCI_AA_SINGEN_FREQ0_LSB (213) + +#define MCI_AA_SINGEN_FREQ1_MSB (214) +#define MCI_AA_SINGEN_FREQ1_LSB (215) + +#define MCI_AA_SINGEN_GATETIME (216) + +#define MCI_AA_SINGEN_FLAG (217) + +/* BADR(AE) */ +#define MCI_AA_BAND0_CEQ0 (0) +#define MCI_AA_BAND0_CEQ0_H_DEF (0x10) + +#define MCI_AA_BAND1_CEQ0 (15) +#define MCI_AA_BAND1_CEQ0_H_DEF (0x10) + +#define MCI_AA_BAND2_CEQ0 (30) +#define MCI_AA_BAND2_CEQ0_H_DEF (0x10) + +#define MCI_AA_BAND3H_CEQ0 (45) +#define MCI_AA_BAND3H_CEQ0_H_DEF (0x10) + +#define MCI_AA_BAND4H_CEQ0 (75) +#define MCI_AA_BAND4H_CEQ0_H_DEF (0x10) + +#define MCI_AA_BAND5_CEQ0 (105) +#define MCI_AA_BAND5_CEQ0_H_DEF (0x10) + +#define MCI_AA_BAND6H_CEQ0 (120) +#define MCI_AA_BAND6H_CEQ0_H_DEF (0x10) + +#define MCI_AA_BAND7H_CEQ0 (150) +#define MCI_AA_BAND7H_CEQ0_H_DEF (0x10) + +#define MCI_AA_PDM_CHP0_H (240) +#define MCI_AA_PDM_CHP0_H_DEF (0x3F) +#define MCI_AA_PDM_CHP0_M (241) +#define MCI_AA_PDM_CHP0_M_DEF (0xEA) +#define MCI_AA_PDM_CHP0_L (242) +#define MCI_AA_PDM_CHP0_L_DEF (0x94) + +#define MCI_AA_PDM_CHP1_H (243) +#define MCI_AA_PDM_CHP1_H_DEF (0xC0) +#define MCI_AA_PDM_CHP1_M (244) +#define MCI_AA_PDM_CHP1_M_DEF (0x15) +#define MCI_AA_PDM_CHP1_L (245) +#define MCI_AA_PDM_CHP1_L_DEF (0x6C) + +#define MCI_AA_PDM_CHP2_H (246) +#define MCI_AA_PDM_CHP2_H_DEF (0x00) +#define MCI_AA_PDM_CHP2_M (247) +#define MCI_AA_PDM_CHP2_M_DEF (0x00) +#define MCI_AA_PDM_CHP2_L (248) +#define MCI_AA_PDM_CHP2_L_DEF (0x00) + +#define MCI_AA_PDM_CHP3_H (249) +#define MCI_AA_PDM_CHP3_H_DEF (0x3F) +#define MCI_AA_PDM_CHP3_M (250) +#define MCI_AA_PDM_CHP3_M_DEF (0xD5) +#define MCI_AA_PDM_CHP3_L (251) +#define MCI_AA_PDM_CHP3_L_DEF (0x29) + +#define MCI_AA_PDM_CHP4_H (252) +#define MCI_AA_PDM_CHP4_H_DEF (0x00) +#define MCI_AA_PDM_CHP4_M (253) +#define MCI_AA_PDM_CHP4_M_DEF (0x00) +#define MCI_AA_PDM_CHP4_L (254) +#define MCI_AA_PDM_CHP4_L_DEF (0x00) + +/* B_ADR(CDSP) */ +#define MCI_AA_CDSP_SAVEOFF (0) + +#define MCI_AA_OFIFO_LVL (1) + +#define MCI_AA_EFIFO_LVL (2) + +#define MCI_AA_DEC_POS_24 (4) +#define MCI_AA_DEC_POS_16 (5) +#define MCI_AA_DEC_POS_8 (6) +#define MCI_AA_DEC_POS_0 (7) + +#define MCI_AA_ENC_POS_24 (8) +#define MCI_AA_ENC_POS_16 (9) +#define MCI_AA_ENC_POS_8 (10) +#define MCI_AA_ENC_POS_0 (11) + +#define MCI_AA_DEC_ERR (12) +#define MCI_AA_ENC_ERR (13) + +#define MCI_AA_FIFO_RST (14) + +#define MCI_AA_DEC_ENC_START (15) + +#define MCI_AA_FIFO4CH (16) + +#define MCI_AA_DEC_CTL15 (19) + +#define MCI_AA_DEC_GPR15 (35) + +#define MCI_AA_DEC_SFR1 (51) +#define MCI_AA_DEC_SFR0 (52) + +#define MCI_AA_ENC_CTL15 (53) + +#define MCI_AA_ENC_GPR15 (69) + +#define MCI_AA_ENC_SFR1 (85) +#define MCI_AA_ENC_SFR0 (86) + +#define MCI_AA_JOEMP (92) +#define MCB_AA_JOEMP (0x80) +#define MCB_AA_JOPNT (0x40) +#define MCB_AA_OOVF_FLG (0x08) +#define MCB_AA_OUDF_FLG (0x04) +#define MCB_AA_OEMP_FLG (0x02) +#define MCB_AA_OPNT_FLG (0x01) +#define MCI_AA_JOEMP_DEF (MCB_AA_JOEMP | MCB_AA_OEMP_FLG) + +#define MCI_AA_JEEMP (93) +#define MCB_AA_JEEMP (0x80) +#define MCB_AA_JEPNT (0x40) +#define MCB_AA_EOVF_FLG (0x08) +#define MCB_AA_EUDF_FLG (0x04) +#define MCB_AA_EEMP_FLG (0x02) +#define MCB_AA_EPNT_FLG (0x01) +#define MCI_AA_JEEMP_DEF (MCB_AA_JEEMP | MCB_AA_EEMP_FLG) + +#define MCI_AA_DEC_FLG (96) +#define MCI_AA_ENC_FLG (97) + +#define MCI_AA_DEC_GPR_FLG (98) +#define MCI_AA_ENC_GPR_FLG (99) + +#define MCI_AA_EOPNT (101) + +#define MCI_AA_EDEC (105) +#define MCI_AA_EENC (106) + +#define MCI_AA_EDEC_GPR (107) +#define MCI_AA_EENC_GPR (108) + +#define MCI_AA_CDSP_SRST (110) +#define MCB_AA_CDSP_FMODE (0x10) +#define MCB_AA_CDSP_MSAVE (0x08) +#define MCB_AA_CDSP_SRST (0x01) +#define MCI_AA_CDSP_SRST_DEF (MCB_AA_CDSP_SRST) + +#define MCI_AA_CDSP_SLEEP (112) + +#define MCI_AA_CDSP_ERR (113) + +#define MCI_AA_CDSP_MAR_MSB (114) +#define MCI_AA_CDSP_MAR_LSB (115) + +#define MCI_AA_OFIFO_IRQ_PNT (116) + +#define MCI_AA_EFIFO_IRQ_PNT (122) + +#define MCI_AA_CDSP_FLG (128) + +#define MCI_AA_ECDSP_ERR (129) + +/* B_ADR(CD) */ +#define MCI_AA_DPADIF (1) +#define MCB_AA_DPADIF (0x10) +#define MCI_AA_DPADIF_DEF (MCB_AA_DPADIF) + +#define MCI_AA_CD_HW_ID (8) +#define MCI_AA_CD_HW_ID_DEF (0x78) + +#define MCI_AA_AD_AGC (70) +#define MCI_AA_AD_AGC_DEF (0x03) + +#define MCI_AA_AD_MUTE (71) +#define MCI_AA_AD_MUTE_DEF (0x00) +#define MCB_AA_AD_MUTE (0x01) + +#define MCI_AA_AD_START (72) +#define MCI_AA_AD_START_DEF (0x00) +#define MCB_AA_AD_START (0x01) + +#define MCI_AA_DCCUTOFF (77) +#define MCI_AA_DCCUTOFF_DEF (0x00) + +#define MCI_AA_DAC_CONFIG (78) +#define MCI_AA_DAC_CONFIG_DEF (0x02) +#define MCB_AA_NSMUTE (0x02) +#define MCB_AA_DACON (0x01) + +#define MCI_AA_DCL (79) +#define MCI_AA_DCL_DEF (0x00) + + +/* B_ADR(ANA) */ +#define MCI_AA_ANA_RST (0) +#define MCI_AA_ANA_RST_DEF (0x01) + +#define MCI_AA_PWM_ANALOG_0 (2) +#define MCB_AA_PWM_VR (0x01) +#define MCB_AA_PWM_CP (0x02) +#define MCB_AA_PWM_REFA (0x04) +#define MCB_AA_PWM_LDOA (0x08) +#define MCI_AA_PWM_ANALOG_0_DEF (MCB_AA_PWM_VR|MCB_AA_PWM_CP|MCB_AA_PWM_REFA|MCB_AA_PWM_LDOA) + +#define MCI_AA_PWM_ANALOG_1 (3) +#define MCB_AA_PWM_SPL1 (0x01) +#define MCB_AA_PWM_SPL2 (0x02) +#define MCB_AA_PWM_SPR1 (0x04) +#define MCB_AA_PWM_SPR2 (0x08) +#define MCB_AA_PWM_HPL (0x10) +#define MCB_AA_PWM_HPR (0x20) +#define MCB_AA_PWM_ADL (0x40) +#define MCB_AA_PWM_ADR (0x80) +#define MCI_AA_PWM_ANALOG_1_DEF (MCB_AA_PWM_SPL1|MCB_AA_PWM_SPL2|MCB_AA_PWM_SPR1|MCB_AA_PWM_SPR2|MCB_AA_PWM_HPL|MCB_AA_PWM_HPR|MCB_AA_PWM_ADL|MCB_AA_PWM_ADR) + +#define MCI_AA_PWM_ANALOG_2 (4) +#define MCB_AA_PWM_LO1L (0x01) +#define MCB_AA_PWM_LO1R (0x02) +#define MCB_AA_PWM_LO2L (0x04) +#define MCB_AA_PWM_LO2R (0x08) +#define MCB_AA_PWM_RC1 (0x10) +#define MCB_AA_PWM_RC2 (0x20) +#define MCI_AA_PWM_ANALOG_2_DEF (MCB_AA_PWM_LO1L|MCB_AA_PWM_LO1R|MCB_AA_PWM_LO2L|MCB_AA_PWM_LO2R|MCB_AA_PWM_RC1|MCB_AA_PWM_RC2) + +#define MCI_AA_PWM_ANALOG_3 (5) +#define MCB_AA_PWM_MB1 (0x01) +#define MCB_AA_PWM_MB2 (0x02) +#define MCB_AA_PWM_MB3 (0x04) +#define MCB_AA_PWM_DA (0x08) +#define MCI_AA_PWM_ANALOG_3_DEF (MCB_AA_PWM_MB1|MCB_AA_PWM_MB2|MCB_AA_PWM_MB3|MCB_AA_PWM_DA) + +#define MCI_AA_PWM_ANALOG_4 (6) +#define MCB_AA_PWM_MC1 (0x10) +#define MCB_AA_PWM_MC2 (0x20) +#define MCB_AA_PWM_MC3 (0x40) +#define MCB_AA_PWM_LI (0x80) +#define MCI_AA_PWM_ANALOG_4_DEF (MCB_AA_PWM_MC1|MCB_AA_PWM_MC2|MCB_AA_PWM_MC3|MCB_AA_PWM_LI) + +#define MCI_AA_BUSY1 (12) +#define MCB_AA_RC_BUSY (0x20) +#define MCB_AA_HPL_BUSY (0x10) +#define MCB_AA_SPL_BUSY (0x08) + +#define MCI_AA_BUSY2 (13) +#define MCB_AA_HPR_BUSY (0x10) +#define MCB_AA_SPR_BUSY (0x08) + +#define MCI_AA_AMP (16) +#define MCB_AA_AMPOFF_SP (0x01) +#define MCB_AA_AMPOFF_HP (0x02) +#define MCB_AA_AMPOFF_RC (0x04) + +#define MCI_AA_DNGATRT (20) +#define MCI_AA_DNGATRT_DEF (0x22) + +#define MCI_AA_DNGON (21) +#define MCI_AA_DNGON_DEF (0x34) + +#define MCI_AA_DIF_LINE (24) +#define MCI_AA_DIF_LINE_DEF (0x00) + +#define MCI_AA_LI1VOL_L (25) +#define MCI_AA_LI1VOL_L_DEF (0x00) +#define MCB_AA_ALAT_LI1 (0x40) +#define MCB_AA_LI1VOL_L (0x1F) + +#define MCI_AA_LI1VOL_R (26) +#define MCI_AA_LI1VOL_R_DEF (0x00) +#define MCB_AA_LI1VOL_R (0x1F) + +#define MCI_AA_LI2VOL_L (27) +#define MCI_AA_LI2VOL_L_DEF (0x00) +#define MCB_AA_ALAT_LI2 (0x40) +#define MCB_AA_LI2VOL_L (0x1F) + +#define MCI_AA_LI2VOL_R (28) +#define MCI_AA_LI2VOL_R_DEF (0x00) +#define MCB_AA_LI2VOL_R (0x1F) + +#define MCI_AA_MC1VOL (29) +#define MCI_AA_MC1VOL_DEF (0x00) +#define MCB_AA_MC1VOL (0x1F) + +#define MCI_AA_MC2VOL (30) +#define MCI_AA_MC2VOL_DEF (0x00) +#define MCB_AA_MC2VOL (0x1F) + +#define MCI_AA_MC3VOL (31) +#define MCI_AA_MC3VOL_DEF (0x00) +#define MCB_AA_MC3VOL (0x1F) + +#define MCI_AA_ADVOL_L (32) +#define MCI_AA_ADVOL_L_DEF (0x00) +#define MCB_AA_ALAT_AD (0x40) +#define MCB_AA_ADVOL_L (0x1F) + +#define MCI_AA_ADVOL_R (33) +#define MCB_AA_ADVOL_R (0x1F) + +#define MCI_AA_HPVOL_L (35) +#define MCB_AA_ALAT_HP (0x40) +#define MCB_AA_SVOL_HP (0x20) +#define MCB_AA_HPVOL_L (0x1F) +#define MCI_AA_HPVOL_L_DEF (MCB_AA_SVOL_HP) + +#define MCI_AA_HPVOL_R (36) +#define MCI_AA_HPVOL_R_DEF (0x00) +#define MCB_AA_HPVOL_R (0x1F) + +#define MCI_AA_SPVOL_L (37) +#define MCB_AA_ALAT_SP (0x40) +#define MCB_AA_SVOL_SP (0x20) +#define MCB_AA_SPVOL_L (0x1F) +#define MCI_AA_SPVOL_L_DEF (MCB_AA_SVOL_SP) + +#define MCI_AA_SPVOL_R (38) +#define MCI_AA_SPVOL_R_DEF (0x00) +#define MCB_AA_SPVOL_R (0x1F) + +#define MCI_AA_RCVOL (39) +#define MCB_AA_SVOL_RC (0x20) +#define MCB_AA_RCVOL (0x1F) +#define MCI_AA_RCVOL_DEF (MCB_AA_SVOL_RC) + +#define MCI_AA_LO1VOL_L (40) +#define MCI_AA_LO1VOL_L_DEF (0x20) +#define MCB_AA_ALAT_LO1 (0x40) +#define MCB_AA_LO1VOL_L (0x1F) + +#define MCI_AA_LO1VOL_R (41) +#define MCI_AA_LO1VOL_R_DEF (0x00) +#define MCB_AA_LO1VOL_R (0x1F) + +#define MCI_AA_LO2VOL_L (42) +#define MCI_AA_LO2VOL_L_DEF (0x20) +#define MCB_AA_ALAT_LO2 (0x40) +#define MCB_AA_LO2VOL_L (0x1F) + +#define MCI_AA_LO2VOL_R (43) +#define MCI_AA_LO2VOL_R_DEF (0x00) +#define MCB_AA_LO2VOL_R (0x1F) + +#define MCI_AA_SP_MODE (44) +#define MCB_AA_SPR_HIZ (0x20) +#define MCB_AA_SPL_HIZ (0x10) +#define MCB_AA_SPMN (0x02) +#define MCB_AA_SP_SWAP (0x01) + +#define MCI_AA_MC_GAIN (45) +#define MCI_AA_MC_GAIN_DEF (0x00) +#define MCB_AA_MC2SNG (0x40) +#define MCB_AA_MC2GAIN (0x30) +#define MCB_AA_MC1SNG (0x04) +#define MCB_AA_MC1GAIN (0x03) + +#define MCI_AA_MC3_GAIN (46) +#define MCI_AA_MC3_GAIN_DEF (0x00) +#define MCB_AA_MC3SNG (0x04) +#define MCB_AA_MC3GAIN (0x03) + +#define MCI_AA_RDY_FLAG (47) +#define MCB_AA_LDO_RDY (0x80) +#define MCB_AA_VREF_RDY (0x40) +#define MCB_AA_SPRDY_R (0x20) +#define MCB_AA_SPRDY_L (0x10) +#define MCB_AA_HPRDY_R (0x08) +#define MCB_AA_HPRDY_L (0x04) +#define MCB_AA_CPPDRDY (0x02) + +/* analog mixer common */ +#define MCB_AA_LI1MIX (0x01) +#define MCB_AA_M1MIX (0x08) +#define MCB_AA_M2MIX (0x10) +#define MCB_AA_M3MIX (0x20) +#define MCB_AA_DAMIX (0x40) +#define MCB_AA_DARMIX (0x40) +#define MCB_AA_DALMIX (0x80) + +#define MCB_AA_MONO_DA (0x40) +#define MCB_AA_MONO_LI1 (0x01) + +#define MCI_AA_ADL_MIX (50) +#define MCI_AA_ADL_MONO (51) +#define MCI_AA_ADR_MIX (52) +#define MCI_AA_ADR_MONO (53) + +#define MCI_AA_LO1L_MIX (55) +#define MCI_AA_LO1L_MONO (56) +#define MCI_AA_LO1R_MIX (57) + +#define MCI_AA_LO2L_MIX (58) +#define MCI_AA_LO2L_MONO (59) +#define MCI_AA_LO2R_MIX (60) + +#define MCI_AA_HPL_MIX (61) +#define MCI_AA_HPL_MONO (62) +#define MCI_AA_HPR_MIX (63) + +#define MCI_AA_SPL_MIX (64) +#define MCI_AA_SPL_MONO (65) +#define MCI_AA_SPR_MIX (66) +#define MCI_AA_SPR_MONO (67) + +#define MCI_AA_RC_MIX (69) + +#define MCI_AA_HP_GAIN (77) + +#define MCI_AA_LEV (79) +#define MCB_AA_AVDDLEV (0x07) +#define MCI_AA_LEV_DEF (0x24) + +#define MCI_AA_AP_A1 (123) +#define MCB_AA_AP_CP_A (0x10) +#define MCB_AA_AP_HPL_A (0x02) +#define MCB_AA_AP_HPR_A (0x01) + +#define MCI_AA_AP_A2 (124) +#define MCB_AA_AP_RC1_A (0x20) +#define MCB_AA_AP_RC2_A (0x10) +#define MCB_AA_AP_SPL1_A (0x08) +#define MCB_AA_AP_SPR1_A (0x04) +#define MCB_AA_AP_SPL2_A (0x02) +#define MCB_AA_AP_SPR2_A (0x01) + +/************************************/ + +typedef enum +{ + eMCDRV_DEV_ID_1N2 = 0, + eMCDRV_DEV_ID_1N2B, + eMCDRV_DEV_ID_2N, + eMCDRV_DEV_ID_3N +} MCDRV_DEV_ID; + +typedef enum +{ + eMCDRV_FUNC_LI2 = 0, + eMCDRV_FUNC_DIVR1, + eMCDRV_FUNC_DIVF1, + eMCDRV_FUNC_RANGE, + eMCDRV_FUNC_BYPASS, + eMCDRV_FUNC_ADC1, + eMCDRV_FUNC_PAD2, + eMCDRV_FUNC_DBEX, + eMCDRV_FUNC_GPMODE, + eMCDRV_FUNC_DTMF, + eMCDRV_FUNC_IRQ, + eMCDRV_FUNC_HWADJ +} MCDRV_FUNC_KIND; + +typedef enum +{ + eMCDRV_SLAVE_ADDR_DIG = 0, + eMCDRV_SLAVE_ADDR_ANA +} MCDRV_SLAVE_ADDR_KIND; + +static MCDRV_DEV_ID geDevID = eMCDRV_DEV_ID_1N2; + +static UINT8 gabValid[][4] = +{ +/* MC-1N2 MC-1N2B MC-2N MC-3N */ + {0, 0, 0, 1}, /* DI2 */ + {0, 0, 0, 1}, /* DIVR1 */ + {0, 0, 0, 1}, /* DIVF1 */ + {0, 0, 0, 1}, /* RANGE */ + {0, 0, 0, 1}, /* BYPASS */ + {0, 0, 0, 1}, /* ADC1 */ + {0, 0, 0, 1}, /* PAD2 */ + {0, 0, 1, 1}, /* DBEX */ + {0, 0, 0, 1}, /* GPMODE */ + {0, 0, 0, 1}, /* DTMF */ + {0, 0, 0, 1}, /* IRQ */ + {0, 0, 0, 0}, /* HWADJ */ +}; + +static UINT8 gabSlaveAddr[3][2] = +{ +/* Digital Analog */ + {0x3A, 0x3A}, /* MC1N2 */ + {0x00, 0x00}, /* MC2N */ + {0x00, 0x00} /* MC3N */ +}; + +/**************************************************************************** + * McDevProf_SetDevId + * + * Description: + * Set device ID. + * Arguments: + * eDevId device ID + * Return: + * none + * + ****************************************************************************/ +static void McDevProf_SetDevId(MCDRV_DEV_ID eDevId) +{ + geDevID = eDevId; +} + +/**************************************************************************** + * McDevProf_IsValid + * + * Description: + * Validity function. + * Arguments: + * function kind + * Return: + * 0:Invalid/1:Valid + * + ****************************************************************************/ +static UINT8 McDevProf_IsValid +( + MCDRV_FUNC_KIND eFuncKind +) +{ + return gabValid[eFuncKind][geDevID]; +} + +/**************************************************************************** + * McDevProf_GetSlaveAddr + * + * Description: + * get slave address. + * Arguments: + * eSlaveAddrKind slave address kind + * Return: + * slave address + * + ****************************************************************************/ +static UINT8 McDevProf_GetSlaveAddr +( + MCDRV_SLAVE_ADDR_KIND eSlaveAddrKind +) +{ + return gabSlaveAddr[geDevID][eSlaveAddrKind]; +} + +/**************************************/ + +/* UpdateReg parameter */ +typedef enum +{ + eMCDRV_UPDATE_NORMAL_AA, + eMCDRV_UPDATE_FORCE_AA, + eMCDRV_UPDATE_DUMMY_AA +} MCDRV_UPDATE_MODE_AA; + +/* ePacketBufAlloc setting */ +typedef enum +{ + eMCDRV_PACKETBUF_FREE_AA, + eMCDRV_PACKETBUF_ALLOCATED_AA +} MCDRV_PACKETBUF_ALLOC_AA; + +/* packet */ +typedef struct +{ + UINT32 dDesc; + UINT8 bData; +} MCDRV_PACKET_AA; + +#define MCDRV_MAX_PACKETS_AA (256UL) + +/* packet dDesc */ +/* packet type */ +#define MCDRV_PACKET_TYPE_WRITE_AA (0x10000000UL) +#define MCDRV_PACKET_TYPE_FORCE_WRITE_AA (0x20000000UL) +#define MCDRV_PACKET_TYPE_TIMWAIT_AA (0x30000000UL) +#define MCDRV_PACKET_TYPE_EVTWAIT_AA (0x40000000UL) +#define MCDRV_PACKET_TYPE_TERMINATE_AA (0xF0000000UL) + +#define MCDRV_PACKET_TYPE_MASK_AA (0xF0000000UL) + +/* reg type */ +#define MCDRV_PACKET_REGTYPE_A_AA (0x00000000UL) +#define MCDRV_PACKET_REGTYPE_B_BASE_AA (0x00001000UL) +#define MCDRV_PACKET_REGTYPE_B_MIXER_AA (0x00002000UL) +#define MCDRV_PACKET_REGTYPE_B_AE_AA (0x00003000UL) +#define MCDRV_PACKET_REGTYPE_B_CDSP_AA (0x00004000UL) +#define MCDRV_PACKET_REGTYPE_B_CODEC_AA (0x00005000UL) +#define MCDRV_PACKET_REGTYPE_B_ANA_AA (0x00006000UL) + +#define MCDRV_PACKET_REGTYPE_MASK_AA (0x0000F000UL) +#define MCDRV_PACKET_ADR_MASK_AA (0x00000FFFUL) + +/* event */ +#define MCDRV_EVT_INSFLG_AA (0x00010000UL) +#define MCDRV_EVT_ALLMUTE_AA (0x00020000UL) +#define MCDRV_EVT_DACMUTE_AA (0x00030000UL) +#define MCDRV_EVT_DITMUTE_AA (0x00040000UL) +#define MCDRV_EVT_SVOL_DONE_AA (0x00050000UL) +#define MCDRV_EVT_APM_DONE_AA (0x00060000UL) +#define MCDRV_EVT_ANA_RDY_AA (0x00070000UL) +#define MCDRV_EVT_SYSEQ_FLAG_RESET_AA (0x00080000UL) +#define MCDRV_EVT_CLKBUSY_RESET_AA (0x00090000UL) +#define MCDRV_EVT_CLKSRC_SET_AA (0x000A0000UL) +#define MCDRV_EVT_CLKSRC_RESET_AA (0x000B0000UL) + +#define MCDRV_PACKET_EVT_MASK_AA (0x0FFF0000UL) +#define MCDRV_PACKET_EVTPRM_MASK_AA (0x0000FFFFUL) + +/* timer */ +#define MCDRV_PACKET_TIME_MASK_AA (0x0FFFFFFFUL) + +static SINT32 McDevIf_AllocPacketBuf_AA (void); +static void McDevIf_ReleasePacketBuf_AA (void); +static void McDevIf_ClearPacket_AA (void); +static void McDevIf_AddPacket_AA (UINT32 dDesc, UINT8 bData); +static void McDevIf_AddPacketRepeat_AA (UINT32 dDesc, const UINT8* pbData, UINT16 wDataCount); +static SINT32 McDevIf_ExecutePacket_AA (void); + +static MCDRV_PACKET_AA* gpsPacket = NULL; + + +static MCDRV_PACKET_AA* McResCtrl_AllocPacketBuf_AA (void); +static void McResCtrl_ReleasePacketBuf_AA (void); +static void McResCtrl_InitRegUpdate_AA (void); +static void McResCtrl_AddRegUpdate_AA (UINT16 wRegType, UINT16 wAddress, UINT8 bData, MCDRV_UPDATE_MODE_AA eUpdateMode); +static void McResCtrl_ExecuteRegUpdate_AA (void); +static SINT32 McResCtrl_WaitEvent_AA (UINT32 dEvent, UINT32 dParam); + + +/**************************************************************************** + * McDevIf_AllocPacketBuf_AA + * + * ‹@”\: + * ƒŒƒWƒXƒ^Ý’èƒpƒPƒbƒg—pƒoƒbƒtƒ@‚ÌŠm•Û. + * ˆø”: + * ‚È‚µ + * –ß‚è’l: + * MCDRV_SUCCESS + * MCDRV_ERROR + * + ****************************************************************************/ +SINT32 McDevIf_AllocPacketBuf_AA +( + void +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + + gpsPacket = McResCtrl_AllocPacketBuf_AA(); + if(gpsPacket == NULL) + { + sdRet = MCDRV_ERROR; + } + else + { + McDevIf_ClearPacket_AA(); + } + + return sdRet; +} + +/**************************************************************************** + * McDevIf_ReleasePacketBuf_AA + * + * ‹@”\: + * ƒŒƒWƒXƒ^Ý’èƒpƒPƒbƒg—pƒoƒbƒtƒ@‚ÌŠJ•ú. + * ˆø”: + * ‚È‚µ + * –ß‚è’l: + * ‚È‚µ + * + ****************************************************************************/ +void McDevIf_ReleasePacketBuf_AA +( + void +) +{ + McResCtrl_ReleasePacketBuf_AA(); +} + +/**************************************************************************** + * McDevIf_ClearPacket_AA + * + * ‹@”\: + * ƒpƒPƒbƒg‚̃NƒŠƒA. + * ˆø”: + * ‚È‚µ + * –ß‚è’l: + * ‚È‚µ + * + ****************************************************************************/ +void McDevIf_ClearPacket_AA +( + void +) +{ + if(gpsPacket == NULL) + { + return; + } + + gpsPacket[0].dDesc = MCDRV_PACKET_TYPE_TERMINATE_AA; +} + +/**************************************************************************** + * McDevIf_AddPacket_AA + * + * ‹@”\: + * ƒpƒPƒbƒg’ljÁ + * ˆø”: + * dDesc ƒpƒPƒbƒgî•ñ + * bData ƒpƒPƒbƒgƒf[ƒ^ + * –ß‚è’l: + * ‚È‚µ + * + ****************************************************************************/ +void McDevIf_AddPacket_AA +( + UINT32 dDesc, + UINT8 bData +) +{ + UINT32 i; + + if(gpsPacket == NULL) + { + } + else + { + for(i = 0; i < MCDRV_MAX_PACKETS_AA; i++) + { + if(gpsPacket[i].dDesc == MCDRV_PACKET_TYPE_TERMINATE_AA) + { + break; + } + } + if(i >= MCDRV_MAX_PACKETS_AA) + { + McDevIf_ExecutePacket_AA(); + i = 0; + } + + gpsPacket[i].dDesc = dDesc; + gpsPacket[i].bData = bData; + gpsPacket[i+1UL].dDesc = MCDRV_PACKET_TYPE_TERMINATE_AA; + } +} + +/**************************************************************************** + * McDevIf_AddPacketRepeat_AA + * + * ‹@”\: + * “¯ˆêƒŒƒWƒXƒ^‚ÉŒJ‚è•Ô‚µƒf[ƒ^ƒZƒbƒg‚·‚éƒpƒPƒbƒg‚ð’ljÁ + * ˆø”: + * dDesc ƒpƒPƒbƒgî•ñ + * pbData ƒpƒPƒbƒgƒf[ƒ^ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ + * wDataCount ƒpƒPƒbƒgƒf[ƒ^” + * –ß‚è’l: + * ‚È‚µ + * + ****************************************************************************/ +void McDevIf_AddPacketRepeat_AA +( + UINT32 dDesc, + const UINT8* pbData, + UINT16 wDataCount +) +{ + UINT16 wCount; + + for(wCount = 0; wCount < wDataCount; wCount++) + { + McDevIf_AddPacket_AA(dDesc, pbData[wCount]); + } +} + +/**************************************************************************** + * McDevIf_ExecutePacket_AA + * + * ‹@”\: + * ƒŒƒWƒXƒ^Ý’èƒV[ƒPƒ“ƒX‚ÌŽÀs. + * ˆø”: + * ‚È‚µ + * –ß‚è’l: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +SINT32 McDevIf_ExecutePacket_AA +( + void +) +{ + SINT32 sdRet; + SINT16 swPacketIndex; + UINT32 dPacketType; + UINT32 dParam1; + UINT32 dParam2; + UINT16 wAddress; + UINT16 wRegType; + MCDRV_UPDATE_MODE_AA eUpdateMode; + + if(gpsPacket == NULL) + { + sdRet = MCDRV_ERROR_RESOURCEOVER; + } + else + { + sdRet = MCDRV_SUCCESS; + + McResCtrl_InitRegUpdate_AA(); + swPacketIndex = 0; + while ((MCDRV_PACKET_TYPE_TERMINATE_AA != (gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_TYPE_MASK_AA)) && (sdRet == MCDRV_SUCCESS)) + { + dPacketType = gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_TYPE_MASK_AA; + switch (dPacketType) + { + case MCDRV_PACKET_TYPE_WRITE_AA: + case MCDRV_PACKET_TYPE_FORCE_WRITE_AA: + wRegType = (UINT16)(gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_REGTYPE_MASK_AA); + wAddress = (UINT16)(gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_ADR_MASK_AA); + if (MCDRV_PACKET_TYPE_WRITE_AA == dPacketType) + { + eUpdateMode = eMCDRV_UPDATE_NORMAL_AA; + } + else if (MCDRV_PACKET_TYPE_FORCE_WRITE_AA == dPacketType) + { + eUpdateMode = eMCDRV_UPDATE_FORCE_AA; + } + else + { + eUpdateMode = eMCDRV_UPDATE_DUMMY_AA; + } + McResCtrl_AddRegUpdate_AA(wRegType, wAddress, gpsPacket[swPacketIndex].bData, eUpdateMode); + break; + + case MCDRV_PACKET_TYPE_TIMWAIT_AA: + McResCtrl_ExecuteRegUpdate_AA(); + McResCtrl_InitRegUpdate_AA(); + dParam1 = gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_TIME_MASK_AA; + McSrv_Sleep(dParam1); + break; + + case MCDRV_PACKET_TYPE_EVTWAIT_AA: + McResCtrl_ExecuteRegUpdate_AA(); + McResCtrl_InitRegUpdate_AA(); + dParam1 = gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_EVT_MASK_AA; + dParam2 = gpsPacket[swPacketIndex].dDesc & MCDRV_PACKET_EVTPRM_MASK_AA; + sdRet = McResCtrl_WaitEvent_AA(dParam1, dParam2); + break; + + default: + sdRet = MCDRV_ERROR; + break; + } + + swPacketIndex++; + } + if(sdRet == MCDRV_SUCCESS) + { + McResCtrl_ExecuteRegUpdate_AA(); + } + McDevIf_ClearPacket_AA(); + } + + return sdRet; +} + +/*****************************************/ + +/* power setting */ +#define MCDRV_POWINFO_DIGITAL_DP0_AA ((UINT32)0x0001) +#define MCDRV_POWINFO_DIGITAL_DP1_AA ((UINT32)0x0002) +#define MCDRV_POWINFO_DIGITAL_DP2_AA ((UINT32)0x0004) +#define MCDRV_POWINFO_DIGITAL_DPB_AA ((UINT32)0x0008) +#define MCDRV_POWINFO_DIGITAL_DPDI0_AA ((UINT32)0x0010) +#define MCDRV_POWINFO_DIGITAL_DPDI1_AA ((UINT32)0x0020) +#define MCDRV_POWINFO_DIGITAL_DPDI2_AA ((UINT32)0x0040) +#define MCDRV_POWINFO_DIGITAL_DPPDM_AA ((UINT32)0x0080) +#define MCDRV_POWINFO_DIGITAL_DPBDSP_AA ((UINT32)0x0100) +#define MCDRV_POWINFO_DIGITAL_DPADIF_AA ((UINT32)0x0200) +#define MCDRV_POWINFO_DIGITAL_PLLRST0_AA ((UINT32)0x0400) +typedef struct +{ + UINT32 dDigital; + UINT8 abAnalog[5]; +} MCDRV_POWER_INFO_AA; + + +#define MCDRV_BURST_WRITE_ENABLE (0x01) + +/* eState setting */ +typedef enum +{ + eMCDRV_STATE_NOTINIT_AA, + eMCDRV_STATE_READY_AA +} MCDRV_STATE_AA; + +/* volume setting */ +#define MCDRV_LOGICAL_VOL_MUTE (-24576) /* -96dB */ +#define MCDRV_LOGICAL_MICGAIN_DEF (3840) /* 15dB */ +#define MCDRV_LOGICAL_HPGAIN_DEF (0) /* 0dB */ + +#define MCDRV_VOLUPDATE_ALL_AA (0xFFFFFFFFUL) +#define MCDRV_VOLUPDATE_ANAOUT_ALL_AA (0x00000001UL) + +#define MCDRV_REG_MUTE (0x00) + +/* DAC source setting */ +typedef enum +{ + eMCDRV_DAC_MASTER_AA = 0, + eMCDRV_DAC_VOICE_AA +} MCDRV_DAC_CH_AA; + +/* DIO port setting */ +typedef enum +{ + eMCDRV_DIO_0_AA = 0, + eMCDRV_DIO_1_AA, + eMCDRV_DIO_2_AA +} MCDRV_DIO_PORT_NO_AA; + +/* Path source setting */ +typedef enum +{ + eMCDRV_SRC_NONE_AA = (0), + eMCDRV_SRC_MIC1_AA = (1<<0), + eMCDRV_SRC_MIC2_AA = (1<<1), + eMCDRV_SRC_MIC3_AA = (1<<2), + eMCDRV_SRC_LINE1_L_AA = (1<<3), + eMCDRV_SRC_LINE1_R_AA = (1<<4), + eMCDRV_SRC_LINE1_M_AA = (1<<5), + eMCDRV_SRC_LINE2_L_AA = (1<<6), + eMCDRV_SRC_LINE2_R_AA = (1<<7), + eMCDRV_SRC_LINE2_M_AA = (1<<8), + eMCDRV_SRC_DIR0_AA = (1<<9), + eMCDRV_SRC_DIR1_AA = (1<<10), + eMCDRV_SRC_DIR2_AA = (1<<11), + eMCDRV_SRC_DTMF_AA = (1<<12), + eMCDRV_SRC_PDM_AA = (1<<13), + eMCDRV_SRC_ADC0_AA = (1<<14), + eMCDRV_SRC_ADC1_AA = (1<<15), + eMCDRV_SRC_DAC_L_AA = (1<<16), + eMCDRV_SRC_DAC_R_AA = (1<<17), + eMCDRV_SRC_DAC_M_AA = (1<<18), + eMCDRV_SRC_AE_AA = (1<<19), + eMCDRV_SRC_CDSP_AA = (1<<20), + eMCDRV_SRC_MIX_AA = (1<<21), + eMCDRV_SRC_DIR2_DIRECT_AA = (1<<22), + eMCDRV_SRC_CDSP_DIRECT_AA = (1<<23) +} MCDRV_SRC_TYPE_AA; + +/* Path destination setting */ +typedef enum +{ + eMCDRV_DST_CH0_AA = 0, + eMCDRV_DST_CH1_AA +} MCDRV_DST_CH; +typedef enum +{ + eMCDRV_DST_HP_AA = 0, + eMCDRV_DST_SP_AA, + eMCDRV_DST_RCV_AA, + eMCDRV_DST_LOUT1_AA, + eMCDRV_DST_LOUT2_AA, + eMCDRV_DST_PEAK_AA, + eMCDRV_DST_DIT0_AA, + eMCDRV_DST_DIT1_AA, + eMCDRV_DST_DIT2_AA, + eMCDRV_DST_DAC_AA, + eMCDRV_DST_AE_AA, + eMCDRV_DST_CDSP_AA, + eMCDRV_DST_ADC0_AA, + eMCDRV_DST_ADC1_AA, + eMCDRV_DST_MIX_AA, + eMCDRV_DST_BIAS_AA +} MCDRV_DST_TYPE_AA; + +/* Register accsess availability */ +typedef enum +{ + eMCDRV_ACCESS_DENY_AA = 0, + eMCDRV_READ_ONLY_AA = 0x01, + eMCDRV_WRITE_ONLY_AA = 0x02, + eMCDRV_READ_WRITE_AA = eMCDRV_READ_ONLY_AA | eMCDRV_WRITE_ONLY_AA +} MCDRV_REG_ACCSESS_AA; + + +/* power management sequence mode */ +typedef enum +{ + eMCDRV_APM_ON_AA, + eMCDRV_APM_OFF_AA +} MCDRV_PMODE_AA; + +#define MCDRV_A_REG_NUM_AA (64) +#define MCDRV_B_BASE_REG_NUM_AA (32) +#define MCDRV_B_MIXER_REG_NUM_AA (218) +#define MCDRV_B_AE_REG_NUM_AA (255) +#define MCDRV_B_CDSP_REG_NUM_AA (130) +#define MCDRV_B_CODEC_REG_NUM_AA (128) +#define MCDRV_B_ANA_REG_NUM_AA (128) + +/* control packet for serial host interface */ +#define MCDRV_MAX_CTRL_DATA_NUM (1024) +typedef struct +{ + UINT8 abData[MCDRV_MAX_CTRL_DATA_NUM]; + UINT16 wDataNum; +} MCDRV_SERIAL_CTRL_PACKET_AA; + +/* HWADJ setting */ +typedef enum _MCDRV_HWADJ +{ + eMCDRV_HWADJ_NOCHANGE = 0, + eMCDRV_HWADJ_THRU, + eMCDRV_HWADJ_REC8, + eMCDRV_HWADJ_REC44, + eMCDRV_HWADJ_REC48, + eMCDRV_HWADJ_PLAY8, + eMCDRV_HWADJ_PLAY44, + eMCDRV_HWADJ_PLAY48 +} MCDRV_HWADJ; + +/* global information */ +typedef struct +{ + UINT8 bHwId; + MCDRV_PACKETBUF_ALLOC_AA ePacketBufAlloc; + UINT8 abRegValA[MCDRV_A_REG_NUM_AA]; + UINT8 abRegValB_BASE[MCDRV_B_BASE_REG_NUM_AA]; + UINT8 abRegValB_MIXER[MCDRV_B_MIXER_REG_NUM_AA]; + UINT8 abRegValB_AE[MCDRV_B_AE_REG_NUM_AA]; + UINT8 abRegValB_CDSP[MCDRV_B_CDSP_REG_NUM_AA]; + UINT8 abRegValB_CODEC[MCDRV_B_CODEC_REG_NUM_AA]; + UINT8 abRegValB_ANA[MCDRV_B_ANA_REG_NUM_AA]; + + MCDRV_INIT_INFO sInitInfo; + MCDRV_PATH_INFO sPathInfo; + MCDRV_PATH_INFO sPathInfoVirtual; + MCDRV_VOL_INFO sVolInfo; + MCDRV_DIO_INFO sDioInfo; + MCDRV_DAC_INFO sDacInfo; + MCDRV_ADC_INFO sAdcInfo; + MCDRV_SP_INFO sSpInfo; + MCDRV_DNG_INFO sDngInfo; + MCDRV_AE_INFO sAeInfo; + MCDRV_PDM_INFO sPdmInfo; + MCDRV_GP_MODE sGpMode; + UINT8 abGpMask[GPIO_PAD_NUM]; + + MCDRV_SERIAL_CTRL_PACKET_AA sCtrlPacket; + UINT16 wCurSlaveAddress; + UINT16 wCurRegType; + UINT16 wCurRegAddress; + UINT16 wDataContinueCount; + UINT16 wPrevAddressIndex; + + MCDRV_PMODE_AA eAPMode; + + MCDRV_HWADJ eHwAdj; +} MCDRV_GLOBAL_INFO_AA; + +static SINT32 McResCtrl_SetHwId_AA (UINT8 bHwId); +static void McResCtrl_Init_AA (const MCDRV_INIT_INFO* psInitInfo); +static void McResCtrl_UpdateState_AA (MCDRV_STATE_AA eState); +static MCDRV_STATE_AA McResCtrl_GetState_AA (void); +static UINT8 McResCtrl_GetRegVal_AA (UINT16 wRegType, UINT16 wRegAddr); +static void McResCtrl_SetRegVal_AA (UINT16 wRegType, UINT16 wRegAddr, UINT8 bRegVal); + +static void McResCtrl_GetInitInfo_AA (MCDRV_INIT_INFO* psInitInfo); +static void McResCtrl_SetClockInfo_AA (const MCDRV_CLOCK_INFO* psClockInfo); +static void McResCtrl_SetPathInfo_AA (const MCDRV_PATH_INFO* psPathInfo); +static void McResCtrl_GetPathInfo_AA (MCDRV_PATH_INFO* psPathInfo); +static void McResCtrl_GetPathInfoVirtual_AA (MCDRV_PATH_INFO* psPathInfo); +static void McResCtrl_SetDioInfo_AA (const MCDRV_DIO_INFO* psDioInfo, UINT32 dUpdateInfo); +static void McResCtrl_GetDioInfo_AA (MCDRV_DIO_INFO* psDioInfo); +static void McResCtrl_SetVolInfo_AA (const MCDRV_VOL_INFO* psVolInfo); +static void McResCtrl_GetVolInfo_AA (MCDRV_VOL_INFO* psVolInfo); +static void McResCtrl_SetDacInfo_AA (const MCDRV_DAC_INFO* psDacInfo, UINT32 dUpdateInfo); +static void McResCtrl_GetDacInfo_AA (MCDRV_DAC_INFO* psDacInfo); +static void McResCtrl_SetAdcInfo_AA (const MCDRV_ADC_INFO* psAdcInfo, UINT32 dUpdateInfo); +static void McResCtrl_GetAdcInfo_AA (MCDRV_ADC_INFO* psAdcInfo); +static void McResCtrl_SetSpInfo_AA (const MCDRV_SP_INFO* psSpInfo); +static void McResCtrl_GetSpInfo_AA (MCDRV_SP_INFO* psSpInfo); +static void McResCtrl_SetDngInfo_AA (const MCDRV_DNG_INFO* psDngInfo, UINT32 dUpdateInfo); +static void McResCtrl_GetDngInfo_AA (MCDRV_DNG_INFO* psDngInfo); +static void McResCtrl_SetAeInfo_AA (const MCDRV_AE_INFO* psAeInfo, UINT32 dUpdateInfo); +static void McResCtrl_GetAeInfo_AA (MCDRV_AE_INFO* psAeInfo); +static void McResCtrl_SetPdmInfo_AA (const MCDRV_PDM_INFO* psPdmInfo, UINT32 dUpdateInfo); +static void McResCtrl_GetPdmInfo_AA (MCDRV_PDM_INFO* psPdmInfo); +static void McResCtrl_SetGPMode_AA (const MCDRV_GP_MODE* psGpMode); +static void McResCtrl_GetGPMode_AA (MCDRV_GP_MODE* psGpMode); +static void McResCtrl_SetGPMask_AA (UINT8 bMask, UINT32 dPadNo); +static void McResCtrl_GetGPMask_AA (UINT8* pabMask); + +static void McResCtrl_GetVolReg_AA (MCDRV_VOL_INFO* psVolInfo); +static void McResCtrl_GetPowerInfo_AA (MCDRV_POWER_INFO_AA* psPowerInfo); +static void McResCtrl_GetPowerInfoRegAccess_AA (const MCDRV_REG_INFO* psRegInfo, MCDRV_POWER_INFO_AA* psPowerInfo); +static void McResCtrl_GetCurPowerInfo_AA (MCDRV_POWER_INFO_AA* psPowerInfo); + +static MCDRV_SRC_TYPE_AA McResCtrl_GetDACSource_AA (MCDRV_DAC_CH_AA eCh); +static MCDRV_SRC_TYPE_AA McResCtrl_GetDITSource_AA (MCDRV_DIO_PORT_NO_AA ePort); +static MCDRV_SRC_TYPE_AA McResCtrl_GetAESource_AA (void); +static UINT8 McResCtrl_IsSrcUsed_AA (MCDRV_SRC_TYPE_AA ePathSrc); +static UINT8 McResCtrl_IsDstUsed_AA (MCDRV_DST_TYPE_AA eType, MCDRV_DST_CH eCh); +static MCDRV_REG_ACCSESS_AA McResCtrl_GetRegAccess_AA (const MCDRV_REG_INFO* psRegInfo); + +static MCDRV_PMODE_AA McResCtrl_GetAPMode_AA (void); + + + +static MCDRV_HWADJ McResCtrl_ConfigHwAdj_AA (void); + +/*************************************/ + +/* HW_ID */ +#define MCDRV_HWID_YMU821_AA (0x78) + +/* wait time */ +#define MCDRV_INTERVAL_MUTE_AA (1000) +#define MCDRV_TIME_OUT_MUTE_AA (1000) + + +static MCDRV_STATE_AA geState = eMCDRV_STATE_NOTINIT_AA; + +static MCDRV_GLOBAL_INFO_AA gsGlobalInfo_AA; +static MCDRV_PACKET_AA gasPacket[MCDRV_MAX_PACKETS_AA+1]; + +/* register next address */ +static const UINT16 gawNextAddressA[MCDRV_A_REG_NUM_AA] = +{ + 0, 1, 2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 8, 0xFFFF, 0xFFFF, 0xFFFF, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF +}; + +static const UINT16 gawNextAddressB_BASE[MCDRV_B_BASE_REG_NUM_AA] = +{ + 1, 2, 3, 4, 5, 6, 7, 0xFFFF, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 0xFFFF, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0xFFFF +}; + +static const UINT16 gawNextAddressB_MIXER[MCDRV_B_MIXER_REG_NUM_AA] = +{ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF +}; + +static const UINT16 gawNextAddressB_AE[MCDRV_B_AE_REG_NUM_AA] = +{ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 0xFFFF +}; + +static const UINT16 gawNextAddressB_CDSP[MCDRV_B_CDSP_REG_NUM_AA] = +{ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 0xFFFF +}; + +static const UINT16 gawNextAddressB_CODEC[MCDRV_B_CODEC_REG_NUM_AA] = +{ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0xFFFF +}; + +static const UINT16 gawNextAddressB_Ana[MCDRV_B_ANA_REG_NUM_AA] = +{ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 0xFFFF, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0xFFFF +}; + +/* register access available */ +static const MCDRV_REG_ACCSESS_AA gawRegAccessAvailableA[256] = +{ + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_READ_ONLY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, +}; +static const MCDRV_REG_ACCSESS_AA gawRegAccessAvailableB_BASE[256] = +{ + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, +}; +static const MCDRV_REG_ACCSESS_AA gawRegAccessAvailableB_ANA[256] = +{ + eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_ONLY_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_ONLY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, +}; +static const MCDRV_REG_ACCSESS_AA gawRegAccessAvailableB_CODEC[256] = +{ + eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_READ_ONLY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, +}; +static const MCDRV_REG_ACCSESS_AA gawRegAccessAvailableB_MIX[256] = +{ + eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, + eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_ONLY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, + eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_READ_WRITE_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, +}; +static const MCDRV_REG_ACCSESS_AA gawRegAccessAvailableB_AE[256] = +{ + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, + eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_WRITE_ONLY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, + eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, eMCDRV_ACCESS_DENY_AA, +}; + + +static void SetRegDefault(void); +static void InitPathInfo(void); +static void InitVolInfo(void); +static void InitDioInfo(void); +static void InitDacInfo(void); +static void InitAdcInfo(void); +static void InitSpInfo(void); +static void InitDngInfo(void); +static void InitAeInfo(void); +static void InitPdmInfo(void); +static void InitGpMode(void); +static void InitGpMask(void); + +static void SetHPSourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetSPSourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetRCVSourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetLO1SourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetLO2SourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetPMSourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetDIT0SourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetDIT1SourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetDIT2SourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetDACSourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetAESourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetCDSPSourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetADC0SourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetADC1SourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetMixSourceOnOff(const MCDRV_PATH_INFO* psPathInfo); +static void SetBiasSourceOnOff(const MCDRV_PATH_INFO* psPathInfo); + +static void SetDIOCommon(const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort); +static void SetDIODIR(const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort); +static void SetDIODIT(const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort); + +static SINT16 GetDigitalVolReg(SINT16 swVol); +static SINT16 GetADVolReg(SINT16 swVol); +static SINT16 GetLIVolReg(SINT16 swVol); +static SINT16 GetMcVolReg(SINT16 swVol); +static SINT16 GetMcGainReg(SINT16 swVol); +static SINT16 GetHpVolReg(SINT16 swVol); +static SINT16 GetHpGainReg(SINT16 swVol); +static SINT16 GetSpVolReg(SINT16 swVol); +static SINT16 GetRcVolReg(SINT16 swVol); +static SINT16 GetLoVolReg(SINT16 swVol); + +static SINT32 WaitBitSet(UINT8 bSlaveAddr, UINT16 wRegAddr, UINT8 bBit, UINT32 dCycleTime, UINT32 dTimeOut); +static SINT32 WaitBitRelease(UINT8 bSlaveAddr, UINT16 wRegAddr, UINT8 bBit, UINT32 dCycleTime, UINT32 dTimeOut); + +/**************************************************************************** + * McResCtrl_SetHwId_AA + * + * Description: + * Set hardware ID. + * Arguments: + * bHwId hardware ID + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_INIT + * + ****************************************************************************/ +SINT32 McResCtrl_SetHwId_AA +( + UINT8 bHwId +) +{ + gsGlobalInfo_AA.bHwId = bHwId; + + switch (bHwId) + { + case MCDRV_HWID_YMU821_AA: + McDevProf_SetDevId(eMCDRV_DEV_ID_1N2); + break; + default: + return MCDRV_ERROR_INIT; + } + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * McResCtrl_Init_AA + * + * Description: + * initialize the resource controller. + * Arguments: + * psInitInfo pointer to the initialize information struct + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_Init_AA +( + const MCDRV_INIT_INFO* psInitInfo +) +{ + gsGlobalInfo_AA.ePacketBufAlloc = eMCDRV_PACKETBUF_FREE_AA; + SetRegDefault(); + + gsGlobalInfo_AA.sInitInfo.bCkSel = psInitInfo->bCkSel; + gsGlobalInfo_AA.sInitInfo.bDivR0 = psInitInfo->bDivR0; + gsGlobalInfo_AA.sInitInfo.bDivF0 = psInitInfo->bDivF0; + if(McDevProf_IsValid(eMCDRV_FUNC_DIVR1) == 1) + { + gsGlobalInfo_AA.sInitInfo.bDivR1 = psInitInfo->bDivR1; + } + else + { + gsGlobalInfo_AA.sInitInfo.bDivR1 = 0; + } + if(McDevProf_IsValid(eMCDRV_FUNC_DIVF1) == 1) + { + gsGlobalInfo_AA.sInitInfo.bDivF1 = psInitInfo->bDivF1; + } + else + { + gsGlobalInfo_AA.sInitInfo.bDivF1 = 0; + } + if(McDevProf_IsValid(eMCDRV_FUNC_RANGE) == 1) + { + gsGlobalInfo_AA.sInitInfo.bRange0 = psInitInfo->bRange0; + gsGlobalInfo_AA.sInitInfo.bRange1 = psInitInfo->bRange1; + } + else + { + gsGlobalInfo_AA.sInitInfo.bRange0 = 0; + gsGlobalInfo_AA.sInitInfo.bRange1 = 0; + } + if(McDevProf_IsValid(eMCDRV_FUNC_BYPASS) == 1) + { + gsGlobalInfo_AA.sInitInfo.bBypass = psInitInfo->bBypass; + } + else + { + gsGlobalInfo_AA.sInitInfo.bBypass = 0; + } + gsGlobalInfo_AA.sInitInfo.bDioSdo0Hiz = psInitInfo->bDioSdo0Hiz; + gsGlobalInfo_AA.sInitInfo.bDioSdo1Hiz = psInitInfo->bDioSdo1Hiz; + gsGlobalInfo_AA.sInitInfo.bDioSdo2Hiz = psInitInfo->bDioSdo2Hiz; + gsGlobalInfo_AA.sInitInfo.bDioClk0Hiz = psInitInfo->bDioClk0Hiz; + gsGlobalInfo_AA.sInitInfo.bDioClk1Hiz = psInitInfo->bDioClk1Hiz; + gsGlobalInfo_AA.sInitInfo.bDioClk2Hiz = psInitInfo->bDioClk2Hiz; + gsGlobalInfo_AA.sInitInfo.bPcmHiz = psInitInfo->bPcmHiz; + gsGlobalInfo_AA.sInitInfo.bLineIn1Dif = psInitInfo->bLineIn1Dif; + if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1) + { + gsGlobalInfo_AA.sInitInfo.bLineIn2Dif = psInitInfo->bLineIn2Dif; + } + else + { + gsGlobalInfo_AA.sInitInfo.bLineIn2Dif = MCDRV_LINE_STEREO; + } + gsGlobalInfo_AA.sInitInfo.bLineOut1Dif = psInitInfo->bLineOut1Dif; + gsGlobalInfo_AA.sInitInfo.bLineOut2Dif = psInitInfo->bLineOut2Dif; + gsGlobalInfo_AA.sInitInfo.bSpmn = psInitInfo->bSpmn; + gsGlobalInfo_AA.sInitInfo.bMic1Sng = psInitInfo->bMic1Sng; + gsGlobalInfo_AA.sInitInfo.bMic2Sng = psInitInfo->bMic2Sng; + gsGlobalInfo_AA.sInitInfo.bMic3Sng = psInitInfo->bMic3Sng; + gsGlobalInfo_AA.sInitInfo.bPowerMode = psInitInfo->bPowerMode; + gsGlobalInfo_AA.sInitInfo.bSpHiz = psInitInfo->bSpHiz; + gsGlobalInfo_AA.sInitInfo.bLdo = psInitInfo->bLdo; + gsGlobalInfo_AA.sInitInfo.bPad0Func = psInitInfo->bPad0Func; + gsGlobalInfo_AA.sInitInfo.bPad1Func = psInitInfo->bPad1Func; + if(McDevProf_IsValid(eMCDRV_FUNC_PAD2) == 1) + { + gsGlobalInfo_AA.sInitInfo.bPad2Func = psInitInfo->bPad2Func; + } + else + { + gsGlobalInfo_AA.sInitInfo.bPad2Func = MCDRV_PAD_GPIO; + } + gsGlobalInfo_AA.sInitInfo.bAvddLev = psInitInfo->bAvddLev; + gsGlobalInfo_AA.sInitInfo.bVrefLev = psInitInfo->bVrefLev; + gsGlobalInfo_AA.sInitInfo.bDclGain = psInitInfo->bDclGain; + gsGlobalInfo_AA.sInitInfo.bDclLimit = psInitInfo->bDclLimit; + gsGlobalInfo_AA.sInitInfo.bReserved1 = psInitInfo->bReserved1; + gsGlobalInfo_AA.sInitInfo.bReserved2 = psInitInfo->bReserved2; + gsGlobalInfo_AA.sInitInfo.bReserved3 = psInitInfo->bReserved3; + gsGlobalInfo_AA.sInitInfo.bReserved4 = psInitInfo->bReserved4; + gsGlobalInfo_AA.sInitInfo.bReserved5 = psInitInfo->bReserved5; + gsGlobalInfo_AA.sInitInfo.sWaitTime = psInitInfo->sWaitTime; + + InitPathInfo(); + InitVolInfo(); + InitDioInfo(); + InitDacInfo(); + InitAdcInfo(); + InitSpInfo(); + InitDngInfo(); + InitAeInfo(); + InitPdmInfo(); + InitGpMode(); + InitGpMask(); + + McResCtrl_InitRegUpdate_AA(); + + gsGlobalInfo_AA.eAPMode = eMCDRV_APM_OFF_AA; + + gsGlobalInfo_AA.eHwAdj = eMCDRV_HWADJ_THRU; +} + +/**************************************************************************** + * SetRegDefault + * + * Description: + * Initialize the virtual registers. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void SetRegDefault +( + void +) +{ + UINT16 i; + for(i = 0; i < MCDRV_A_REG_NUM_AA; i++) + { + gsGlobalInfo_AA.abRegValA[i] = 0; + } + gsGlobalInfo_AA.abRegValA[MCI_AA_RST] = MCI_AA_RST_DEF; + gsGlobalInfo_AA.abRegValA[MCI_AA_HW_ID] = MCI_AA_HW_ID_DEF; + + for(i = 0; i < MCDRV_B_BASE_REG_NUM_AA; i++) + { + gsGlobalInfo_AA.abRegValB_BASE[i] = 0; + } + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_RSTB] = MCI_AA_RSTB_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PWM_DIGITAL] = MCI_AA_PWM_DIGITAL_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PWM_DIGITAL_1] = MCI_AA_PWM_DIGITAL_1_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PWM_DIGITAL_CDSP] = MCI_AA_PWM_DIGITAL_CDSP_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PWM_DIGITAL_BDSP] = MCI_AA_PWM_DIGITAL_BDSP_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_SD_MSK] = MCI_AA_SD_MSK_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_SD_MSK_1] = MCI_AA_SD_MSK_1_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_BCLK_MSK] = MCI_AA_BCLK_MSK_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_BCLK_MSK_1] = MCI_AA_BCLK_MSK_1_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_BCKP] = MCI_AA_BCKP_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PLL_RST] = MCI_AA_PLL_RST_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_DIVR0] = MCI_AA_DIVR0_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_DIVF0] = MCI_AA_DIVF0_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PA_MSK] = MCI_AA_PA_MSK_DEF; + gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PA_MSK_1] = MCI_AA_PA_MSK_1_DEF; + + for(i = 0; i < MCDRV_B_MIXER_REG_NUM_AA; i++) + { + gsGlobalInfo_AA.abRegValB_MIXER[i] = 0; + } + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_DIT_ININTP] = MCI_AA_DIT_ININTP_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_DIR_INTP] = MCI_AA_DIR_INTP_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_ADC_INTP] = MCI_AA_ADC_INTP_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_AINTP] = MCI_AA_AINTP_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_IINTP] = MCI_AA_IINTP_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_DAC_INTP] = MCI_AA_DAC_INTP_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_DIR0_CH] = MCI_AA_DIR0_CH_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_DIT0_SLOT] = MCI_AA_DIT0_SLOT_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PCM_RX0] = MCI_AA_PCM_RX0_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PCM_TX0] = MCI_AA_PCM_TX0_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PCM_SLOT_TX0] = MCI_AA_PCM_SLOT_TX0_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_DIR1_CH] = MCI_AA_DIR1_CH_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_DIT1_SLOT] = MCI_AA_DIT1_SLOT_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PCM_RX1] = MCI_AA_PCM_RX1_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PCM_TX1] = MCI_AA_PCM_TX1_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PCM_SLOT_TX1] = MCI_AA_PCM_SLOT_TX1_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_DIR2_CH] = MCI_AA_DIR2_CH_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_DIT2_SLOT] = MCI_AA_DIT2_SLOT_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PCM_RX2] = MCI_AA_PCM_RX2_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PCM_TX2] = MCI_AA_PCM_TX2_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PCM_SLOT_TX2] = MCI_AA_PCM_SLOT_TX2_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_CDI_CH] = MCI_AA_CDI_CH_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_CDO_SLOT] = MCI_AA_CDO_SLOT_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PDM_AGC] = MCI_AA_PDM_AGC_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PDM_MUTE] = MCI_AA_PDM_MUTE_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_PDM_STWAIT] = MCI_AA_PDM_STWAIT_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_CHP_H] = MCI_AA_CHP_H_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_CHP_M] = MCI_AA_CHP_M_DEF; + gsGlobalInfo_AA.abRegValB_MIXER[MCI_AA_CHP_L] = MCI_AA_CHP_L_DEF; + + for(i = 0; i < MCDRV_B_AE_REG_NUM_AA; i++) + { + gsGlobalInfo_AA.abRegValB_AE[i] = 0; + } + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_BAND0_CEQ0] = MCI_AA_BAND0_CEQ0_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_BAND1_CEQ0] = MCI_AA_BAND1_CEQ0_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_BAND2_CEQ0] = MCI_AA_BAND2_CEQ0_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_BAND3H_CEQ0] = MCI_AA_BAND3H_CEQ0_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_BAND4H_CEQ0] = MCI_AA_BAND4H_CEQ0_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_BAND5_CEQ0] = MCI_AA_BAND5_CEQ0_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_BAND6H_CEQ0] = MCI_AA_BAND6H_CEQ0_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_BAND7H_CEQ0] = MCI_AA_BAND7H_CEQ0_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_PDM_CHP0_H] = MCI_AA_PDM_CHP0_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_PDM_CHP0_M] = MCI_AA_PDM_CHP0_M_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_PDM_CHP0_L] = MCI_AA_PDM_CHP0_L_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_PDM_CHP1_H] = MCI_AA_PDM_CHP1_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_PDM_CHP1_M] = MCI_AA_PDM_CHP1_M_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_PDM_CHP1_L] = MCI_AA_PDM_CHP1_L_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_PDM_CHP3_H] = MCI_AA_PDM_CHP3_H_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_PDM_CHP3_M] = MCI_AA_PDM_CHP3_M_DEF; + gsGlobalInfo_AA.abRegValB_AE[MCI_AA_PDM_CHP3_L] = MCI_AA_PDM_CHP3_L_DEF; + + for(i = 0; i < MCDRV_B_CDSP_REG_NUM_AA; i++) + { + gsGlobalInfo_AA.abRegValB_CDSP[i] = 0; + } + gsGlobalInfo_AA.abRegValB_CDSP[MCI_AA_JOEMP] = MCI_AA_JOEMP_DEF; + gsGlobalInfo_AA.abRegValB_CDSP[MCI_AA_JEEMP] = MCI_AA_JEEMP_DEF; + gsGlobalInfo_AA.abRegValB_CDSP[MCI_AA_CDSP_SRST] = MCI_AA_CDSP_SRST_DEF; + + for(i = 0; i < MCDRV_B_ANA_REG_NUM_AA; i++) + { + gsGlobalInfo_AA.abRegValB_ANA[i] = 0; + } + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_ANA_RST] = MCI_AA_ANA_RST_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_0] = MCI_AA_PWM_ANALOG_0_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_1] = MCI_AA_PWM_ANALOG_1_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_2] = MCI_AA_PWM_ANALOG_2_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_3] = MCI_AA_PWM_ANALOG_3_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_4] = MCI_AA_PWM_ANALOG_4_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_DNGATRT] = MCI_AA_DNGATRT_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_DNGON] = MCI_AA_DNGON_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_HPVOL_L] = MCI_AA_HPVOL_L_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_SPVOL_L] = MCI_AA_SPVOL_L_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_RCVOL] = MCI_AA_RCVOL_DEF; + gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_LEV] = MCI_AA_LEV_DEF; + + for(i = 0; i < MCDRV_B_CODEC_REG_NUM_AA; i++) + { + gsGlobalInfo_AA.abRegValB_CODEC[i] = 0; + } + gsGlobalInfo_AA.abRegValB_CODEC[MCI_AA_DPADIF] = MCI_AA_DPADIF_DEF; + gsGlobalInfo_AA.abRegValB_CODEC[MCI_AA_AD_AGC] = MCI_AA_AD_AGC_DEF; + gsGlobalInfo_AA.abRegValB_CODEC[MCI_AA_DAC_CONFIG] = MCI_AA_DAC_CONFIG_DEF; +} + +/**************************************************************************** + * InitPathInfo + * + * Description: + * Initialize path info. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitPathInfo +( + void +) +{ + UINT8 bCh, bBlockIdx; + UINT8 abOnOff[SOURCE_BLOCK_NUM]; + + abOnOff[0] = (MCDRV_SRC0_MIC1_OFF|MCDRV_SRC0_MIC2_OFF|MCDRV_SRC0_MIC3_OFF); + abOnOff[1] = (MCDRV_SRC1_LINE1_L_OFF|MCDRV_SRC1_LINE1_R_OFF|MCDRV_SRC1_LINE1_M_OFF); + abOnOff[2] = (MCDRV_SRC2_LINE2_L_OFF|MCDRV_SRC2_LINE2_R_OFF|MCDRV_SRC2_LINE2_M_OFF); + abOnOff[3] = (MCDRV_SRC3_DIR0_OFF|MCDRV_SRC3_DIR1_OFF|MCDRV_SRC3_DIR2_OFF|MCDRV_SRC3_DIR2_DIRECT_OFF); + abOnOff[4] = (MCDRV_SRC4_DTMF_OFF|MCDRV_SRC4_PDM_OFF|MCDRV_SRC4_ADC0_OFF|MCDRV_SRC4_ADC1_OFF); + abOnOff[5] = (MCDRV_SRC5_DAC_L_OFF|MCDRV_SRC5_DAC_R_OFF|MCDRV_SRC5_DAC_M_OFF); + abOnOff[6] = (MCDRV_SRC6_MIX_OFF|MCDRV_SRC6_AE_OFF|MCDRV_SRC6_CDSP_OFF|MCDRV_SRC6_CDSP_DIRECT_OFF); + + for(bCh = 0; bCh < HP_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < SP_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < RC_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < LOUT1_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asLout1[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < LOUT2_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asLout2[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < PEAK_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asPeak[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < DIT0_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asDit0[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < DIT1_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asDit1[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < DIT2_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asDit2[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < AE_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asAe[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < CDSP_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asCdsp[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < ADC0_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < ADC1_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asAdc1[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < MIX_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asMix[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + for(bCh = 0; bCh < BIAS_PATH_CHANNELS; bCh++) + { + for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++) + { + gsGlobalInfo_AA.sPathInfo.asBias[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx]; + } + } + gsGlobalInfo_AA.sPathInfoVirtual = gsGlobalInfo_AA.sPathInfo; +} + +/**************************************************************************** + * InitVolInfo + * + * Description: + * Initialize volume info. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitVolInfo +( + void +) +{ + UINT8 bCh; + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Ad0[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Ad1[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < AENG6_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Aeng6[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Pdm[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DTMF_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dtmfb[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir0[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir1[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir2[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Ad0Att[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Ad1Att[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir0Att[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir1Att[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir2Att[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_SideTone[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DTFM_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_DtmfAtt[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_DacMaster[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_DacVoice[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_DacAtt[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dit0[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dit1[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dit2[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Ad0[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Ad1[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < LIN1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Lin1[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < LIN2_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Lin2[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic1[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic2[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic3[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < HP_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Hp[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < SP_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Sp[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < RC_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Rc[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < LOUT1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Lout1[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < LOUT2_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Lout2[bCh] = MCDRV_LOGICAL_VOL_MUTE; + } + for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic1Gain[bCh] = MCDRV_LOGICAL_MICGAIN_DEF; + } + for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic2Gain[bCh] = MCDRV_LOGICAL_MICGAIN_DEF; + } + for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic3Gain[bCh] = MCDRV_LOGICAL_MICGAIN_DEF; + } + for(bCh = 0; bCh < HPGAIN_VOL_CHANNELS; bCh++) + { + gsGlobalInfo_AA.sVolInfo.aswA_HpGain[bCh] = MCDRV_LOGICAL_HPGAIN_DEF; + } +} + +/**************************************************************************** + * InitDioInfo + * + * Description: + * Initialize Digital I/O info. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitDioInfo +( + void +) +{ + UINT8 bDioIdx, bDioCh; + for(bDioIdx = 0; bDioIdx < 3; bDioIdx++) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bMasterSlave = MCDRV_DIO_SLAVE; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bAutoFs = MCDRV_AUTOFS_ON; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bFs = MCDRV_FS_48000; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bBckFs = MCDRV_BCKFS_64; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bInterface = MCDRV_DIO_DA; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bBckInvert = MCDRV_BCLK_NORMAL; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bPcmHizTim = MCDRV_PCMHIZTIM_FALLING; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bPcmClkDown = MCDRV_PCM_CLKDOWN_OFF; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bPcmFrame = MCDRV_PCM_SHORTFRAME; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bPcmHighPeriod = 0; + + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDir.wSrcRate = 0x0000; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDir.sDaFormat.bBitSel = MCDRV_BITSEL_16; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDir.sDaFormat.bMode = MCDRV_DAMODE_HEADALIGN; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDir.sPcmFormat.bMono = MCDRV_PCM_MONO; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDir.sPcmFormat.bOrder = MCDRV_PCM_MSB_FIRST; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDir.sPcmFormat.bLaw = MCDRV_PCM_LINEAR; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDir.sPcmFormat.bBitSel = MCDRV_PCM_BITSEL_8; + for(bDioCh = 0; bDioCh < DIO_CHANNELS; bDioCh++) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDir.abSlot[bDioCh] = bDioCh; + } + + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDit.wSrcRate = 0x0000; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDit.sDaFormat.bBitSel = MCDRV_BITSEL_16; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDit.sDaFormat.bMode = MCDRV_DAMODE_HEADALIGN; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDit.sPcmFormat.bMono = MCDRV_PCM_MONO; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDit.sPcmFormat.bOrder = MCDRV_PCM_MSB_FIRST; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDit.sPcmFormat.bLaw = MCDRV_PCM_LINEAR; + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDit.sPcmFormat.bBitSel = MCDRV_PCM_BITSEL_8; + for(bDioCh = 0; bDioCh < DIO_CHANNELS; bDioCh++) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bDioIdx].sDit.abSlot[bDioCh] = bDioCh; + } + } +} + +/**************************************************************************** + * InitDacInfo + * + * Description: + * Initialize Dac info. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitDacInfo +( + void +) +{ + gsGlobalInfo_AA.sDacInfo.bMasterSwap = MCDRV_DSWAP_OFF; + gsGlobalInfo_AA.sDacInfo.bVoiceSwap = MCDRV_DSWAP_OFF; + gsGlobalInfo_AA.sDacInfo.bDcCut = MCDRV_DCCUT_ON; +} + +/**************************************************************************** + * InitAdcInfo + * + * Description: + * Initialize Adc info. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitAdcInfo +( + void +) +{ + gsGlobalInfo_AA.sAdcInfo.bAgcAdjust = MCDRV_AGCADJ_0; + gsGlobalInfo_AA.sAdcInfo.bAgcOn = MCDRV_AGC_OFF; + gsGlobalInfo_AA.sAdcInfo.bMono = MCDRV_ADC_STEREO; +} + +/**************************************************************************** + * InitSpInfo + * + * Description: + * Initialize SP info. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitSpInfo +( + void +) +{ + gsGlobalInfo_AA.sSpInfo.bSwap = MCDRV_SPSWAP_OFF; +} + +/**************************************************************************** + * InitDngInfo + * + * Description: + * Initialize DNG info. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitDngInfo +( + void +) +{ + gsGlobalInfo_AA.sDngInfo.abOnOff[0] = MCDRV_DNG_OFF; + gsGlobalInfo_AA.sDngInfo.abThreshold[0] = MCDRV_DNG_THRES_48; + gsGlobalInfo_AA.sDngInfo.abHold[0] = MCDRV_DNG_HOLD_500; + gsGlobalInfo_AA.sDngInfo.abAttack[0] = 2/*MCDRV_DNG_ATTACK_1100*/; + gsGlobalInfo_AA.sDngInfo.abRelease[0] = MCDRV_DNG_RELEASE_940; +} + +/**************************************************************************** + * InitAeInfo + * + * Description: + * Initialize Audio Engine info. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitAeInfo +( + void +) +{ + if(McDevProf_IsValid(eMCDRV_FUNC_HWADJ) == 1) + { + gsGlobalInfo_AA.sAeInfo.bOnOff = MCDRV_EQ3_ON; + } + else + { + gsGlobalInfo_AA.sAeInfo.bOnOff = 0; + } +} + +/**************************************************************************** + * InitPdmInfo + * + * Description: + * Initialize Pdm info. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitPdmInfo +( + void +) +{ + gsGlobalInfo_AA.sPdmInfo.bClk = MCDRV_PDM_CLK_64; + gsGlobalInfo_AA.sPdmInfo.bAgcAdjust = MCDRV_AGCADJ_0; + gsGlobalInfo_AA.sPdmInfo.bAgcOn = MCDRV_AGC_OFF; + gsGlobalInfo_AA.sPdmInfo.bPdmEdge = MCDRV_PDMEDGE_LH; + gsGlobalInfo_AA.sPdmInfo.bPdmWait = MCDRV_PDMWAIT_10; + gsGlobalInfo_AA.sPdmInfo.bPdmSel = MCDRV_PDMSEL_L1R2; + gsGlobalInfo_AA.sPdmInfo.bMono = MCDRV_PDM_STEREO; +} + +/**************************************************************************** + * InitGpMode + * + * Description: + * Initialize Gp mode. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitGpMode +( + void +) +{ + UINT8 bGpioIdx; + for(bGpioIdx = 0; bGpioIdx < GPIO_PAD_NUM; bGpioIdx++) + { + gsGlobalInfo_AA.sGpMode.abGpDdr[bGpioIdx] = MCDRV_GPDDR_IN; + gsGlobalInfo_AA.sGpMode.abGpMode[bGpioIdx] = MCDRV_GPMODE_RISING; + gsGlobalInfo_AA.sGpMode.abGpHost[bGpioIdx] = MCDRV_GPHOST_SCU; + gsGlobalInfo_AA.sGpMode.abGpInvert[bGpioIdx] = MCDRV_GPINV_NORMAL; + } +} + +/**************************************************************************** + * InitGpMask + * + * Description: + * Initialize Gp mask. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void InitGpMask +( + void +) +{ + UINT8 bGpioIdx; + for(bGpioIdx = 0; bGpioIdx < GPIO_PAD_NUM; bGpioIdx++) + { + gsGlobalInfo_AA.abGpMask[bGpioIdx] = MCDRV_GPMASK_ON; + } +} + +/**************************************************************************** + * McResCtrl_UpdateState_AA + * + * Description: + * update state. + * Arguments: + * eState state + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_UpdateState_AA +( + MCDRV_STATE_AA eState +) +{ + geState = eState; +} + +/**************************************************************************** + * McResCtrl_GetState_AA + * + * Description: + * Get state. + * Arguments: + * none + * Return: + * current state + * + ****************************************************************************/ +MCDRV_STATE_AA McResCtrl_GetState_AA +( + void +) +{ + return geState; +} + +/**************************************************************************** + * McResCtrl_GetRegVal_AA + * + * Description: + * Get register value. + * Arguments: + * wRegType register type + * wRegAddr address + * Return: + * register value + * + ****************************************************************************/ +UINT8 McResCtrl_GetRegVal_AA +( + UINT16 wRegType, + UINT16 wRegAddr +) +{ + switch(wRegType) + { + case MCDRV_PACKET_REGTYPE_A_AA: + return gsGlobalInfo_AA.abRegValA[wRegAddr]; + case MCDRV_PACKET_REGTYPE_B_BASE_AA: + return gsGlobalInfo_AA.abRegValB_BASE[wRegAddr]; + case MCDRV_PACKET_REGTYPE_B_MIXER_AA: + return gsGlobalInfo_AA.abRegValB_MIXER[wRegAddr]; + case MCDRV_PACKET_REGTYPE_B_AE_AA: + return gsGlobalInfo_AA.abRegValB_AE[wRegAddr]; + case MCDRV_PACKET_REGTYPE_B_CDSP_AA: + return gsGlobalInfo_AA.abRegValB_CDSP[wRegAddr]; + case MCDRV_PACKET_REGTYPE_B_CODEC_AA: + return gsGlobalInfo_AA.abRegValB_CODEC[wRegAddr]; + case MCDRV_PACKET_REGTYPE_B_ANA_AA: + return gsGlobalInfo_AA.abRegValB_ANA[wRegAddr]; + default: + break; + } + + return 0; +} + +/**************************************************************************** + * McResCtrl_SetRegVal_AA + * + * Description: + * Set register value. + * Arguments: + * wRegType register type + * wRegAddr address + * bRegVal register value + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetRegVal_AA +( + UINT16 wRegType, + UINT16 wRegAddr, + UINT8 bRegVal +) +{ + switch(wRegType) + { + case MCDRV_PACKET_REGTYPE_A_AA: + gsGlobalInfo_AA.abRegValA[wRegAddr] = bRegVal; + break; + case MCDRV_PACKET_REGTYPE_B_BASE_AA: + gsGlobalInfo_AA.abRegValB_BASE[wRegAddr] = bRegVal; + break; + case MCDRV_PACKET_REGTYPE_B_MIXER_AA: + gsGlobalInfo_AA.abRegValB_MIXER[wRegAddr] = bRegVal; + break; + case MCDRV_PACKET_REGTYPE_B_AE_AA: + gsGlobalInfo_AA.abRegValB_AE[wRegAddr] = bRegVal; + break; + case MCDRV_PACKET_REGTYPE_B_CDSP_AA: + gsGlobalInfo_AA.abRegValB_CDSP[wRegAddr] = bRegVal; + break; + case MCDRV_PACKET_REGTYPE_B_CODEC_AA: + gsGlobalInfo_AA.abRegValB_CODEC[wRegAddr] = bRegVal; + break; + case MCDRV_PACKET_REGTYPE_B_ANA_AA: + gsGlobalInfo_AA.abRegValB_ANA[wRegAddr] = bRegVal; + break; + default: + break; + } +} + +/**************************************************************************** + * McResCtrl_GetInitInfo_AA + * + * Description: + * Get Initialize information. + * Arguments: + * psInitInfo Initialize information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetInitInfo_AA +( + MCDRV_INIT_INFO* psInitInfo +) +{ + *psInitInfo = gsGlobalInfo_AA.sInitInfo; +} + +/**************************************************************************** + * McResCtrl_SetClockInfo_AA + * + * Description: + * Set clock information. + * Arguments: + * psClockInfo clock information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetClockInfo_AA +( + const MCDRV_CLOCK_INFO* psClockInfo +) +{ + + gsGlobalInfo_AA.sInitInfo.bCkSel = psClockInfo->bCkSel; + gsGlobalInfo_AA.sInitInfo.bDivR0 = psClockInfo->bDivR0; + gsGlobalInfo_AA.sInitInfo.bDivF0 = psClockInfo->bDivF0; + if(McDevProf_IsValid(eMCDRV_FUNC_DIVR1) == 1) + { + gsGlobalInfo_AA.sInitInfo.bDivR1 = psClockInfo->bDivR1; + } + if(McDevProf_IsValid(eMCDRV_FUNC_DIVF1) == 1) + { + gsGlobalInfo_AA.sInitInfo.bDivF1 = psClockInfo->bDivF1; + } + if(McDevProf_IsValid(eMCDRV_FUNC_RANGE) == 1) + { + gsGlobalInfo_AA.sInitInfo.bRange0 = psClockInfo->bRange0; + gsGlobalInfo_AA.sInitInfo.bRange1 = psClockInfo->bRange1; + } + if(McDevProf_IsValid(eMCDRV_FUNC_BYPASS) == 1) + { + gsGlobalInfo_AA.sInitInfo.bBypass = psClockInfo->bBypass; + } +} + +/**************************************************************************** + * McResCtrl_SetPathInfo_AA + * + * Description: + * Set path information. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetPathInfo_AA +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + + gsGlobalInfo_AA.sPathInfo = gsGlobalInfo_AA.sPathInfoVirtual; + + /* HP source on/off */ + SetHPSourceOnOff(psPathInfo); + + /* SP source on/off */ + SetSPSourceOnOff(psPathInfo); + + /* RCV source on/off */ + SetRCVSourceOnOff(psPathInfo); + + /* LOut1 source on/off */ + SetLO1SourceOnOff(psPathInfo); + + /* LOut2 source on/off */ + SetLO2SourceOnOff(psPathInfo); + + /* Peak source on/off */ + SetPMSourceOnOff(psPathInfo); + + /* DIT0 source on/off */ + SetDIT0SourceOnOff(psPathInfo); + + /* DIT1 source on/off */ + SetDIT1SourceOnOff(psPathInfo); + + /* DIT2 source on/off */ + SetDIT2SourceOnOff(psPathInfo); + + /* DAC source on/off */ + SetDACSourceOnOff(psPathInfo); + + /* AE source on/off */ + SetAESourceOnOff(psPathInfo); + + /* CDSP source on/off */ + SetCDSPSourceOnOff(psPathInfo); + + /* ADC0 source on/off */ + SetADC0SourceOnOff(psPathInfo); + + /* ADC1 source on/off */ + SetADC1SourceOnOff(psPathInfo); + + /* Mix source on/off */ + SetMixSourceOnOff(psPathInfo); + + /* Bias source on/off */ + SetBiasSourceOnOff(psPathInfo); + + gsGlobalInfo_AA.sPathInfoVirtual = gsGlobalInfo_AA.sPathInfo; + + if((McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC0_AA, eMCDRV_DST_CH0_AA) == 0) + && (McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC0_AA, eMCDRV_DST_CH1_AA) == 0)) + {/* ADC0 source all off */ + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + } + + if((McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DAC_L_AA) == 0) + && (McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DAC_M_AA) == 0) + && (McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DAC_R_AA) == 0)) + {/* DAC is unused */ + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + + if(McResCtrl_GetAESource_AA() == eMCDRV_SRC_NONE_AA) + {/* AE source all off */ + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + } + else if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_AE_AA) == 0) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_MIX_AA, eMCDRV_DST_CH0_AA) == 0) + {/* MIX source all off */ + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_MIX_AA) == 0) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + } + + if((McResCtrl_GetDACSource_AA(eMCDRV_DAC_MASTER_AA) == eMCDRV_SRC_NONE_AA) + && (McResCtrl_GetDACSource_AA(eMCDRV_DAC_VOICE_AA) == eMCDRV_SRC_NONE_AA)) + {/* DAC source all off */ + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + } + + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_ADC0_AA) == 0) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + } +} + +/**************************************************************************** + * SetHPSourceOnOff + * + * Description: + * Set HP source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetHPSourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } + + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON; + } + else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF; + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON; + } + else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + } + + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON; + } + else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON; + } + else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + } + + if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } + + if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON; + } + else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF; + } + + if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON; + } + else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + } +} + +/**************************************************************************** + * SetSPSourceOnOff + * + * Description: + * Set SP source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetSPSourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON; + } + else if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF; + } + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON; + } + else if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + } + + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON; + } + else if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + } + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON; + } + else if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + } + + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON; + } + else if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF; + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON; + } + else if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + } + + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON; + } + else if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON; + } + else if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + } +} + +/**************************************************************************** + * SetRCVSourceOnOff + * + * Description: + * Set RCV source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetRCVSourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } + + if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON; + } + else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + } + + if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON; + } + else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + } + + if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON; + } + else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + } +} + +/**************************************************************************** + * SetLO1SourceOnOff + * + * Description: + * Set LOut1 source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetLO1SourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } + + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON; + } + else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF; + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON; + } + else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + } + + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON; + } + else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON; + } + else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + } + + if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } + + if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON; + } + else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF; + } + + if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON; + } + else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + } +} + +/**************************************************************************** + * SetLO2SourceOnOff + * + * Description: + * Set LOut2 source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetLO2SourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } + + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON; + } + else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF; + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON; + } + else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + } + + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON; + } + else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF; + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON; + } + else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF; + } + + if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } + + if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON; + } + else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF; + } + + if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON; + } + else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON; + gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF; + } +} + +/**************************************************************************** + * SetPMSourceOnOff + * + * Description: + * Set PeakMeter source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetPMSourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + (void)psPathInfo; +} + +/**************************************************************************** + * SetDIT0SourceOnOff + * + * Description: + * Set DIT0 source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetDIT0SourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + && gsGlobalInfo_AA.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + } + + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + } + + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + } + + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + } + + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON; + } + else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } +} + +/**************************************************************************** + * SetDIT1SourceOnOff + * + * Description: + * Set DIT1 source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetDIT1SourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + && gsGlobalInfo_AA.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + } + + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + } + + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + } + + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + } + + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON; + } + else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } +} + +/**************************************************************************** + * SetDIT2SourceOnOff + * + * Description: + * Set DIT2 source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetDIT2SourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + && gsGlobalInfo_AA.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + } + + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + } + + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + } + + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + } + + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON; + } + else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } +} + +/**************************************************************************** + * SetDACSourceOnOff + * + * Description: + * Set DAC source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetDACSourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + UINT8 bCh; + for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + && gsGlobalInfo_AA.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + } + + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + } + + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + } + + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + } + + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON; + } + else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF) + { + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + } +} + +/**************************************************************************** + * SetAESourceOnOff + * + * Description: + * Set AE source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetAESourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + && gsGlobalInfo_AA.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + } + + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + } + + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + } + + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON; + } + else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } +} + +/**************************************************************************** + * SetCDSPSourceOnOff + * + * Description: + * Set CDSP source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetCDSPSourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + (void)psPathInfo; +} + +/**************************************************************************** + * SetADC0SourceOnOff + * + * Description: + * Set ADC0 source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetADC0SourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } + + if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON; + } + else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF; + } + if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON; + } + else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + } + + if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } + + if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON; + } + else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF; + } + if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON; + } + else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF) + { + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON; + gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF; + } +} + +/**************************************************************************** + * SetADC1SourceOnOff + * + * Description: + * Set ADC1 source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetADC1SourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + (void)psPathInfo; +} + +/**************************************************************************** + * SetMixSourceOnOff + * + * Description: + * Set Mix source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetMixSourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + && gsGlobalInfo_AA.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON; + } + else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + } + + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON; + } + else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + } + + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON; + } + else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + } + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON; + } + else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + } + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON; + } + else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + } + + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + } + else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF) + { + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF; + } +} + +/**************************************************************************** + * SetExtBiasOnOff + * + * Description: + * Set Bias source On/Off. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +static void SetBiasSourceOnOff +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON) + { + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF; + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON; + } + else if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF) + { + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON; + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF; + } + if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON) + { + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF; + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON; + } + else if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF) + { + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON; + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF; + } + if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON) + { + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF; + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON; + } + else if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF) + { + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON; + gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF; + } +} + +/**************************************************************************** + * McResCtrl_GetPathInfo_AA + * + * Description: + * Get path information. + * Arguments: + * psPathInfo path information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetPathInfo_AA +( + MCDRV_PATH_INFO* psPathInfo +) +{ + *psPathInfo = gsGlobalInfo_AA.sPathInfo; +} + +/**************************************************************************** + * McResCtrl_GetPathInfoVirtual_AA + * + * Description: + * Get virtaul path information. + * Arguments: + * psPathInfo virtaul path information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetPathInfoVirtual_AA +( + MCDRV_PATH_INFO* psPathInfo +) +{ + *psPathInfo = gsGlobalInfo_AA.sPathInfoVirtual; +} + +/**************************************************************************** + * McResCtrl_SetDioInfo_AA + * + * Description: + * Set digital io information. + * Arguments: + * psDioInfo digital io information + * dUpdateInfo update information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetDioInfo_AA +( + const MCDRV_DIO_INFO* psDioInfo, + UINT32 dUpdateInfo +) +{ + + if((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != 0) + { + SetDIOCommon(psDioInfo, 0); + } + if((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != 0) + { + SetDIOCommon(psDioInfo, 1); + } + if((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != 0) + { + SetDIOCommon(psDioInfo, 2); + } + + if((dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != 0) + { + SetDIODIR(psDioInfo, 0); + } + if((dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != 0) + { + SetDIODIR(psDioInfo, 1); + } + if((dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != 0) + { + SetDIODIR(psDioInfo, 2); + } + + if((dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != 0) + { + SetDIODIT(psDioInfo, 0); + } + if((dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != 0) + { + SetDIODIT(psDioInfo, 1); + } + if((dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != 0) + { + SetDIODIT(psDioInfo, 2); + } +} + +/**************************************************************************** + * SetDIOCommon + * + * Description: + * Set digital io common information. + * Arguments: + * psDioInfo digital io information + * bPort port number + * Return: + * none + * + ****************************************************************************/ +static void SetDIOCommon +( + const MCDRV_DIO_INFO* psDioInfo, + UINT8 bPort +) +{ + if(psDioInfo->asPortInfo[bPort].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE + || psDioInfo->asPortInfo[bPort].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bMasterSlave = psDioInfo->asPortInfo[bPort].sDioCommon.bMasterSlave; + } + if(psDioInfo->asPortInfo[bPort].sDioCommon.bAutoFs == MCDRV_AUTOFS_OFF + || psDioInfo->asPortInfo[bPort].sDioCommon.bAutoFs == MCDRV_AUTOFS_ON) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bAutoFs = psDioInfo->asPortInfo[bPort].sDioCommon.bAutoFs; + } + if(psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_48000 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_44100 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_32000 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_24000 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_22050 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_16000 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_12000 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_11025 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_8000) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bFs = psDioInfo->asPortInfo[bPort].sDioCommon.bFs; + } + if(psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_64 + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_48 + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_32 + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_512 + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_256 + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_128 + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_16) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bBckFs = psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs; + } + if(psDioInfo->asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_DA + || psDioInfo->asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface = psDioInfo->asPortInfo[bPort].sDioCommon.bInterface; + } + if(psDioInfo->asPortInfo[bPort].sDioCommon.bBckInvert == MCDRV_BCLK_NORMAL + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckInvert == MCDRV_BCLK_INVERT) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bBckInvert = psDioInfo->asPortInfo[bPort].sDioCommon.bBckInvert; + } + if(psDioInfo->asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM) + { + if(psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHizTim == MCDRV_PCMHIZTIM_FALLING + || psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHizTim == MCDRV_PCMHIZTIM_RISING) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bPcmHizTim = psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHizTim; + } + if(psDioInfo->asPortInfo[bPort].sDioCommon.bPcmClkDown == MCDRV_PCM_CLKDOWN_OFF + || psDioInfo->asPortInfo[bPort].sDioCommon.bPcmClkDown == MCDRV_PCM_CLKDOWN_HALF) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bPcmClkDown = psDioInfo->asPortInfo[bPort].sDioCommon.bPcmClkDown; + } + if(psDioInfo->asPortInfo[bPort].sDioCommon.bPcmFrame == MCDRV_PCM_SHORTFRAME + || psDioInfo->asPortInfo[bPort].sDioCommon.bPcmFrame == MCDRV_PCM_LONGFRAME) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bPcmFrame = psDioInfo->asPortInfo[bPort].sDioCommon.bPcmFrame; + } + if(psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHighPeriod <= 31) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bPcmHighPeriod = psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHighPeriod; + } + } +} + +/**************************************************************************** + * SetDIODIR + * + * Description: + * Set digital io dir information. + * Arguments: + * psDioInfo digital io information + * bPort port number + * Return: + * none + * + ****************************************************************************/ +static void SetDIODIR +( + const MCDRV_DIO_INFO* psDioInfo, + UINT8 bPort +) +{ + UINT8 bDIOCh; + + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDir.wSrcRate = psDioInfo->asPortInfo[bPort].sDir.wSrcRate; + if(gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_DA) + { + if(psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bBitSel == MCDRV_BITSEL_16 + || psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bBitSel == MCDRV_BITSEL_20 + || psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bBitSel == MCDRV_BITSEL_24) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDir.sDaFormat.bBitSel = psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bBitSel; + } + if(psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bMode == MCDRV_DAMODE_HEADALIGN + || psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bMode == MCDRV_DAMODE_I2S + || psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bMode == MCDRV_DAMODE_TAILALIGN) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDir.sDaFormat.bMode = psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bMode; + } + } + else if(gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM) + { + if(psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bMono == MCDRV_PCM_STEREO + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bMono == MCDRV_PCM_MONO) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDir.sPcmFormat.bMono = psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bMono; + } + if(psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST_SIGN + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST_SIGN + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST_ZERO + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST_ZERO) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDir.sPcmFormat.bOrder = psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder; + } + if(psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_LINEAR + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_ALAW + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_MULAW) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDir.sPcmFormat.bLaw = psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw; + } + if(psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_8 + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_13 + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_14 + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_16) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDir.sPcmFormat.bBitSel = psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel; + } + } + for(bDIOCh = 0; bDIOCh < DIO_CHANNELS; bDIOCh++) + { + if(psDioInfo->asPortInfo[bPort].sDir.abSlot[bDIOCh] < 2) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDir.abSlot[bDIOCh] = psDioInfo->asPortInfo[bPort].sDir.abSlot[bDIOCh]; + } + } +} + +/**************************************************************************** + * SetDIODIT + * + * Description: + * Set digital io dit information. + * Arguments: + * psDioInfo digital io information + * bPort port number + * Return: + * none + * + ****************************************************************************/ +static void SetDIODIT +( + const MCDRV_DIO_INFO* psDioInfo, + UINT8 bPort +) +{ + UINT8 bDIOCh; + + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDit.wSrcRate = psDioInfo->asPortInfo[bPort].sDit.wSrcRate; + if(gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_DA) + { + if(psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bBitSel == MCDRV_BITSEL_16 + || psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bBitSel == MCDRV_BITSEL_20 + || psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bBitSel == MCDRV_BITSEL_24) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDit.sDaFormat.bBitSel = psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bBitSel; + } + if(psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bMode == MCDRV_DAMODE_HEADALIGN + || psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bMode == MCDRV_DAMODE_I2S + || psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bMode == MCDRV_DAMODE_TAILALIGN) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDit.sDaFormat.bMode = psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bMode; + } + } + else if(gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM) + { + if(psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bMono == MCDRV_PCM_STEREO + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bMono == MCDRV_PCM_MONO) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDit.sPcmFormat.bMono = psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bMono; + } + if(psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST_SIGN + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST_SIGN + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST_ZERO + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST_ZERO) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDit.sPcmFormat.bOrder = psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder; + } + if(psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_LINEAR + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_ALAW + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_MULAW) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDit.sPcmFormat.bLaw = psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw; + } + if(psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_8 + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_13 + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_14 + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_16) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDit.sPcmFormat.bBitSel = psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel; + } + } + for(bDIOCh = 0; bDIOCh < DIO_CHANNELS; bDIOCh++) + { + if(psDioInfo->asPortInfo[bPort].sDit.abSlot[bDIOCh] < 2) + { + gsGlobalInfo_AA.sDioInfo.asPortInfo[bPort].sDit.abSlot[bDIOCh] = psDioInfo->asPortInfo[bPort].sDit.abSlot[bDIOCh]; + } + } +} + +/**************************************************************************** + * McResCtrl_GetDioInfo_AA + * + * Description: + * Get digital io information. + * Arguments: + * psDioInfo digital io information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetDioInfo_AA +( + MCDRV_DIO_INFO* psDioInfo +) +{ + *psDioInfo = gsGlobalInfo_AA.sDioInfo; +} + +/**************************************************************************** + * McResCtrl_SetVolInfo_AA + * + * Description: + * Update volume. + * Arguments: + * psVolInfo volume setting + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetVolInfo_AA +( + const MCDRV_VOL_INFO* psVolInfo +) +{ + UINT8 bCh; + + + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswD_Ad0[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Ad0[bCh] = (psVolInfo->aswD_Ad0[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_Ad0Att[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Ad0Att[bCh] = (psVolInfo->aswD_Ad0Att[bCh] & 0xFFFE); + } + if((psVolInfo->aswA_Ad0[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Ad0[bCh] = (psVolInfo->aswA_Ad0[bCh] & 0xFFFE); + } + } + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswD_Ad1[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Ad1[bCh] = (psVolInfo->aswD_Ad1[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_Ad1Att[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Ad1Att[bCh] = (psVolInfo->aswD_Ad1Att[bCh] & 0xFFFE); + } + if((psVolInfo->aswA_Ad1[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Ad1[bCh] = (psVolInfo->aswA_Ad1[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < AENG6_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswD_Aeng6[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Aeng6[bCh] = (psVolInfo->aswD_Aeng6[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswD_Pdm[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Pdm[bCh] = (psVolInfo->aswD_Pdm[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_SideTone[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_SideTone[bCh] = (psVolInfo->aswD_SideTone[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < DTMF_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswD_Dtmfb[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dtmfb[bCh] = (psVolInfo->aswD_Dtmfb[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_DtmfAtt[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_DtmfAtt[bCh] = (psVolInfo->aswD_DtmfAtt[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswD_Dir0[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir0[bCh] = (psVolInfo->aswD_Dir0[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_Dir0Att[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir0Att[bCh] = (psVolInfo->aswD_Dir0Att[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_Dit0[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dit0[bCh] = (psVolInfo->aswD_Dit0[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswD_Dir1[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir1[bCh] = (psVolInfo->aswD_Dir1[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_Dir1Att[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir1Att[bCh] = (psVolInfo->aswD_Dir1Att[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_Dit1[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dit1[bCh] = (psVolInfo->aswD_Dit1[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswD_Dir2[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir2[bCh] = (psVolInfo->aswD_Dir2[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_Dir2Att[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dir2Att[bCh] = (psVolInfo->aswD_Dir2Att[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_Dit2[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_Dit2[bCh] = (psVolInfo->aswD_Dit2[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswD_DacMaster[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_DacMaster[bCh] = (psVolInfo->aswD_DacMaster[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_DacVoice[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_DacVoice[bCh] = (psVolInfo->aswD_DacVoice[bCh] & 0xFFFE); + } + if((psVolInfo->aswD_DacAtt[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswD_DacAtt[bCh] = (psVolInfo->aswD_DacAtt[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < LIN1_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Lin1[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Lin1[bCh] = (psVolInfo->aswA_Lin1[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < LIN2_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Lin2[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Lin2[bCh] = (psVolInfo->aswA_Lin2[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Mic1[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic1[bCh] = (psVolInfo->aswA_Mic1[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Mic2[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic2[bCh] = (psVolInfo->aswA_Mic2[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Mic3[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic3[bCh] = (psVolInfo->aswA_Mic3[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < HP_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Hp[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Hp[bCh] = (psVolInfo->aswA_Hp[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < SP_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Sp[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Sp[bCh] = (psVolInfo->aswA_Sp[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < RC_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Rc[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Rc[bCh] = (psVolInfo->aswA_Rc[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < LOUT1_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Lout1[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Lout1[bCh] = (psVolInfo->aswA_Lout1[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < LOUT2_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Lout2[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Lout2[bCh] = (psVolInfo->aswA_Lout2[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Mic1Gain[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic1Gain[bCh] = (psVolInfo->aswA_Mic1Gain[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Mic2Gain[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic2Gain[bCh] = (psVolInfo->aswA_Mic2Gain[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_Mic3Gain[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_Mic3Gain[bCh] = (psVolInfo->aswA_Mic3Gain[bCh] & 0xFFFE); + } + } + + for(bCh = 0; bCh < HPGAIN_VOL_CHANNELS; bCh++) + { + if((psVolInfo->aswA_HpGain[bCh] & 0x01) != 0) + { + gsGlobalInfo_AA.sVolInfo.aswA_HpGain[bCh] = (psVolInfo->aswA_HpGain[bCh] & 0xFFFE); + } + } +} + +/**************************************************************************** + * McResCtrl_GetVolInfo_AA + * + * Description: + * Get volume setting. + * Arguments: + * psVolInfo volume setting + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetVolInfo_AA +( + MCDRV_VOL_INFO* psVolInfo +) +{ + *psVolInfo = gsGlobalInfo_AA.sVolInfo; +} + +/**************************************************************************** + * McResCtrl_SetDacInfo_AA + * + * Description: + * Set DAC information. + * Arguments: + * psDacInfo DAC information + * dUpdateInfo update information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetDacInfo_AA +( + const MCDRV_DAC_INFO* psDacInfo, + UINT32 dUpdateInfo +) +{ + + if((dUpdateInfo & MCDRV_DAC_MSWP_UPDATE_FLAG) != 0) + { + switch(psDacInfo->bMasterSwap) + { + case MCDRV_DSWAP_OFF: + case MCDRV_DSWAP_SWAP: + case MCDRV_DSWAP_MUTE: + case MCDRV_DSWAP_RMVCENTER: + case MCDRV_DSWAP_MONO: + case MCDRV_DSWAP_MONOHALF: + case MCDRV_DSWAP_BOTHL: + case MCDRV_DSWAP_BOTHR: + gsGlobalInfo_AA.sDacInfo.bMasterSwap = psDacInfo->bMasterSwap; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_DAC_VSWP_UPDATE_FLAG) != 0) + { + switch(psDacInfo->bVoiceSwap) + { + case MCDRV_DSWAP_OFF: + case MCDRV_DSWAP_SWAP: + case MCDRV_DSWAP_MUTE: + case MCDRV_DSWAP_RMVCENTER: + case MCDRV_DSWAP_MONO: + case MCDRV_DSWAP_MONOHALF: + case MCDRV_DSWAP_BOTHL: + case MCDRV_DSWAP_BOTHR: + gsGlobalInfo_AA.sDacInfo.bVoiceSwap = psDacInfo->bVoiceSwap; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_DAC_HPF_UPDATE_FLAG) != 0) + { + if(psDacInfo->bDcCut == MCDRV_DCCUT_ON || psDacInfo->bDcCut == MCDRV_DCCUT_OFF) + { + gsGlobalInfo_AA.sDacInfo.bDcCut = psDacInfo->bDcCut; + } + } +} + +/**************************************************************************** + * McResCtrl_GetDacInfo_AA + * + * Description: + * Get DAC information. + * Arguments: + * psDacInfo DAC information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetDacInfo_AA +( + MCDRV_DAC_INFO* psDacInfo +) +{ + *psDacInfo = gsGlobalInfo_AA.sDacInfo; +} + +/**************************************************************************** + * McResCtrl_SetAdcInfo_AA + * + * Description: + * Set ADC information. + * Arguments: + * psAdcInfo ADC information + * dUpdateInfo update information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetAdcInfo_AA +( + const MCDRV_ADC_INFO* psAdcInfo, + UINT32 dUpdateInfo +) +{ + + if((dUpdateInfo & MCDRV_ADCADJ_UPDATE_FLAG) != 0) + { + switch(psAdcInfo->bAgcAdjust) + { + case MCDRV_AGCADJ_24: + case MCDRV_AGCADJ_18: + case MCDRV_AGCADJ_12: + case MCDRV_AGCADJ_0: + gsGlobalInfo_AA.sAdcInfo.bAgcAdjust = psAdcInfo->bAgcAdjust; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_ADCAGC_UPDATE_FLAG) != 0) + { + if(psAdcInfo->bAgcOn == MCDRV_AGC_OFF || psAdcInfo->bAgcOn == MCDRV_AGC_ON) + { + gsGlobalInfo_AA.sAdcInfo.bAgcOn = psAdcInfo->bAgcOn; + } + } + if((dUpdateInfo & MCDRV_ADCMONO_UPDATE_FLAG) != 0) + { + if(psAdcInfo->bMono == MCDRV_ADC_STEREO || psAdcInfo->bMono == MCDRV_ADC_MONO) + { + gsGlobalInfo_AA.sAdcInfo.bMono = psAdcInfo->bMono; + } + } +} + +/**************************************************************************** + * McResCtrl_GetAdcInfo_AA + * + * Description: + * Get ADC information. + * Arguments: + * psAdcInfo ADC information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetAdcInfo_AA +( + MCDRV_ADC_INFO* psAdcInfo +) +{ + *psAdcInfo = gsGlobalInfo_AA.sAdcInfo; +} + +/**************************************************************************** + * McResCtrl_SetSpInfo_AA + * + * Description: + * Set SP information. + * Arguments: + * psSpInfo SP information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetSpInfo_AA +( + const MCDRV_SP_INFO* psSpInfo +) +{ + + if(psSpInfo->bSwap == MCDRV_SPSWAP_OFF || psSpInfo->bSwap == MCDRV_SPSWAP_SWAP) + { + gsGlobalInfo_AA.sSpInfo.bSwap = psSpInfo->bSwap; + } +} + +/**************************************************************************** + * McResCtrl_GetSpInfo_AA + * + * Description: + * Get SP information. + * Arguments: + * psSpInfo SP information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetSpInfo_AA +( + MCDRV_SP_INFO* psSpInfo +) +{ + *psSpInfo = gsGlobalInfo_AA.sSpInfo; +} + +/**************************************************************************** + * McResCtrl_SetDngInfo_AA + * + * Description: + * Set Digital Noise Gate information. + * Arguments: + * psDngInfo DNG information + * dUpdateInfo update information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetDngInfo_AA +( + const MCDRV_DNG_INFO* psDngInfo, + UINT32 dUpdateInfo +) +{ + + if((dUpdateInfo & MCDRV_DNGSW_HP_UPDATE_FLAG) != 0) + { + if(psDngInfo->abOnOff[0] == MCDRV_DNG_OFF || psDngInfo->abOnOff[0] == MCDRV_DNG_ON) + { + gsGlobalInfo_AA.sDngInfo.abOnOff[0] = psDngInfo->abOnOff[0]; + } + } + if((dUpdateInfo & MCDRV_DNGTHRES_HP_UPDATE_FLAG) != 0) + { + if(psDngInfo->abThreshold[0] <= MCDRV_DNG_THRES_72) + { + gsGlobalInfo_AA.sDngInfo.abThreshold[0] = psDngInfo->abThreshold[0]; + } + } + if((dUpdateInfo & MCDRV_DNGHOLD_HP_UPDATE_FLAG) != 0) + { + switch(psDngInfo->abHold[0]) + { + case MCDRV_DNG_HOLD_30: + case MCDRV_DNG_HOLD_120: + case MCDRV_DNG_HOLD_500: + gsGlobalInfo_AA.sDngInfo.abHold[0] = psDngInfo->abHold[0]; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_DNGATK_HP_UPDATE_FLAG) != 0) + { + if(psDngInfo->abAttack[0] == MCDRV_DNG_ATTACK_25) + { + gsGlobalInfo_AA.sDngInfo.abAttack[0] = psDngInfo->abAttack[0]; + } + else if(psDngInfo->abAttack[0] == MCDRV_DNG_ATTACK_800) + { + gsGlobalInfo_AA.sDngInfo.abAttack[0] = 1/*MCDRV_DNG_ATTACK_800*/; + } + } + if((dUpdateInfo & MCDRV_DNGREL_HP_UPDATE_FLAG) != 0) + { + switch(psDngInfo->abRelease[0]) + { + case MCDRV_DNG_RELEASE_7950: + case MCDRV_DNG_RELEASE_470: + case MCDRV_DNG_RELEASE_940: + gsGlobalInfo_AA.sDngInfo.abRelease[0] = psDngInfo->abRelease[0]; + break; + default: + break; + } + } +} + +/**************************************************************************** + * McResCtrl_GetDngInfo_AA + * + * Description: + * Get Digital Noise Gate information. + * Arguments: + * psDngInfo DNG information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetDngInfo_AA +( + MCDRV_DNG_INFO* psDngInfo +) +{ + *psDngInfo = gsGlobalInfo_AA.sDngInfo; +} + +/**************************************************************************** + * McResCtrl_SetAeInfo_AA + * + * Description: + * Set Audio Engine information. + * Arguments: + * psAeInfo AE information + * dUpdateInfo update information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetAeInfo_AA +( + const MCDRV_AE_INFO* psAeInfo, + UINT32 dUpdateInfo +) +{ + + if(McDevProf_IsValid(eMCDRV_FUNC_DBEX) == 1 + && (dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEXWIDE_ONOFF) != 0) + { + if((psAeInfo->bOnOff & MCDRV_BEXWIDE_ON) != 0) + { + gsGlobalInfo_AA.sAeInfo.bOnOff |= MCDRV_BEXWIDE_ON; + } + else + { + gsGlobalInfo_AA.sAeInfo.bOnOff &= (UINT8)~MCDRV_BEXWIDE_ON; + } + } + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC_ONOFF) != 0) + { + if((psAeInfo->bOnOff & MCDRV_DRC_ON) != 0) + { + gsGlobalInfo_AA.sAeInfo.bOnOff |= MCDRV_DRC_ON; + } + else + { + gsGlobalInfo_AA.sAeInfo.bOnOff &= (UINT8)~MCDRV_DRC_ON; + } + } + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5_ONOFF) != 0) + { + if((psAeInfo->bOnOff & MCDRV_EQ5_ON) != 0) + { + gsGlobalInfo_AA.sAeInfo.bOnOff |= MCDRV_EQ5_ON; + } + else + { + gsGlobalInfo_AA.sAeInfo.bOnOff &= (UINT8)~MCDRV_EQ5_ON; + } + } + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3_ONOFF) != 0) + { + if((psAeInfo->bOnOff & MCDRV_EQ3_ON) != 0) + { + gsGlobalInfo_AA.sAeInfo.bOnOff |= MCDRV_EQ3_ON; + } + else + { + gsGlobalInfo_AA.sAeInfo.bOnOff &= (UINT8)~MCDRV_EQ3_ON; + } + } + + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEX) != 0) + { + McSrv_MemCopy(psAeInfo->abBex, gsGlobalInfo_AA.sAeInfo.abBex, BEX_PARAM_SIZE); + } + + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_WIDE) != 0) + { + McSrv_MemCopy(psAeInfo->abWide, gsGlobalInfo_AA.sAeInfo.abWide, WIDE_PARAM_SIZE); + } + + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC) != 0) + { + McSrv_MemCopy(psAeInfo->abDrc, gsGlobalInfo_AA.sAeInfo.abDrc, DRC_PARAM_SIZE); + } + + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5) != 0) + { + McSrv_MemCopy(psAeInfo->abEq5, gsGlobalInfo_AA.sAeInfo.abEq5, EQ5_PARAM_SIZE); + } + + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3) != 0) + { + McSrv_MemCopy(psAeInfo->abEq3, gsGlobalInfo_AA.sAeInfo.abEq3, EQ3_PARAM_SIZE); + } + + if(McDevProf_IsValid(eMCDRV_FUNC_HWADJ) == 1) + { + gsGlobalInfo_AA.sAeInfo.bOnOff |= MCDRV_EQ3_ON; + } +} + +/**************************************************************************** + * McResCtrl_GetAeInfo_AA + * + * Description: + * Get Audio Engine information. + * Arguments: + * psAeInfo AE information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetAeInfo_AA +( + MCDRV_AE_INFO* psAeInfo +) +{ + *psAeInfo = gsGlobalInfo_AA.sAeInfo; +} + +/**************************************************************************** + * McResCtrl_SetPdmInfo_AA + * + * Description: + * Set PDM information. + * Arguments: + * psPdmInfo PDM information + * dUpdateInfo update information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetPdmInfo_AA +( + const MCDRV_PDM_INFO* psPdmInfo, + UINT32 dUpdateInfo +) +{ + + if((dUpdateInfo & MCDRV_PDMCLK_UPDATE_FLAG) != 0) + { + switch(psPdmInfo->bClk) + { + case MCDRV_PDM_CLK_128: + case MCDRV_PDM_CLK_64: + case MCDRV_PDM_CLK_32: + gsGlobalInfo_AA.sPdmInfo.bClk = psPdmInfo->bClk; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_PDMADJ_UPDATE_FLAG) != 0) + { + switch(psPdmInfo->bAgcAdjust) + { + case MCDRV_AGCADJ_24: + case MCDRV_AGCADJ_18: + case MCDRV_AGCADJ_12: + case MCDRV_AGCADJ_0: + gsGlobalInfo_AA.sPdmInfo.bAgcAdjust = psPdmInfo->bAgcAdjust; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_PDMAGC_UPDATE_FLAG) != 0) + { + switch(psPdmInfo->bAgcOn) + { + case MCDRV_AGC_OFF: + case MCDRV_AGC_ON: + gsGlobalInfo_AA.sPdmInfo.bAgcOn = psPdmInfo->bAgcOn; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_PDMEDGE_UPDATE_FLAG) != 0) + { + switch(psPdmInfo->bPdmEdge) + { + case MCDRV_PDMEDGE_LH: + case MCDRV_PDMEDGE_HL: + gsGlobalInfo_AA.sPdmInfo.bPdmEdge = psPdmInfo->bPdmEdge; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_PDMWAIT_UPDATE_FLAG) != 0) + { + switch(psPdmInfo->bPdmWait) + { + case MCDRV_PDMWAIT_0: + case MCDRV_PDMWAIT_1: + case MCDRV_PDMWAIT_10: + case MCDRV_PDMWAIT_20: + gsGlobalInfo_AA.sPdmInfo.bPdmWait = psPdmInfo->bPdmWait; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_PDMSEL_UPDATE_FLAG) != 0) + { + switch(psPdmInfo->bPdmSel) + { + case MCDRV_PDMSEL_L1R2: + case MCDRV_PDMSEL_L2R1: + case MCDRV_PDMSEL_L1R1: + case MCDRV_PDMSEL_L2R2: + gsGlobalInfo_AA.sPdmInfo.bPdmSel = psPdmInfo->bPdmSel; + break; + default: + break; + } + } + if((dUpdateInfo & MCDRV_PDMMONO_UPDATE_FLAG) != 0) + { + switch(psPdmInfo->bMono) + { + case MCDRV_PDM_STEREO: + case MCDRV_PDM_MONO: + gsGlobalInfo_AA.sPdmInfo.bMono = psPdmInfo->bMono; + break; + default: + break; + } + } +} + +/**************************************************************************** + * McResCtrl_GetPdmInfo_AA + * + * Description: + * Get PDM information. + * Arguments: + * psPdmInfo PDM information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetPdmInfo_AA +( + MCDRV_PDM_INFO* psPdmInfo +) +{ + *psPdmInfo = gsGlobalInfo_AA.sPdmInfo; +} + +/**************************************************************************** + * McResCtrl_SetGPMode_AA + * + * Description: + * Set GP mode. + * Arguments: + * psGpMode GP mode + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetGPMode_AA +( + const MCDRV_GP_MODE* psGpMode +) +{ + UINT8 bPad; + + + for(bPad = 0; bPad < GPIO_PAD_NUM; bPad++) + { + if(psGpMode->abGpDdr[bPad] == MCDRV_GPDDR_IN + || psGpMode->abGpDdr[bPad] == MCDRV_GPDDR_OUT) + { + gsGlobalInfo_AA.sGpMode.abGpDdr[bPad] = psGpMode->abGpDdr[bPad]; + } + if(McDevProf_IsValid(eMCDRV_FUNC_GPMODE) == 1) + { + if(psGpMode->abGpMode[bPad] == MCDRV_GPMODE_RISING + || psGpMode->abGpMode[bPad] == MCDRV_GPMODE_FALLING + || psGpMode->abGpMode[bPad] == MCDRV_GPMODE_BOTH) + { + gsGlobalInfo_AA.sGpMode.abGpMode[bPad] = psGpMode->abGpMode[bPad]; + } + if(psGpMode->abGpHost[bPad] == MCDRV_GPHOST_SCU + || psGpMode->abGpHost[bPad] == MCDRV_GPHOST_CDSP) + { + gsGlobalInfo_AA.sGpMode.abGpHost[bPad] = psGpMode->abGpHost[bPad]; + } + if(psGpMode->abGpInvert[bPad] == MCDRV_GPINV_NORMAL + || psGpMode->abGpInvert[bPad] == MCDRV_GPINV_INVERT) + { + gsGlobalInfo_AA.sGpMode.abGpInvert[bPad] = psGpMode->abGpInvert[bPad]; + } + } + } +} + +/**************************************************************************** + * McResCtrl_GetGPMode_AA + * + * Description: + * Get GP mode. + * Arguments: + * psGpMode GP mode + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetGPMode_AA +( + MCDRV_GP_MODE* psGpMode +) +{ + *psGpMode = gsGlobalInfo_AA.sGpMode; +} + +/**************************************************************************** + * McResCtrl_SetGPMask_AA + * + * Description: + * Set GP mask. + * Arguments: + * bMask GP mask + * dPadNo PAD Number + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_SetGPMask_AA +( + UINT8 bMask, + UINT32 dPadNo +) +{ + if(dPadNo == MCDRV_GP_PAD0) + { + if(gsGlobalInfo_AA.sInitInfo.bPad0Func == MCDRV_PAD_GPIO + && gsGlobalInfo_AA.sGpMode.abGpDdr[dPadNo] == MCDRV_GPDDR_IN) + { + if(bMask == MCDRV_GPMASK_ON || bMask == MCDRV_GPMASK_OFF) + { + gsGlobalInfo_AA.abGpMask[dPadNo] = bMask; + } + } + } + else if(dPadNo == MCDRV_GP_PAD1) + { + if(gsGlobalInfo_AA.sInitInfo.bPad1Func == MCDRV_PAD_GPIO + && gsGlobalInfo_AA.sGpMode.abGpDdr[dPadNo] == MCDRV_GPDDR_IN) + { + if(bMask == MCDRV_GPMASK_ON || bMask == MCDRV_GPMASK_OFF) + { + gsGlobalInfo_AA.abGpMask[dPadNo] = bMask; + } + } + } +/* + else if(dPadNo == MCDRV_GP_PAD2) + { + if(gsGlobalInfo_AA.sInitInfo.bPad2Func == MCDRV_PAD_GPIO + && gsGlobalInfo_AA.sGpMode.abGpDdr[dPadNo] == MCDRV_GPDDR_IN) + { + if(bMask == MCDRV_GPMASK_ON || bMask == MCDRV_GPMASK_OFF) + { + gsGlobalInfo_AA.abGpMask[dPadNo] = bMask; + } + } + } +*/ +} + +/**************************************************************************** + * McResCtrl_GetGPMask_AA + * + * Description: + * Get GP mask. + * Arguments: + * pabMask GP mask + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetGPMask_AA +( + UINT8* pabMask +) +{ + UINT8 bPadNo; + for(bPadNo = 0; bPadNo < GPIO_PAD_NUM; bPadNo++) + { + pabMask[bPadNo] = gsGlobalInfo_AA.abGpMask[bPadNo]; + } +} + + +/**************************************************************************** + * McResCtrl_GetVolReg_AA + * + * Description: + * Get value of volume registers. + * Arguments: + * psVolInfo volume information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetVolReg_AA +( + MCDRV_VOL_INFO* psVolInfo +) +{ + UINT8 bCh; + MCDRV_DST_CH abDSTCh[] = {eMCDRV_DST_CH0_AA, eMCDRV_DST_CH1_AA}; + SINT16 swGainUp; + + + *psVolInfo = gsGlobalInfo_AA.sVolInfo; + + if(gsGlobalInfo_AA.sInitInfo.bDclGain == MCDRV_DCLGAIN_6) + { + swGainUp = 6 * 256; + } + else if(gsGlobalInfo_AA.sInitInfo.bDclGain == MCDRV_DCLGAIN_12) + { + swGainUp = 12 * 256; + } + else if(gsGlobalInfo_AA.sInitInfo.bDclGain == MCDRV_DCLGAIN_18) + { + swGainUp = 18 * 256; + } + else + { + swGainUp = 0; + } + + psVolInfo->aswA_HpGain[0] = MCDRV_REG_MUTE; + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_HP_AA, eMCDRV_DST_CH0_AA) == 0) + { + psVolInfo->aswA_Hp[0] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Hp[0] = GetHpVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Hp[0]); + psVolInfo->aswA_HpGain[0] = GetHpGainReg(gsGlobalInfo_AA.sVolInfo.aswA_HpGain[0]); + } + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_HP_AA, eMCDRV_DST_CH1_AA) == 0) + { + psVolInfo->aswA_Hp[1] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Hp[1] = GetHpVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Hp[1]); + psVolInfo->aswA_HpGain[0] = GetHpGainReg(gsGlobalInfo_AA.sVolInfo.aswA_HpGain[0]); + } + + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_SP_AA, eMCDRV_DST_CH0_AA) == 0) + { + psVolInfo->aswA_Sp[0] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Sp[0] = GetSpVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Sp[0]); + } + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_SP_AA, eMCDRV_DST_CH1_AA) == 0) + { + psVolInfo->aswA_Sp[1] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Sp[1] = GetSpVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Sp[1]); + } + + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_RCV_AA, eMCDRV_DST_CH0_AA) == 0) + { + psVolInfo->aswA_Rc[0] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Rc[0] = GetRcVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Rc[0]); + } + + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_LOUT1_AA, eMCDRV_DST_CH0_AA) == 0) + { + psVolInfo->aswA_Lout1[0] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Lout1[0] = GetLoVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Lout1[0]); + } + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_LOUT1_AA, eMCDRV_DST_CH1_AA) == 0) + { + psVolInfo->aswA_Lout1[1] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Lout1[1] = GetLoVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Lout1[1]); + } + + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_LOUT2_AA, eMCDRV_DST_CH0_AA) == 0) + { + psVolInfo->aswA_Lout2[0] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Lout2[0] = GetLoVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Lout2[0]); + } + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_LOUT2_AA, eMCDRV_DST_CH1_AA) == 0) + { + psVolInfo->aswA_Lout2[1] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Lout2[1] = GetLoVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Lout2[1]); + } + + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC0_AA, abDSTCh[bCh]) == 0) + {/* ADC0 source all off */ + psVolInfo->aswA_Ad0[bCh] = MCDRV_REG_MUTE; + psVolInfo->aswD_Ad0[bCh] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Ad0[bCh] = GetADVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Ad0[bCh]); + psVolInfo->aswD_Ad0[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Ad0[bCh] - swGainUp); + } + } + if((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || ((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON + && (McResCtrl_GetAESource_AA() == eMCDRV_SRC_PDM_AA || McResCtrl_GetAESource_AA() == eMCDRV_SRC_ADC0_AA))) + { + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Ad0Att[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Ad0Att[bCh]); + } + } + else + { + for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Ad0Att[bCh] = MCDRV_REG_MUTE; + } + } + + if(McDevProf_IsValid(eMCDRV_FUNC_ADC1) == 1) + { + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC1_AA, eMCDRV_DST_CH0_AA) == 0) + {/* ADC1 source all off */ + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswA_Ad1[bCh] = MCDRV_REG_MUTE; + psVolInfo->aswD_Ad1[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswA_Ad1[bCh] = GetADVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Ad1[bCh]); + psVolInfo->aswD_Ad1[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Ad1[bCh] - swGainUp); + } + } + if((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC1_BLOCK] & MCDRV_SRC4_ADC1_ON) == MCDRV_SRC4_ADC1_ON) + { + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Ad1Att[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Ad1Att[bCh]); + } + } + else + { + for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Ad1Att[bCh] = MCDRV_REG_MUTE; + } + } + } + + if(((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON) + || ((gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON) + || ((gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON) + || ((gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON) + || ((gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON) + || ((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + || ((gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + || ((gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + || ((gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + || ((gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + || ((gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + || ((gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)) + { + psVolInfo->aswA_Lin1[0] = GetLIVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Lin1[0]); + } + else + { + psVolInfo->aswA_Lin1[0] = MCDRV_REG_MUTE; + } + + if(((gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON) + || ((gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON) + || ((gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON) + || ((gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)) + { + psVolInfo->aswA_Lin1[1] = GetLIVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Lin1[1]); + } + else + { + psVolInfo->aswA_Lin1[1] = MCDRV_REG_MUTE; + } + + if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1) + { + psVolInfo->aswA_Lin2[0] = MCDRV_REG_MUTE; + psVolInfo->aswA_Lin2[1] = MCDRV_REG_MUTE; + } + + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_MIC1_AA) == 0) + {/* MIC1 is unused */ + for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswA_Mic1[bCh] = MCDRV_REG_MUTE; + psVolInfo->aswA_Mic1Gain[bCh] = (SINT16)(McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_MC_GAIN) & MCB_AA_MC1GAIN); + } + } + else + { + for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++) + { + if(((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON) + && ((gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON) + && ((gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON)) + { + psVolInfo->aswA_Mic1[bCh] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Mic1[bCh] = GetMcVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Mic1[bCh]); + } + psVolInfo->aswA_Mic1Gain[bCh] = GetMcGainReg(gsGlobalInfo_AA.sVolInfo.aswA_Mic1Gain[bCh]); + } + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_MIC2_AA) == 0) + {/* MIC2 is unused */ + for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++) + { + psVolInfo->aswA_Mic2[bCh] = MCDRV_REG_MUTE; + psVolInfo->aswA_Mic2Gain[bCh] = (SINT16)((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_MC_GAIN) & MCB_AA_MC2GAIN) >> 4); + } + } + else + { + for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++) + { + if(((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON) + && ((gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON) + && ((gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON)) + { + psVolInfo->aswA_Mic2[bCh] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Mic2[bCh] = GetMcVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Mic2[bCh]); + } + psVolInfo->aswA_Mic2Gain[bCh] = GetMcGainReg(gsGlobalInfo_AA.sVolInfo.aswA_Mic2Gain[bCh]); + } + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_MIC3_AA) == 0) + {/* MIC3 is unused */ + for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++) + { + psVolInfo->aswA_Mic3[bCh] = MCDRV_REG_MUTE; + psVolInfo->aswA_Mic3Gain[bCh] = (SINT16)(McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_MC3_GAIN) & MCB_AA_MC3GAIN); + } + } + else + { + for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++) + { + if(((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON) + && ((gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON) + && ((gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON) + && ((gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON)) + { + psVolInfo->aswA_Mic3[bCh] = MCDRV_REG_MUTE; + } + else + { + psVolInfo->aswA_Mic3[bCh] = GetMcVolReg(gsGlobalInfo_AA.sVolInfo.aswA_Mic3[bCh]); + } + psVolInfo->aswA_Mic3Gain[bCh] = GetMcGainReg(gsGlobalInfo_AA.sVolInfo.aswA_Mic3Gain[bCh]); + } + } + + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR0_AA) == 0) + {/* DIR0 is unused */ + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir0[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir0[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dir0[bCh] - swGainUp); + } + } + if((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON + || ((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON + && McResCtrl_GetAESource_AA() == eMCDRV_SRC_DIR0_AA)) + { + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir0Att[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dir0Att[bCh]); + } + } + else + { + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir0Att[bCh] = MCDRV_REG_MUTE; + } + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR1_AA) == 0) + {/* DIR1 is unused */ + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir1[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir1[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dir1[bCh] - swGainUp); + } + } + if((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON + || ((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON + && McResCtrl_GetAESource_AA() == eMCDRV_SRC_DIR1_AA)) + { + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir1Att[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dir1Att[bCh]); + } + } + else + { + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir1Att[bCh] = MCDRV_REG_MUTE; + } + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR2_AA) == 0) + {/* DIR2 is unused */ + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir2[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir2[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dir2[bCh] - swGainUp); + } + } + if((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON + || ((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON + && McResCtrl_GetAESource_AA() == eMCDRV_SRC_DIR2_AA)) + { + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir2Att[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dir2Att[bCh]); + } + } + else + { + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dir2Att[bCh] = MCDRV_REG_MUTE; + } + } + + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_0_AA) == eMCDRV_SRC_NONE_AA) + {/* DIT0 source all off */ + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dit0[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dit0[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dit0[bCh] + swGainUp); + } + } + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_1_AA) == eMCDRV_SRC_NONE_AA) + {/* DIT1 source all off */ + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dit1[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dit1[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dit1[bCh] + swGainUp); + } + } + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_2_AA) == eMCDRV_SRC_NONE_AA) + {/* DIT2 source all off */ + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dit2[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dit2[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dit2[bCh] + swGainUp); + } + } + + if(McResCtrl_GetDACSource_AA(eMCDRV_DAC_MASTER_AA) == eMCDRV_SRC_NONE_AA + && McResCtrl_GetDACSource_AA(eMCDRV_DAC_VOICE_AA) == eMCDRV_SRC_NONE_AA) + { + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_DacAtt[bCh] = MCDRV_REG_MUTE; + psVolInfo->aswD_DacMaster[bCh] = MCDRV_REG_MUTE; + psVolInfo->aswD_DacVoice[bCh] = MCDRV_REG_MUTE; + } + } + else + { + if(McResCtrl_GetDACSource_AA(eMCDRV_DAC_MASTER_AA) == eMCDRV_SRC_NONE_AA) + { + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_DacMaster[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_DacMaster[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_DacMaster[bCh]); + } + } + if(McResCtrl_GetDACSource_AA(eMCDRV_DAC_VOICE_AA) == eMCDRV_SRC_NONE_AA) + { + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_DacVoice[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_DacVoice[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_DacVoice[bCh]); + } + } + for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_DacAtt[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_DacAtt[bCh]); + } + } + + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_PDM_AA) == 0 + && McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_ADC0_AA) == 0) + {/* PDM&ADC0 is unused */ + for(bCh = 0; bCh < AENG6_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Aeng6[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < AENG6_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Aeng6[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Aeng6[bCh]); + } + } + + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_PDM_AA) == 0) + {/* PDM is unused */ + for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Pdm[bCh] = MCDRV_REG_MUTE; + psVolInfo->aswD_SideTone[bCh] = MCDRV_REG_MUTE; + } + } + else + { + for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Pdm[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Pdm[bCh] - swGainUp); + psVolInfo->aswD_SideTone[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_SideTone[bCh] - swGainUp); + } + } + + if(McDevProf_IsValid(eMCDRV_FUNC_DTMF) == 1) + { + /* DTMF */ + for(bCh = 0; bCh < DTMF_VOL_CHANNELS; bCh++) + { + psVolInfo->aswD_Dtmfb[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_Dtmfb[bCh] - swGainUp); + psVolInfo->aswD_DtmfAtt[bCh] = GetDigitalVolReg(gsGlobalInfo_AA.sVolInfo.aswD_DtmfAtt[bCh] - swGainUp); + } + } +} + +/**************************************************************************** + * GetDigitalVolReg + * + * Description: + * Get value of digital volume registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetDigitalVolReg +( + SINT16 swVol +) +{ + SINT16 swRet; + + if(swVol < (-74*256)) + { + swRet = 0; + } + else if(swVol < 0) + { + swRet = 96 + (swVol-128)/256; + } + else + { + swRet = 96 + (swVol+128)/256; + } + + if(swRet < 22) + { + swRet = 0; + } + + if(swRet > 114) + { + swRet = 114; + } + + return swRet; +} + +/**************************************************************************** + * GetADVolReg + * + * Description: + * Get update value of analog AD volume registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetADVolReg +( + SINT16 swVol +) +{ + SINT16 swRet; + + if(swVol < (-27*256)) + { + swRet = 0; + } + else if(swVol < 0) + { + swRet = 19 + (swVol-192) * 2 / (256*3); + } + else + { + swRet = 19 + (swVol+192) * 2 / (256*3); + } + + if(swRet < 0) + { + swRet = 0; + } + + if(swRet > 31) + { + swRet = 31; + } + + return swRet; +} + +/**************************************************************************** + * GetLIVolReg + * + * Description: + * Get update value of analog LIN volume registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetLIVolReg +( + SINT16 swVol +) +{ + SINT16 swRet; + + if(swVol < (-30*256)) + { + swRet = 0; + } + else if(swVol < 0) + { + swRet = 21 + (swVol-192) * 2 / (256*3); + } + else + { + swRet = 21 + (swVol+192) * 2 / (256*3); + } + + if(swRet < 0) + { + swRet = 0; + } + if(swRet > 31) + { + swRet = 31; + } + return swRet; +} + +/**************************************************************************** + * GetMcVolReg + * + * Description: + * Get update value of analog Mic volume registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetMcVolReg +( + SINT16 swVol +) +{ + SINT16 swRet; + + if(swVol < (-30*256)) + { + swRet = 0; + } + else if(swVol < 0) + { + swRet = 21 + (swVol-192) * 2 / (256*3); + } + else + { + swRet = 21 + (swVol+192) * 2 / (256*3); + } + + if(swRet < 0) + { + swRet = 0; + } + if(swRet > 31) + { + swRet = 31; + } + return swRet; +} + +/**************************************************************************** + * GetMcGainReg + * + * Description: + * Get update value of analog Mic gain registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetMcGainReg +( + SINT16 swVol +) +{ + SINT16 swGain = (swVol+128)/256; + + if(swGain < 18) + { + return 0; + } + if(swGain < 23) + { + return 1; + } + if(swGain < 28) + { + return 2; + } + + return 3; +} + +/**************************************************************************** + * GetHpVolReg + * + * Description: + * Get update value of analog Hp volume registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetHpVolReg +( + SINT16 swVol +) +{ + SINT16 swDB = swVol/256; + + if(swVol >= 0) + { + return 31; + } + + if(swDB <= -8) + { + if(swVol < (-36*256)) + { + return 0; + } + if(swDB <= -32) + { + return 1; + } + if(swDB <= -26) + { + return 2; + } + if(swDB <= -23) + { + return 3; + } + if(swDB <= -21) + { + return 4; + } + if(swDB <= -19) + { + return 5; + } + if(swDB <= -17) + { + return 6; + } + return 23+(swVol-128)/256; + } + + return 31 + (swVol-64)*2/256; +} + +/**************************************************************************** + * GetHpGainReg + * + * Description: + * Get update value of analog Hp gain registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetHpGainReg +( + SINT16 swVol +) +{ + SINT16 swDB = swVol/(256/4); + + if(swDB < 3) + { + return 0; + } + if(swDB < 9) + { + return 1; + } + if(swDB < 18) + { + return 2; + } + + return 3; +} + +/**************************************************************************** + * GetSpVolReg + * + * Description: + * Get update value of analog Sp volume registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetSpVolReg +( + SINT16 swVol +) +{ + SINT16 swDB = swVol/256; + + if(swVol >= 0) + { + return 31; + } + + if(swDB <= -8) + { + if(swVol < (-36*256)) + { + return 0; + } + if(swDB <= -32) + { + return 1; + } + if(swDB <= -26) + { + return 2; + } + if(swDB <= -23) + { + return 3; + } + if(swDB <= -21) + { + return 4; + } + if(swDB <= -19) + { + return 5; + } + if(swDB <= -17) + { + return 6; + } + return 23+(swVol-128)/256; + } + + return 31 + (swVol-64)*2/256; +} + +/**************************************************************************** + * GetRcVolReg + * + * Description: + * Get update value of analog Rcv volume registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetRcVolReg +( + SINT16 swVol +) +{ + SINT16 swRet = 31 + (swVol-128)/256; + if(swVol < (-30*256)) + { + swRet = 0; + } + if(swRet < 0) + { + swRet = 0; + } + if(swRet > 31) + { + swRet = 31; + } + return swRet; +} + +/**************************************************************************** + * GetLoVolReg + * + * Description: + * Get update value of analog Lout volume registers. + * Arguments: + * swVol volume(dB value*256) + * Return: + * value of registers + * + ****************************************************************************/ +static SINT16 GetLoVolReg +( + SINT16 swVol +) +{ + SINT16 swRet = 31 + (swVol-128)/256; + if(swVol < (-30*256)) + { + swRet = 0; + } + if(swRet < 0) + { + swRet = 0; + } + if(swRet > 31) + { + swRet = 31; + } + return swRet; +} + +/**************************************************************************** + * McResCtrl_GetPowerInfo_AA + * + * Description: + * Get power information. + * Arguments: + * psPowerInfo power information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetPowerInfo_AA +( + MCDRV_POWER_INFO_AA* psPowerInfo +) +{ + UINT8 i; + UINT8 bAnalogOn = 0; + UINT8 bPowerMode = gsGlobalInfo_AA.sInitInfo.bPowerMode; + + /* Digital power */ + psPowerInfo->dDigital = 0; + if((bPowerMode & MCDRV_POWMODE_CLKON) == 0) + { + psPowerInfo->dDigital |= (MCDRV_POWINFO_DIGITAL_DP0_AA | MCDRV_POWINFO_DIGITAL_DP1_AA | MCDRV_POWINFO_DIGITAL_DP2_AA | MCDRV_POWINFO_DIGITAL_PLLRST0_AA); + } + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_0_AA) != eMCDRV_SRC_NONE_AA + || McResCtrl_GetDITSource_AA(eMCDRV_DIO_1_AA) != eMCDRV_SRC_NONE_AA + || McResCtrl_GetDITSource_AA(eMCDRV_DIO_2_AA) != eMCDRV_SRC_NONE_AA + || McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DAC_L_AA) != 0 + || McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DAC_M_AA) != 0 + || McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DAC_R_AA) != 0 + || McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_ADC0_AA) != 0 + || McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_AE_AA) != 0 + || McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_MIX_AA) != 0) + { + /* DP0-2, PLLRST0 on */ + psPowerInfo->dDigital &= ~(MCDRV_POWINFO_DIGITAL_DP0_AA | MCDRV_POWINFO_DIGITAL_DP1_AA | MCDRV_POWINFO_DIGITAL_DP2_AA | MCDRV_POWINFO_DIGITAL_PLLRST0_AA); + } + else + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPB_AA; + } + + /* DPBDSP */ + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_AE_AA) == 0 + || (gsGlobalInfo_AA.sAeInfo.bOnOff&(MCDRV_BEXWIDE_ON|MCDRV_DRC_ON)) == 0) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPBDSP_AA; + } + + /* DPADIF */ + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_ADC0_AA) == 0) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPADIF_AA; + } + + /* DPPDM */ + if(gsGlobalInfo_AA.sInitInfo.bPad0Func != MCDRV_PAD_PDMCK || McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_PDM_AA) == 0) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPPDM_AA; + } + + /* DPDI* */ + if(gsGlobalInfo_AA.sDioInfo.asPortInfo[0].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE + || (McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR0_AA) == 0 && McResCtrl_GetDITSource_AA(eMCDRV_DIO_0_AA) == eMCDRV_SRC_NONE_AA)) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI0_AA; + } + if(gsGlobalInfo_AA.sDioInfo.asPortInfo[1].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE + || (McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR1_AA) == 0 && McResCtrl_GetDITSource_AA(eMCDRV_DIO_1_AA) == eMCDRV_SRC_NONE_AA)) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI1_AA; + } + if(gsGlobalInfo_AA.sDioInfo.asPortInfo[2].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE + || (McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR2_AA) == 0 && McResCtrl_GetDITSource_AA(eMCDRV_DIO_2_AA) == eMCDRV_SRC_NONE_AA)) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI2_AA; + } + + /* Analog power */ + for(i = 0; i < 5; i++) + { + psPowerInfo->abAnalog[i] = 0; + } + + /* SPL* */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_SP_AA, eMCDRV_DST_CH0_AA) == 0) + { + psPowerInfo->abAnalog[1] |= MCB_AA_PWM_SPL1; + psPowerInfo->abAnalog[1] |= MCB_AA_PWM_SPL2; + } + else + { + bAnalogOn = 1; + } + /* SPR* */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_SP_AA, eMCDRV_DST_CH1_AA) == 0) + { + psPowerInfo->abAnalog[1] |= MCB_AA_PWM_SPR1; + psPowerInfo->abAnalog[1] |= MCB_AA_PWM_SPR2; + } + else + { + bAnalogOn = 1; + } + + /* HPL */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_HP_AA, eMCDRV_DST_CH0_AA) == 0) + { + psPowerInfo->abAnalog[1] |= MCB_AA_PWM_HPL; + } + else + { + bAnalogOn = 1; + } + /* HPR */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_HP_AA, eMCDRV_DST_CH1_AA) == 0) + { + psPowerInfo->abAnalog[1] |= MCB_AA_PWM_HPR; + } + else + { + bAnalogOn = 1; + } + /* CP */ + if((psPowerInfo->abAnalog[1] & MCB_AA_PWM_HPL) != 0 && (psPowerInfo->abAnalog[1] & MCB_AA_PWM_HPR) != 0) + { + psPowerInfo->abAnalog[0] |= MCB_AA_PWM_CP; + } + + /* LOUT1L */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_LOUT1_AA, eMCDRV_DST_CH0_AA) == 0) + { + psPowerInfo->abAnalog[2] |= MCB_AA_PWM_LO1L; + } + else + { + bAnalogOn = 1; + } + /* LOUT1R */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_LOUT1_AA, eMCDRV_DST_CH1_AA) == 0) + { + psPowerInfo->abAnalog[2] |= MCB_AA_PWM_LO1R; + } + else + { + bAnalogOn = 1; + } + /* LOUT2L */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_LOUT2_AA, eMCDRV_DST_CH0_AA) == 0) + { + psPowerInfo->abAnalog[2] |= MCB_AA_PWM_LO2L; + } + else + { + bAnalogOn = 1; + } + /* LOUT2R */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_LOUT2_AA, eMCDRV_DST_CH1_AA) == 0) + { + psPowerInfo->abAnalog[2] |= MCB_AA_PWM_LO2R; + } + else + { + bAnalogOn = 1; + } + /* RCV */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_RCV_AA, eMCDRV_DST_CH0_AA) == 0) + { + psPowerInfo->abAnalog[2] |= MCB_AA_PWM_RC1; + psPowerInfo->abAnalog[2] |= MCB_AA_PWM_RC2; + } + else + { + bAnalogOn = 1; + } + /* DA */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_DAC_AA, eMCDRV_DST_CH0_AA) == 0 + && McResCtrl_IsDstUsed_AA(eMCDRV_DST_DAC_AA, eMCDRV_DST_CH1_AA) == 0) + { + psPowerInfo->abAnalog[3] |= MCB_AA_PWM_DA; + } + else + { + bAnalogOn = 1; + } + /* ADC0L */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC0_AA, eMCDRV_DST_CH0_AA) == 1) + { + bAnalogOn = 1; + } + else + { + if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1 + && ((gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)) + { + bAnalogOn = 1; + } + else + { + psPowerInfo->abAnalog[1] |= MCB_AA_PWM_ADL; + } + } + /* ADC0R */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC0_AA, eMCDRV_DST_CH1_AA) == 1) + { + bAnalogOn = 1; + } + else + { + if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1 + && ((gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)) + { + bAnalogOn = 1; + } + else + { + psPowerInfo->abAnalog[1] |= MCB_AA_PWM_ADR; + } + } + if(McDevProf_IsValid(eMCDRV_FUNC_ADC1) == 1) + { + } + /* LI */ + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_LINE1_L_AA) == 0 + && McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_LINE1_M_AA) == 0 + && McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_LINE1_R_AA) == 0) + { + psPowerInfo->abAnalog[4] |= MCB_AA_PWM_LI; + } + else + { + bAnalogOn = 1; + } + if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1) + { + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_LINE2_L_AA) == 0 + && McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_LINE2_M_AA) == 0 + && McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_LINE2_R_AA) == 0) + { + /*psPowerInfo->abAnalog[4] |= MCB_AA_PWM_LI2;*/ + } + else + { + bAnalogOn = 1; + } + } + /* MC1 */ + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_MIC1_AA) == 0) + { + psPowerInfo->abAnalog[4] |= MCB_AA_PWM_MC1; + } + else + { + bAnalogOn = 1; + } + /* MC2 */ + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_MIC2_AA) == 0) + { + psPowerInfo->abAnalog[4] |= MCB_AA_PWM_MC2; + } + else + { + bAnalogOn = 1; + } + /* MC3 */ + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_MIC3_AA) == 0) + { + psPowerInfo->abAnalog[4] |= MCB_AA_PWM_MC3; + } + else + { + bAnalogOn = 1; + } + if((gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON) + { + psPowerInfo->abAnalog[3] |= MCB_AA_PWM_MB1; + } + else + { + bAnalogOn = 1; + } + if((gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON) + { + psPowerInfo->abAnalog[3] |= MCB_AA_PWM_MB2; + } + else + { + bAnalogOn = 1; + } + if((gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON) + { + psPowerInfo->abAnalog[3] |= MCB_AA_PWM_MB3; + } + else + { + bAnalogOn = 1; + } + + /* VR/LDOA/REFA */ + if ((0 == bAnalogOn) && ((bPowerMode & MCDRV_POWMODE_VREFON) == 0)) + { + psPowerInfo->abAnalog[0] |= MCB_AA_PWM_VR; + psPowerInfo->abAnalog[0] |= MCB_AA_PWM_REFA; + psPowerInfo->abAnalog[0] |= MCB_AA_PWM_LDOA; + } + else + { + if (MCDRV_LDO_OFF == gsGlobalInfo_AA.sInitInfo.bLdo) + { + psPowerInfo->abAnalog[0] |= MCB_AA_PWM_LDOA; + } + else + { + psPowerInfo->abAnalog[0] |= MCB_AA_PWM_REFA; + } + } +} + +/**************************************************************************** + * McResCtrl_GetPowerInfoRegAccess_AA + * + * Description: + * Get power information to access register. + * Arguments: + * psRegInfo register information + * psPowerInfo power information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetPowerInfoRegAccess_AA +( + const MCDRV_REG_INFO* psRegInfo, + MCDRV_POWER_INFO_AA* psPowerInfo +) +{ + + McResCtrl_GetPowerInfo_AA(psPowerInfo); + + switch(psRegInfo->bRegType) + { + default: + case MCDRV_REGTYPE_A: + case MCDRV_REGTYPE_B_BASE: + case MCDRV_REGTYPE_B_AE: + break; + case MCDRV_REGTYPE_B_ANALOG: + switch(psRegInfo->bAddress) + { + case MCI_AA_AMP: + case MCI_AA_DNGATRT: + case MCI_AA_HPVOL_L: + case MCI_AA_HPVOL_R: + case MCI_AA_SPVOL_L: + case MCI_AA_SPVOL_R: + case MCI_AA_RCVOL: + case MCI_AA_ADL_MIX: + case MCI_AA_ADL_MONO: + case MCI_AA_ADR_MIX: + case MCI_AA_ADR_MONO: + case MCI_AA_LO1L_MIX: + case MCI_AA_LO1L_MONO: + case MCI_AA_LO1R_MIX: + case MCI_AA_LO2L_MIX: + case MCI_AA_LO2L_MONO: + case MCI_AA_LO2R_MIX: + case MCI_AA_HPL_MIX: + case MCI_AA_HPL_MONO: + case MCI_AA_HPR_MIX: + case MCI_AA_SPL_MIX: + case MCI_AA_SPL_MONO: + case MCI_AA_SPR_MIX: + case MCI_AA_SPR_MONO: + case MCI_AA_RC_MIX: + psPowerInfo->abAnalog[0] &= (UINT8)~MCB_AA_PWM_VR; + break; + case MCI_AA_DNGON: + psPowerInfo->dDigital &= ~(MCDRV_POWINFO_DIGITAL_DP0_AA | MCDRV_POWINFO_DIGITAL_DP1_AA + | MCDRV_POWINFO_DIGITAL_DP2_AA | MCDRV_POWINFO_DIGITAL_PLLRST0_AA); + break; + default: + break; + } + break; + + case MCDRV_REGTYPE_B_CODEC: + if(psRegInfo->bAddress == MCI_AA_DPADIF || psRegInfo->bAddress == MCI_AA_CD_HW_ID) + { + break; + } + psPowerInfo->dDigital &= ~(MCDRV_POWINFO_DIGITAL_DP0_AA | MCDRV_POWINFO_DIGITAL_DP1_AA + | MCDRV_POWINFO_DIGITAL_DP2_AA | MCDRV_POWINFO_DIGITAL_PLLRST0_AA | MCDRV_POWINFO_DIGITAL_DPB_AA); + break; + + case MCDRV_REGTYPE_B_MIXER: + psPowerInfo->dDigital &= ~(MCDRV_POWINFO_DIGITAL_DP0_AA | MCDRV_POWINFO_DIGITAL_DP1_AA + | MCDRV_POWINFO_DIGITAL_DP2_AA | MCDRV_POWINFO_DIGITAL_PLLRST0_AA | MCDRV_POWINFO_DIGITAL_DPB_AA); + break; + + case MCDRV_REGTYPE_B_CDSP: + break; + } +} + +/**************************************************************************** + * McResCtrl_GetCurPowerInfo_AA + * + * Description: + * Get current power setting. + * Arguments: + * psPowerInfo power information + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_GetCurPowerInfo_AA +( + MCDRV_POWER_INFO_AA* psPowerInfo +) +{ + UINT8 bReg; + + + psPowerInfo->abAnalog[0] = gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_0]; + psPowerInfo->abAnalog[1] = gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_1]; + psPowerInfo->abAnalog[2] = gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_2]; + psPowerInfo->abAnalog[3] = gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_3]; + psPowerInfo->abAnalog[4] = gsGlobalInfo_AA.abRegValB_ANA[MCI_AA_PWM_ANALOG_4]; + + psPowerInfo->dDigital = 0; + bReg = gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PWM_DIGITAL]; + if((bReg & MCB_AA_PWM_DP0) == MCB_AA_PWM_DP0) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DP0_AA; + } + if((bReg & MCB_AA_PWM_DP1) == MCB_AA_PWM_DP1) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DP1_AA; + } + if((bReg & MCB_AA_PWM_DP2) == MCB_AA_PWM_DP2) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DP2_AA; + } + + bReg = gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PWM_DIGITAL_1]; + if((bReg & MCB_AA_PWM_DPB) == MCB_AA_PWM_DPB) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPB_AA; + } + if((bReg & MCB_AA_PWM_DPDI0) == MCB_AA_PWM_DPDI0) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI0_AA; + } + if((bReg & MCB_AA_PWM_DPDI1) == MCB_AA_PWM_DPDI1) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI1_AA; + } + if((bReg & MCB_AA_PWM_DPDI2) == MCB_AA_PWM_DPDI2) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI2_AA; + } + if((bReg & MCB_AA_PWM_DPPDM) == MCB_AA_PWM_DPPDM) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPPDM_AA; + } + + bReg = gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PWM_DIGITAL_BDSP]; + if((bReg & MCB_AA_PWM_DPBDSP) == MCB_AA_PWM_DPBDSP) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPBDSP_AA; + } + + bReg = gsGlobalInfo_AA.abRegValB_BASE[MCI_AA_PLL_RST]; + if((bReg & MCB_AA_PLLRST0) == MCB_AA_PLLRST0) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_PLLRST0_AA; + } + + bReg = gsGlobalInfo_AA.abRegValB_CODEC[MCI_AA_DPADIF]; + if((bReg & MCB_AA_DPADIF) == MCB_AA_DPADIF) + { + psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPADIF_AA; + } +} + +/**************************************************************************** + * McResCtrl_GetDACSource_AA + * + * Description: + * Get DAC source information. + * Arguments: + * eCh 0:Master/1:Voice + * Return: + * path source(MCDRV_SRC_TYPE_AA) + * + ****************************************************************************/ +MCDRV_SRC_TYPE_AA McResCtrl_GetDACSource_AA +( + MCDRV_DAC_CH_AA eCh +) +{ + + if((gsGlobalInfo_AA.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + { + return eMCDRV_SRC_PDM_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + { + return eMCDRV_SRC_ADC0_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON) + { + return eMCDRV_SRC_DIR0_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON) + { + return eMCDRV_SRC_DIR1_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON) + { + return eMCDRV_SRC_DIR2_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON) + { + return eMCDRV_SRC_MIX_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON) + { + return McResCtrl_GetAESource_AA(); + } + return eMCDRV_SRC_NONE_AA; +} + +/**************************************************************************** + * McResCtrl_GetDITSource_AA + * + * Description: + * Get DIT source information. + * Arguments: + * ePort port number + * Return: + * path source(MCDRV_SRC_TYPE_AA) + * + ****************************************************************************/ +MCDRV_SRC_TYPE_AA McResCtrl_GetDITSource_AA +( + MCDRV_DIO_PORT_NO_AA ePort +) +{ + MCDRV_CHANNEL* pasDit; + + if(ePort == 0) + { + pasDit = &gsGlobalInfo_AA.sPathInfo.asDit0[0]; + } + else if(ePort == 1) + { + pasDit = &gsGlobalInfo_AA.sPathInfo.asDit1[0]; + } + else if(ePort == 2) + { + pasDit = &gsGlobalInfo_AA.sPathInfo.asDit2[0]; + } + else + { + return eMCDRV_SRC_NONE_AA; + } + + if((pasDit->abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + { + return eMCDRV_SRC_PDM_AA; + } + else if((pasDit->abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + { + return eMCDRV_SRC_ADC0_AA; + } + else if((pasDit->abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON) + { + return eMCDRV_SRC_DIR0_AA; + } + else if((pasDit->abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON) + { + return eMCDRV_SRC_DIR1_AA; + } + else if((pasDit->abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON) + { + return eMCDRV_SRC_DIR2_AA; + } + else if((pasDit->abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON) + { + return eMCDRV_SRC_MIX_AA; + } + else if((pasDit->abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON) + { + return McResCtrl_GetAESource_AA(); + } + return eMCDRV_SRC_NONE_AA; +} + +/**************************************************************************** + * McResCtrl_GetAESource_AA + * + * Description: + * Get AE source information. + * Arguments: + * none + * Return: + * path source(MCDRV_SRC_TYPE_AA) + * + ****************************************************************************/ +MCDRV_SRC_TYPE_AA McResCtrl_GetAESource_AA +( +void +) +{ + if((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + { + return eMCDRV_SRC_PDM_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + { + return eMCDRV_SRC_ADC0_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON) + { + return eMCDRV_SRC_DIR0_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON) + { + return eMCDRV_SRC_DIR1_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON) + { + return eMCDRV_SRC_DIR2_AA; + } + else if((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON) + { + return eMCDRV_SRC_MIX_AA; + } + return eMCDRV_SRC_NONE_AA; +} + +/**************************************************************************** + * McResCtrl_IsSrcUsed_AA + * + * Description: + * Is Src used + * Arguments: + * ePathSrc path src type + * Return: + * 0:unused/1:used + * + ****************************************************************************/ +UINT8 McResCtrl_IsSrcUsed_AA +( + MCDRV_SRC_TYPE_AA ePathSrc +) +{ + UINT8 bUsed = 0; + + switch(ePathSrc) + { + case eMCDRV_SRC_MIC1_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_MIC2_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_MIC3_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_LINE1_L_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_LINE1_R_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_LINE1_M_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_LINE2_L_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_LINE2_R_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_LINE2_M_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_DIR0_AA: + if((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON + || (gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON + || (gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON + || (gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_DIR1_AA: + if((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON + || (gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON + || (gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON + || (gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_DIR2_AA: + if((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON + || (gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON + || (gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON + || (gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_DTMF_AA: + break; + + case eMCDRV_SRC_PDM_AA: + if((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_ADC0_AA: + if((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_ADC1_AA: + break; + + case eMCDRV_SRC_DAC_L_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_DAC_R_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_DAC_M_AA: + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_AE_AA: + if((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON + || (gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON + || (gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_CDSP_AA: + break; + + case eMCDRV_SRC_MIX_AA: + if((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON + || (gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON + || (gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON + || (gsGlobalInfo_AA.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON + || (gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_SRC_DIR2_DIRECT_AA: + break; + + case eMCDRV_SRC_CDSP_DIRECT_AA: + break; + + default: + break; + } + + return bUsed; +} + +/**************************************************************************** + * McResCtrl_IsDstUsed_AA + * + * Description: + * Is Destination used + * Arguments: + * eType path destination + * eCh channel + * Return: + * 0:unused/1:used + * + ****************************************************************************/ +UINT8 McResCtrl_IsDstUsed_AA +( + MCDRV_DST_TYPE_AA eType, + MCDRV_DST_CH eCh +) +{ + UINT8 bUsed = 0; + + switch(eType) + { + case eMCDRV_DST_HP_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bUsed = 1; + } + } + else if(eCh == eMCDRV_DST_CH1_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (gsGlobalInfo_AA.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_SP_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bUsed = 1; + } + } + else if(eCh == eMCDRV_DST_CH1_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON + || (gsGlobalInfo_AA.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_RCV_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (gsGlobalInfo_AA.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) ==MCDRV_SRC5_DAC_R_ON) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_LOUT1_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bUsed = 1; + } + } + else if(eCh == eMCDRV_DST_CH1_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (gsGlobalInfo_AA.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_LOUT2_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bUsed = 1; + } + } + else if(eCh == eMCDRV_DST_CH1_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (gsGlobalInfo_AA.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_PEAK_AA: + break; + + case eMCDRV_DST_DIT0_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_0_AA) != eMCDRV_SRC_NONE_AA) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_DIT1_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_1_AA) != eMCDRV_SRC_NONE_AA) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_DIT2_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_2_AA) != eMCDRV_SRC_NONE_AA) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_DAC_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if(McResCtrl_GetDACSource_AA(eMCDRV_DAC_MASTER_AA) != eMCDRV_SRC_NONE_AA) + { + bUsed = 1; + } + } + else if(eCh == eMCDRV_DST_CH1_AA) + { + if(McResCtrl_GetDACSource_AA(eMCDRV_DAC_VOICE_AA) != eMCDRV_SRC_NONE_AA) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_AE_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if(McResCtrl_GetAESource_AA() != eMCDRV_SRC_NONE_AA) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_CDSP_AA: + break; + + case eMCDRV_DST_ADC0_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bUsed = 1; + } + } + else if(eCh == eMCDRV_DST_CH1_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bUsed = 1; + } + } + else + { + } + break; + + case eMCDRV_DST_ADC1_AA: + if(McDevProf_IsValid(eMCDRV_FUNC_ADC1) == 1) + { + if(eCh == eMCDRV_DST_CH0_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (gsGlobalInfo_AA.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bUsed = 1; + } + } + else + { + } + } + break; + + case eMCDRV_DST_MIX_AA: + if(eCh != 0) + { + break; + } + if((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON + || (gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON) + { + bUsed = 1; + } + break; + + case eMCDRV_DST_BIAS_AA: + if(eCh == eMCDRV_DST_CH0_AA) + { + if((gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON + || (gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON + || (gsGlobalInfo_AA.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON) + { + bUsed = 1; + } + } + else + { + } + break; + + default: + break; + } + + return bUsed; +} + +/**************************************************************************** + * McResCtrl_GetRegAccess_AA + * + * Description: + * Get register access availability + * Arguments: + * psRegInfo register information + * Return: + * MCDRV_REG_ACCSESS_AA + * + ****************************************************************************/ +MCDRV_REG_ACCSESS_AA McResCtrl_GetRegAccess_AA +( + const MCDRV_REG_INFO* psRegInfo +) +{ + switch(psRegInfo->bRegType) + { + case MCDRV_REGTYPE_A: + return gawRegAccessAvailableA[psRegInfo->bAddress]; + + case MCDRV_REGTYPE_B_BASE: + return gawRegAccessAvailableB_BASE[psRegInfo->bAddress]; + + case MCDRV_REGTYPE_B_ANALOG: + return gawRegAccessAvailableB_ANA[psRegInfo->bAddress]; + + case MCDRV_REGTYPE_B_CODEC: + return gawRegAccessAvailableB_CODEC[psRegInfo->bAddress]; + + case MCDRV_REGTYPE_B_MIXER: + return gawRegAccessAvailableB_MIX[psRegInfo->bAddress]; + + case MCDRV_REGTYPE_B_AE: + return gawRegAccessAvailableB_AE[psRegInfo->bAddress]; + + default: + break; + } + return eMCDRV_ACCESS_DENY_AA; +} + +/**************************************************************************** + * McResCtrl_GetAPMode_AA + * + * Description: + * get auto power management mode. + * Arguments: + * none + * Return: + * eMCDRV_APM_ON_AA + * eMCDRV_APM_OFF + * + ****************************************************************************/ +MCDRV_PMODE_AA McResCtrl_GetAPMode_AA +( + void +) +{ + return gsGlobalInfo_AA.eAPMode; +} + + +/**************************************************************************** + * McResCtrl_AllocPacketBuf_AA + * + * Description: + * allocate the buffer for register setting packets. + * Arguments: + * none + * Return: + * pointer to the area to store packets + * + ****************************************************************************/ +MCDRV_PACKET_AA* McResCtrl_AllocPacketBuf_AA +( + void +) +{ + if(eMCDRV_PACKETBUF_ALLOCATED_AA == gsGlobalInfo_AA.ePacketBufAlloc) + { + return NULL; + } + + gsGlobalInfo_AA.ePacketBufAlloc = eMCDRV_PACKETBUF_ALLOCATED_AA; + return gasPacket; +} + +/**************************************************************************** + * McResCtrl_ReleasePacketBuf_AA + * + * Description: + * Release the buffer for register setting packets. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_ReleasePacketBuf_AA +( + void +) +{ + gsGlobalInfo_AA.ePacketBufAlloc = eMCDRV_PACKETBUF_FREE_AA; +} + +/**************************************************************************** + * McResCtrl_InitRegUpdate_AA + * + * Description: + * Initialize the process of register update. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_InitRegUpdate_AA +( + void +) +{ + gsGlobalInfo_AA.sCtrlPacket.wDataNum = 0; + gsGlobalInfo_AA.wCurSlaveAddress = 0xFFFF; + gsGlobalInfo_AA.wCurRegType = 0xFFFF; + gsGlobalInfo_AA.wCurRegAddress = 0xFFFF; + gsGlobalInfo_AA.wDataContinueCount = 0; + gsGlobalInfo_AA.wPrevAddressIndex = 0; +} + +/**************************************************************************** + * McResCtrl_AddRegUpdate_AA + * + * Description: + * Add register update packet and save register value. + * Arguments: + * wRegType register type + * wAddress address + * bData write data + * eUpdateMode updete mode + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_AddRegUpdate_AA +( + UINT16 wRegType, + UINT16 wAddress, + UINT8 bData, + MCDRV_UPDATE_MODE_AA eUpdateMode +) +{ + UINT8 *pbRegVal; + UINT8 bAddressADR; + UINT8 bAddressWINDOW; + UINT8 *pbCtrlData; + UINT16 *pwCtrlDataNum; + const UINT16 *pwNextAddress; + UINT16 wNextAddress; + UINT16 wSlaveAddress; + + switch (wRegType) + { + case MCDRV_PACKET_REGTYPE_A_AA: + wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + pbRegVal = gsGlobalInfo_AA.abRegValA; + pwNextAddress = gawNextAddressA; + bAddressADR = (UINT8)wAddress; + bAddressWINDOW = bAddressADR; + if(MCDRV_A_REG_NUM_AA <= wAddress) + { + return; + } + break; + + case MCDRV_PACKET_REGTYPE_B_BASE_AA: + wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + pbRegVal = gsGlobalInfo_AA.abRegValB_BASE; + pwNextAddress = gawNextAddressB_BASE; + bAddressADR = MCI_AA_BASE_ADR; + bAddressWINDOW = MCI_AA_BASE_WINDOW; + if(MCDRV_B_BASE_REG_NUM_AA <= wAddress) + { + return; + } + break; + + case MCDRV_PACKET_REGTYPE_B_CODEC_AA: + wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + pbRegVal = gsGlobalInfo_AA.abRegValB_CODEC; + pwNextAddress = gawNextAddressB_CODEC; + bAddressADR = MCI_AA_CD_ADR; + bAddressWINDOW = MCI_AA_CD_WINDOW; + if(MCDRV_B_CODEC_REG_NUM_AA <= wAddress) + { + return; + } + break; + + case MCDRV_PACKET_REGTYPE_B_ANA_AA: + wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA); + pbRegVal = gsGlobalInfo_AA.abRegValB_ANA; + pwNextAddress = gawNextAddressB_Ana; + bAddressADR = MCI_AA_ANA_ADR; + bAddressWINDOW = MCI_AA_ANA_WINDOW; + if(MCDRV_B_ANA_REG_NUM_AA <= wAddress) + { + return; + } + break; + + case MCDRV_PACKET_REGTYPE_B_MIXER_AA: + wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + pbRegVal = gsGlobalInfo_AA.abRegValB_MIXER; + pwNextAddress = gawNextAddressB_MIXER; + bAddressADR = MCI_AA_MIX_ADR; + bAddressWINDOW = MCI_AA_MIX_WINDOW; + if(MCDRV_B_MIXER_REG_NUM_AA <= wAddress) + { + return; + } + break; + + case MCDRV_PACKET_REGTYPE_B_AE_AA: + wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + pbRegVal = gsGlobalInfo_AA.abRegValB_AE; + pwNextAddress = gawNextAddressB_AE; + bAddressADR = MCI_AA_AE_ADR; + bAddressWINDOW = MCI_AA_AE_WINDOW; + if(MCDRV_B_AE_REG_NUM_AA <= wAddress) + { + return; + } + break; + + case MCDRV_PACKET_REGTYPE_B_CDSP_AA: + wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + pbRegVal = gsGlobalInfo_AA.abRegValB_CDSP; + pwNextAddress = gawNextAddressB_CDSP; + bAddressADR = MCI_AA_CDSP_ADR; + bAddressWINDOW = MCI_AA_CDSP_WINDOW; + if(MCDRV_B_CDSP_REG_NUM_AA <= wAddress) + { + return; + } + break; + + default: + return; + } + + if(gsGlobalInfo_AA.wCurSlaveAddress != 0xFFFF && gsGlobalInfo_AA.wCurSlaveAddress != wSlaveAddress) + { + McResCtrl_ExecuteRegUpdate_AA(); + McResCtrl_InitRegUpdate_AA(); + } + + if(gsGlobalInfo_AA.wCurRegType != 0xFFFF && gsGlobalInfo_AA.wCurRegType != wRegType) + { + McResCtrl_ExecuteRegUpdate_AA(); + McResCtrl_InitRegUpdate_AA(); + } + + if ((eMCDRV_UPDATE_FORCE_AA != eUpdateMode) && (bData == pbRegVal[wAddress])) + { + return; + } + + if(gsGlobalInfo_AA.wCurRegAddress == 0xFFFF) + { + gsGlobalInfo_AA.wCurRegAddress = wAddress; + } + + if (eMCDRV_UPDATE_DUMMY_AA != eUpdateMode) + { + pbCtrlData = gsGlobalInfo_AA.sCtrlPacket.abData; + pwCtrlDataNum = &(gsGlobalInfo_AA.sCtrlPacket.wDataNum); + wNextAddress = pwNextAddress[gsGlobalInfo_AA.wCurRegAddress]; + + if ((wSlaveAddress == gsGlobalInfo_AA.wCurSlaveAddress) + && (wRegType == gsGlobalInfo_AA.wCurRegType) + && (0xFFFF != wNextAddress) + && (wAddress != wNextAddress)) + { + if (pwNextAddress[wNextAddress] == wAddress) + { + if (0 == gsGlobalInfo_AA.wDataContinueCount) + { + pbCtrlData[gsGlobalInfo_AA.wPrevAddressIndex] |= MCDRV_BURST_WRITE_ENABLE; + } + pbCtrlData[*pwCtrlDataNum] = pbRegVal[wNextAddress]; + (*pwCtrlDataNum)++; + gsGlobalInfo_AA.wDataContinueCount++; + wNextAddress = pwNextAddress[wNextAddress]; + } + else if ((0xFFFF != pwNextAddress[wNextAddress]) + && pwNextAddress[pwNextAddress[wNextAddress]] == wAddress) + { + if (0 == gsGlobalInfo_AA.wDataContinueCount) + { + pbCtrlData[gsGlobalInfo_AA.wPrevAddressIndex] |= MCDRV_BURST_WRITE_ENABLE; + } + pbCtrlData[*pwCtrlDataNum] = pbRegVal[wNextAddress]; + (*pwCtrlDataNum)++; + pbCtrlData[*pwCtrlDataNum] = pbRegVal[pwNextAddress[wNextAddress]]; + (*pwCtrlDataNum)++; + gsGlobalInfo_AA.wDataContinueCount += 2; + wNextAddress = pwNextAddress[pwNextAddress[wNextAddress]]; + } + } + + if ((0 == *pwCtrlDataNum) || (wAddress != wNextAddress)) + { + if (0 != gsGlobalInfo_AA.wDataContinueCount) + { + McResCtrl_ExecuteRegUpdate_AA(); + McResCtrl_InitRegUpdate_AA(); + } + + if (MCDRV_PACKET_REGTYPE_A_AA == wRegType) + { + pbCtrlData[*pwCtrlDataNum] = (bAddressADR << 1); + gsGlobalInfo_AA.wPrevAddressIndex = *pwCtrlDataNum; + (*pwCtrlDataNum)++; + } + else + { + pbCtrlData[(*pwCtrlDataNum)++] = (bAddressADR << 1); + pbCtrlData[(*pwCtrlDataNum)++] = (UINT8)wAddress; + pbCtrlData[*pwCtrlDataNum] = (bAddressWINDOW << 1); + gsGlobalInfo_AA.wPrevAddressIndex = (*pwCtrlDataNum)++; + } + } + else + { + if (0 == gsGlobalInfo_AA.wDataContinueCount) + { + pbCtrlData[gsGlobalInfo_AA.wPrevAddressIndex] |= MCDRV_BURST_WRITE_ENABLE; + } + gsGlobalInfo_AA.wDataContinueCount++; + } + + pbCtrlData[(*pwCtrlDataNum)++] = bData; + } + + gsGlobalInfo_AA.wCurSlaveAddress = wSlaveAddress; + gsGlobalInfo_AA.wCurRegType = wRegType; + gsGlobalInfo_AA.wCurRegAddress = wAddress; + + /* save register value */ + pbRegVal[wAddress] = bData; +} + +/**************************************************************************** + * McResCtrl_ExecuteRegUpdate_AA + * + * Description: + * Add register update packet and save register value. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +void McResCtrl_ExecuteRegUpdate_AA +( + void +) +{ + if (0 != gsGlobalInfo_AA.sCtrlPacket.wDataNum) + { + McSrv_WriteI2C((UINT8)gsGlobalInfo_AA.wCurSlaveAddress, gsGlobalInfo_AA.sCtrlPacket.abData, gsGlobalInfo_AA.sCtrlPacket.wDataNum); + } +} + +/**************************************************************************** + * McResCtrl_WaitEvent_AA + * + * Description: + * Wait event. + * Arguments: + * dEvent event to wait + * dParam event parameter + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McResCtrl_WaitEvent_AA +( + UINT32 dEvent, + UINT32 dParam +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT32 dInterval; + UINT32 dTimeOut; + UINT8 bSlaveAddr; + UINT8 abWriteData[2]; + + + switch(dEvent) + { + case MCDRV_EVT_INSFLG_AA: + dInterval = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolInterval; + dTimeOut = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolTimeOut; + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + if((dParam>>8) != (UINT32)0) + { + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DAC_INS_FLAG; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, MCI_AA_MIX_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + } + else if((dParam&(UINT32)0xFF) != (UINT32)0) + { + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_INS_FLAG; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (UINT8)(dParam&(UINT32)0xFF), dInterval, dTimeOut); + } + break; + + case MCDRV_EVT_ALLMUTE_AA: + dInterval = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolInterval; + dTimeOut = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolTimeOut; + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DIT_INVFLAGL; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_DIT0_INVFLAGL|MCB_AA_DIT1_INVFLAGL|MCB_AA_DIT2_INVFLAGL), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DIT_INVFLAGR; + McSrv_WriteI2C(McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG), abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_DIT0_INVFLAGR|MCB_AA_DIT1_INVFLAGR|MCB_AA_DIT2_INVFLAGR), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DIR_VFLAGL; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_PDM0_VFLAGL|MCB_AA_DIR0_VFLAGL|MCB_AA_DIR1_VFLAGL|MCB_AA_DIR2_VFLAGL), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DIR_VFLAGR; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_PDM0_VFLAGR|MCB_AA_DIR0_VFLAGR|MCB_AA_DIR1_VFLAGR|MCB_AA_DIR2_VFLAGR), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_AD_VFLAGL; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_ADC_VFLAGL|MCB_AA_AENG6_VFLAGL), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_AD_VFLAGR; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_ADC_VFLAGR|MCB_AA_AENG6_VFLAGR), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_AFLAGL; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_ADC_AFLAGL|MCB_AA_DIR0_AFLAGL|MCB_AA_DIR1_AFLAGL|MCB_AA_DIR2_AFLAGL), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_AFLAGR; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_ADC_AFLAGR|MCB_AA_DIR0_AFLAGR|MCB_AA_DIR1_AFLAGR|MCB_AA_DIR2_AFLAGR), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DAC_FLAGL; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_ST_FLAGL|MCB_AA_MASTER_OFLAGL|MCB_AA_VOICE_FLAGL|MCB_AA_DAC_FLAGL), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DAC_FLAGR; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (MCB_AA_ST_FLAGR|MCB_AA_MASTER_OFLAGR|MCB_AA_VOICE_FLAGR|MCB_AA_DAC_FLAGR), dInterval, dTimeOut); + break; + + case MCDRV_EVT_DITMUTE_AA: + dInterval = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolInterval; + dTimeOut = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolTimeOut; + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + if((dParam>>8) != (UINT32)0) + { + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DIT_INVFLAGL; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + } + if((dParam&(UINT32)0xFF) != (UINT32)0) + { + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DIT_INVFLAGR; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (UINT8)(dParam&(UINT32)0xFF), dInterval, dTimeOut); + } + break; + + case MCDRV_EVT_DACMUTE_AA: + dInterval = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolInterval; + dTimeOut = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolTimeOut; + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + if((dParam>>8) != (UINT32)0) + { + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DAC_FLAGL; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + } + if((dParam&(UINT32)0xFF) != (UINT32)0) + { + abWriteData[0] = MCI_AA_MIX_ADR<<1; + abWriteData[1] = MCI_AA_DAC_FLAGR; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_MIX_WINDOW, (UINT8)(dParam&(UINT32)0xFF), dInterval, dTimeOut); + } + break; + + case MCDRV_EVT_SVOL_DONE_AA: + dInterval = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolInterval; + dTimeOut = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolTimeOut; + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA); + if((dParam>>8) != (UINT32)0) + { + abWriteData[0] = MCI_AA_ANA_ADR<<1; + abWriteData[1] = MCI_AA_BUSY1; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_ANA_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + } + if((dParam&(UINT32)0xFF) != (UINT32)0) + { + abWriteData[0] = MCI_AA_ANA_ADR<<1; + abWriteData[1] = MCI_AA_BUSY2; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + return WaitBitRelease(bSlaveAddr, (UINT16)MCI_AA_ANA_WINDOW, (UINT8)(dParam&(UINT8)0xFF), dInterval, dTimeOut); + } + break; + + case MCDRV_EVT_APM_DONE_AA: + dInterval = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolInterval; + dTimeOut = gsGlobalInfo_AA.sInitInfo.sWaitTime.dSvolTimeOut; + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA); + abWriteData[0] = MCI_AA_ANA_ADR<<1; + abWriteData[1] = MCI_AA_AP_A1; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitSet(bSlaveAddr, (UINT16)MCI_AA_ANA_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut); + if(MCDRV_SUCCESS != sdRet) + { + break; + } + abWriteData[0] = MCI_AA_ANA_ADR<<1; + abWriteData[1] = MCI_AA_AP_A2; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitSet(bSlaveAddr, (UINT16)MCI_AA_ANA_WINDOW, (UINT8)(dParam&(UINT8)0xFF), dInterval, dTimeOut); + break; + + case MCDRV_EVT_ANA_RDY_AA: + dInterval = gsGlobalInfo_AA.sInitInfo.sWaitTime.dAnaRdyInterval; + dTimeOut = gsGlobalInfo_AA.sInitInfo.sWaitTime.dAnaRdyTimeOut; + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA); + abWriteData[0] = MCI_AA_ANA_ADR<<1; + abWriteData[1] = MCI_AA_RDY_FLAG; + McSrv_WriteI2C(bSlaveAddr, abWriteData, 2); + sdRet = WaitBitSet(bSlaveAddr, (UINT16)MCI_AA_ANA_WINDOW, (UINT8)dParam, dInterval, dTimeOut); + break; + + default: + sdRet = MCDRV_ERROR_ARGUMENT; + } + + return sdRet; +} + +/**************************************************************************** + * WaitBitSet + * + * Description: + * Wait register bit to set. + * Arguments: + * bSlaveAddr slave address + * wRegAddr register address + * bBit bit + * dCycleTime cycle time to poll [us] + * dTimeOut number of read cycles for time out + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +static SINT32 WaitBitSet +( + UINT8 bSlaveAddr, + UINT16 wRegAddr, + UINT8 bBit, + UINT32 dCycleTime, + UINT32 dTimeOut +) +{ + UINT8 bData; + UINT32 dCycles; + SINT32 sdRet; + + + dCycles = 0; + sdRet = MCDRV_ERROR_TIMEOUT; + + while(dCycles < dTimeOut) + { + bData = McSrv_ReadI2C(bSlaveAddr, wRegAddr); + if((bData & bBit) == bBit) + { + sdRet = MCDRV_SUCCESS; + break; + } + + McSrv_Sleep(dCycleTime); + dCycles++; + } + + return sdRet; +} + +/**************************************************************************** + * WaitBitRelease + * + * Description: + * Wait register bit to release. + * Arguments: + * bSlaveAddr slave address + * wRegAddr register address + * bBit bit + * dCycleTime cycle time to poll [us] + * dTimeOut number of read cycles for time out + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +static SINT32 WaitBitRelease +( + UINT8 bSlaveAddr, + UINT16 wRegAddr, + UINT8 bBit, + UINT32 dCycleTime, + UINT32 dTimeOut +) +{ + UINT8 bData; + UINT32 dCycles; + SINT32 sdRet; + + + dCycles = 0; + sdRet = MCDRV_ERROR_TIMEOUT; + + while(dCycles < dTimeOut) + { + bData = McSrv_ReadI2C(bSlaveAddr, wRegAddr); + if(0 == (bData & bBit)) + { + sdRet = MCDRV_SUCCESS; + break; + } + + McSrv_Sleep(dCycleTime); + dCycles++; + } + + return sdRet; +} + +/**************************************************************************** + * McResCtrl_ConfigHwAdj_AA + * + * Description: + * HWADJ configuration. + * Arguments: + * none + * Return: + * MCDRV_HWADJ + * + ****************************************************************************/ +MCDRV_HWADJ McResCtrl_ConfigHwAdj_AA +( + void +) +{ + UINT8 bFs; + UINT8 bSrc1; + UINT8 bSrc2; + UINT8 bSrc3; + MCDRV_DST_TYPE_AA eDstType; + MCDRV_SRC_TYPE_AA eSrcType; + MCDRV_HWADJ eHwAdj; + + eDstType = eMCDRV_DST_DIT0_AA; + eSrcType = eMCDRV_SRC_DIR0_AA; + eHwAdj = eMCDRV_HWADJ_THRU; + bFs = 0xFF; + + /* DIR0->AE or DIR0->MIX */ + bSrc1 = gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON; + bSrc2 = gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON; + if((bSrc1 != 0) || (bSrc2 != 0)) + { + bFs = gsGlobalInfo_AA.sDioInfo.asPortInfo[0].sDioCommon.bFs; + eSrcType = eMCDRV_SRC_DIR0_AA; + } + + /* DIR1->AE or DIR1->MIX */ + bSrc1 = gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON; + bSrc2 = gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON; + if((bSrc1 != 0) || (bSrc2 != 0)) + { + if(bFs > gsGlobalInfo_AA.sDioInfo.asPortInfo[1].sDioCommon.bFs) + { + bFs = gsGlobalInfo_AA.sDioInfo.asPortInfo[1].sDioCommon.bFs; + eSrcType = eMCDRV_SRC_DIR1_AA; + } + } + + /* DIR2->AE or DIR2->MIX */ + bSrc1 = gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON; + bSrc2 = gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON; + if((bSrc1 != 0) || (bSrc2 != 0)) + { + if(bFs > gsGlobalInfo_AA.sDioInfo.asPortInfo[2].sDioCommon.bFs) + { + bFs = gsGlobalInfo_AA.sDioInfo.asPortInfo[2].sDioCommon.bFs; + eSrcType = eMCDRV_SRC_DIR2_AA; + } + } + + if(bFs != 0xFF) + { + if((bFs != MCDRV_FS_48000) && (bFs != MCDRV_FS_44100) && (bFs != MCDRV_FS_8000)) + { + bFs = 0xFF; + } + + if(bFs != 0xFF) + { + switch(eSrcType) + { + case eMCDRV_SRC_DIR0_AA: + if((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) != 0) + { + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_AE_AA, eMCDRV_DST_CH0_AA) == 1) + { + if(((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == 0) && + ((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == 0)) + { + bFs = 0xFF; + } + } + else + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + } + } + break; + case eMCDRV_SRC_DIR1_AA: + if((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) != 0) + { + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_AE_AA, eMCDRV_DST_CH0_AA) == 1) + { + if(((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == 0) && + ((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == 0)) + { + bFs = 0xFF; + } + } + else + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + } + } + break; + case eMCDRV_SRC_DIR2_AA: + if((gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) != 0) + { + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_AE_AA, eMCDRV_DST_CH0_AA) == 1) + { + if(((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == 0) && + ((gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == 0)) + { + bFs = 0xFF; + } + } + else + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + } + } + break; + default: + bFs = 0xFF; + break; + } + + switch(bFs) + { + case MCDRV_FS_48000: + eHwAdj = eMCDRV_HWADJ_PLAY48; + break; + case MCDRV_FS_44100: + eHwAdj = eMCDRV_HWADJ_PLAY44; + break; + case MCDRV_FS_8000: + eHwAdj = eMCDRV_HWADJ_PLAY8; + break; + default: + break; + } + } + } + else + { + /* AD->DIT0 or AD->AE->DIT0 */ + bSrc1 = gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON; + bSrc2 = gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON; + bSrc3 = gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON; + if((bSrc1 != 0) || ((bSrc2 != 0) && (bSrc3 != 0))) + { + bFs = gsGlobalInfo_AA.sDioInfo.asPortInfo[0].sDioCommon.bFs; + eDstType = eMCDRV_DST_DIT0_AA; + } + + /* AD->DIT1 or AD->AE->DIT1 */ + bSrc1 = gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON; + bSrc2 = gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON; + bSrc3 = gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON; + if((bSrc1 != 0) || ((bSrc2 != 0) && (bSrc3 != 0))) + { + if(bFs > gsGlobalInfo_AA.sDioInfo.asPortInfo[1].sDioCommon.bFs) + { + bFs = gsGlobalInfo_AA.sDioInfo.asPortInfo[1].sDioCommon.bFs; + eDstType = eMCDRV_DST_DIT1_AA; + } + } + + /* AD->DIT2 or AD->AE->DIT2 */ + bSrc1 = gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON; + bSrc2 = gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON; + bSrc3 = gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON; + if((bSrc1 != 0) || ((bSrc2 != 0) && (bSrc3 != 0))) + { + if(bFs > gsGlobalInfo_AA.sDioInfo.asPortInfo[2].sDioCommon.bFs) + { + bFs = gsGlobalInfo_AA.sDioInfo.asPortInfo[2].sDioCommon.bFs; + eDstType = eMCDRV_DST_DIT2_AA; + } + } + + if((bFs != MCDRV_FS_48000) && (bFs != MCDRV_FS_44100) && (bFs != MCDRV_FS_8000)) + { + bFs = 0xFF; + } + + if(bFs != 0xFF) + { + switch(eDstType) + { + case eMCDRV_DST_DIT0_AA: + if(((gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) != 0) || + ((gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) != 0)) + { + bFs = 0xFF; + } + else + { + if((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) != 0) + { + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_AE_AA, eMCDRV_DST_CH0_AA) == 1) + { + bFs = 0xFF; + } + else + { + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + } + } + break; + case eMCDRV_DST_DIT1_AA: + if(((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) != 0) || + ((gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) != 0)) + { + bFs = 0xFF; + } + else + { + if((gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) != 0) + { + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_AE_AA, eMCDRV_DST_CH0_AA) == 1) + { + bFs = 0xFF; + } + else + { + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + } + } + break; + case eMCDRV_DST_DIT2_AA: + if(((gsGlobalInfo_AA.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) != 0) || + ((gsGlobalInfo_AA.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) != 0)) + { + bFs = 0xFF; + } + else + { + if((gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) != 0) + { + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_AE_AA, eMCDRV_DST_CH0_AA) == 1) + { + bFs = 0xFF; + } + else + { + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + } + } + break; + default: + bFs = 0xFF; + break; + } + + + if((bFs != 0xFF) && (McResCtrl_IsDstUsed_AA(eMCDRV_DST_AE_AA, eMCDRV_DST_CH0_AA) == 0)) + { + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON; + gsGlobalInfo_AA.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF; + } + + switch(bFs) + { + case MCDRV_FS_48000: + eHwAdj = eMCDRV_HWADJ_REC48; + break; + case MCDRV_FS_44100: + eHwAdj = eMCDRV_HWADJ_REC44; + break; + case MCDRV_FS_8000: + eHwAdj = eMCDRV_HWADJ_REC8; + break; + default: + break; + } + } + } + + if(gsGlobalInfo_AA.eHwAdj == eHwAdj) + { + eHwAdj = eMCDRV_HWADJ_NOCHANGE; + } + else + { + gsGlobalInfo_AA.eHwAdj = eHwAdj; + } + + return eHwAdj; +} + +/**************************************/ + +/* volume update */ +typedef enum +{ + eMCDRV_VOLUPDATE_MUTE_AA, + eMCDRV_VOLUPDATE_ALL_AA +} MCDRV_VOLUPDATE_MODE_AA; + +/* power update */ +typedef struct +{ + UINT32 dDigital; + UINT8 abAnalog[5]; +} MCDRV_POWER_UPDATE_AA; + +#define MCDRV_POWUPDATE_DIGITAL_ALL_AA (0xFFFFFFFFUL) +#define MCDRV_POWUPDATE_ANALOG0_ALL_AA (0x0F) +#define MCDRV_POWUPDATE_ANALOG1_ALL_AA (0xFF) +#define MCDRV_POWUPDATE_ANALOG2_ALL_AA (0x3F) +#define MCDRV_POWUPDATE_ANALOG3_ALL_AA (0x0F) +#define MCDRV_POWUPDATE_ANALOG4_ALL_AA (0xF0) +#define MCDRV_POWUPDATE_ANALOG0_IN_AA (0x0D) +#define MCDRV_POWUPDATE_ANALOG1_IN_AA (0xC0) +#define MCDRV_POWUPDATE_ANALOG2_IN_AA (0x00) +#define MCDRV_POWUPDATE_ANALOG3_IN_AA (0x0F) +#define MCDRV_POWUPDATE_ANALOG4_IN_AA (0xF0) +#define MCDRV_POWUPDATE_ANALOG0_OUT_AA (0x02) +#define MCDRV_POWUPDATE_ANALOG1_OUT_AA (0x3F) +#define MCDRV_POWUPDATE_ANALOG2_OUT_AA (0x3F) +#define MCDRV_POWUPDATE_ANALOG3_OUT_AA (0x00) +#define MCDRV_POWUPDATE_ANALOG4_OUT_AA (0x00) + + +#define MCDRV_TCXO_WAIT_TIME_AA ((UINT32)2000) +#define MCDRV_PLRST_WAIT_TIME_AA ((UINT32)2000) +#define MCDRV_LDOA_WAIT_TIME_AA ((UINT32)1000) +#define MCDRV_SP_WAIT_TIME_AA ((UINT32)150) +#define MCDRV_HP_WAIT_TIME_AA ((UINT32)300) +#define MCDRV_RC_WAIT_TIME_AA ((UINT32)150) + +/* SrcRate default */ +#define MCDRV_DIR_SRCRATE_48000_AA (32768) +#define MCDRV_DIR_SRCRATE_44100_AA (30106) +#define MCDRV_DIR_SRCRATE_32000_AA (21845) +#define MCDRV_DIR_SRCRATE_24000_AA (16384) +#define MCDRV_DIR_SRCRATE_22050_AA (15053) +#define MCDRV_DIR_SRCRATE_16000_AA (10923) +#define MCDRV_DIR_SRCRATE_12000_AA (8192) +#define MCDRV_DIR_SRCRATE_11025_AA (7526) +#define MCDRV_DIR_SRCRATE_8000_AA (5461) + +#define MCDRV_DIT_SRCRATE_48000_AA (4096) +#define MCDRV_DIT_SRCRATE_44100_AA (4458) +#define MCDRV_DIT_SRCRATE_32000_AA (6144) +#define MCDRV_DIT_SRCRATE_24000_AA (8192) +#define MCDRV_DIT_SRCRATE_22050_AA (8916) +#define MCDRV_DIT_SRCRATE_16000_AA (12288) +#define MCDRV_DIT_SRCRATE_12000_AA (16384) +#define MCDRV_DIT_SRCRATE_11025_AA (17833) +#define MCDRV_DIT_SRCRATE_8000_AA (24576) + +static SINT32 AddAnalogPowerUpAuto(const MCDRV_POWER_INFO_AA* psPowerInfo, const MCDRV_POWER_UPDATE_AA* psPowerUpdate); + +static void AddDIPad(void); +static void AddPAD(void); +static SINT32 AddSource(void); +static void AddDIStart(void); +static UINT8 GetMicMixBit(const MCDRV_CHANNEL* psChannel); +static void AddStopADC(void); +static void AddStopPDM(void); +static UINT8 IsModifiedDIO(UINT32 dUpdateInfo); +static UINT8 IsModifiedDIOCommon(MCDRV_DIO_PORT_NO_AA ePort); +static UINT8 IsModifiedDIODIR(MCDRV_DIO_PORT_NO_AA ePort); +static UINT8 IsModifiedDIODIT(MCDRV_DIO_PORT_NO_AA ePort); +static void AddDIOCommon(MCDRV_DIO_PORT_NO_AA ePort); +static void AddDIODIR(MCDRV_DIO_PORT_NO_AA ePort); +static void AddDIODIT(MCDRV_DIO_PORT_NO_AA ePort); + +#define MCDRV_DPB_KEEP_AA 0 +#define MCDRV_DPB_UP_AA 1 +static SINT32 PowerUpDig(UINT8 bDPBUp); + +static UINT32 GetMaxWait(UINT8 bRegChange); + +static SINT32 McPacket_AddInit_AA (const MCDRV_INIT_INFO* psInitInfo); +static SINT32 McPacket_AddVol_AA (UINT32 dUpdate, MCDRV_VOLUPDATE_MODE_AA eMode); +static SINT32 McPacket_AddPowerUp_AA (const MCDRV_POWER_INFO_AA* psPowerInfo, const MCDRV_POWER_UPDATE_AA* psPowerUpdate); +static SINT32 McPacket_AddPowerDown_AA (const MCDRV_POWER_INFO_AA* psPowerInfo, const MCDRV_POWER_UPDATE_AA* psPowerUpdate); +static SINT32 McPacket_AddPathSet_AA (void); +static SINT32 McPacket_AddMixSet_AA (void); +static SINT32 McPacket_AddStart_AA (void); +static SINT32 McPacket_AddStop_AA (void); +static SINT32 McPacket_AddDigitalIO_AA (UINT32 dUpdateInfo); +static SINT32 McPacket_AddDAC_AA (UINT32 dUpdateInfo); +static SINT32 McPacket_AddADC_AA (UINT32 dUpdateInfo); +static SINT32 McPacket_AddSP_AA (void); +static SINT32 McPacket_AddDNG_AA (UINT32 dUpdateInfo); +static SINT32 McPacket_AddAE_AA (UINT32 dUpdateInfo); +static SINT32 McPacket_AddPDM_AA (UINT32 dUpdateInfo); +static SINT32 McPacket_AddGPMode_AA (void); +static SINT32 McPacket_AddGPMask_AA (UINT32 dPadNo); +static SINT32 McPacket_AddGPSet_AA (UINT8 bGpio, UINT32 dPadNo); + +/**************************************************************************** + * McPacket_AddInit_AA + * + * Description: + * Add initialize packet. + * Arguments: + * psInitInfo information for initialization + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +SINT32 McPacket_AddInit_AA +( + const MCDRV_INIT_INFO* psInitInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + + + /* RSTA */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | MCI_AA_RST, MCB_AA_RST); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | MCI_AA_RST, 0); + + /* ANA_RST */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_ANA_RST, MCI_AA_ANA_RST_DEF); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_ANA_RST, 0); + + /* SDIN_MSK*, SDO_DDR* */ + bReg = MCB_AA_SDIN_MSK2; + if(psInitInfo->bDioSdo2Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_SDO_DDR2; + } + bReg |= MCB_AA_SDIN_MSK1; + if(psInitInfo->bDioSdo1Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_SDO_DDR1; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_SD_MSK, bReg); + + bReg = MCB_AA_SDIN_MSK0; + if(psInitInfo->bDioSdo0Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_SDO_DDR0; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_SD_MSK_1, bReg); + + /* BCLK_MSK*, BCLD_DDR*, LRCK_MSK*, LRCK_DDR*, PCM_HIZ* */ + bReg = 0; + bReg |= MCB_AA_BCLK_MSK2; + bReg |= MCB_AA_LRCK_MSK2; + if(psInitInfo->bDioClk2Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_BCLK_DDR2; + bReg |= MCB_AA_LRCK_DDR2; + } + bReg |= MCB_AA_BCLK_MSK1; + bReg |= MCB_AA_LRCK_MSK1; + if(psInitInfo->bDioClk1Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_BCLK_DDR1; + bReg |= MCB_AA_LRCK_DDR1; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_BCLK_MSK, bReg); + + bReg = 0; + bReg |= MCB_AA_BCLK_MSK0; + bReg |= MCB_AA_LRCK_MSK0; + if(psInitInfo->bDioClk0Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_BCLK_DDR0; + bReg |= MCB_AA_LRCK_DDR0; + } + if(psInitInfo->bPcmHiz == MCDRV_PCMHIZ_HIZ) + { + bReg |= (MCB_AA_PCMOUT_HIZ2 | MCB_AA_PCMOUT_HIZ1 | MCB_AA_PCMOUT_HIZ0); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_BCLK_MSK_1, bReg); + + /* DI*_BCKP */ + + /* PA*_MSK, PA*_DDR */ + bReg = MCI_AA_PA_MSK_1_DEF; + if(psInitInfo->bPad0Func == MCDRV_PAD_PDMCK) + { + bReg |= MCB_AA_PA0_DDR; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PA_MSK_1, bReg); + + /* PA0_OUT */ + if(psInitInfo->bPad0Func == MCDRV_PAD_PDMCK) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PA_OUT, MCB_AA_PA_OUT); + } + + /* SCU_PA* */ + + /* CKSEL */ + if(psInitInfo->bCkSel != MCDRV_CKSEL_CMOS) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_CKSEL, MCB_AA_CKSEL); + } + + /* DIVR0, DIVF0 */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_DIVR0, psInitInfo->bDivR0); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_DIVF0, psInitInfo->bDivF0); + + /* Clock Start */ + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + McSrv_ClockStart(); + + /* DP0 */ + bReg = MCB_AA_PWM_DP2|MCB_AA_PWM_DP1; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL, bReg); + if(psInitInfo->bCkSel != MCDRV_CKSEL_CMOS) + { + /* 2ms wait */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | MCDRV_TCXO_WAIT_TIME_AA, 0); + } + + /* PLLRST0 */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PLL_RST, 0); + /* 2ms wait */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | MCDRV_PLRST_WAIT_TIME_AA, 0); + /* DP1/DP2 up */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL, 0); + /* RSTB */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_RSTB, 0); + /* DPB */ + bReg = MCB_AA_PWM_DPPDM|MCB_AA_PWM_DPDI2|MCB_AA_PWM_DPDI1|MCB_AA_PWM_DPDI0; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL_1, bReg); + + /* DCL_GAIN, DCL_LMT */ + bReg = (psInitInfo->bDclGain<<4) | psInitInfo->bDclLimit; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_DCL, bReg); + + /* DIF_LI, DIF_LO* */ + bReg = (psInitInfo->bLineOut2Dif<<5) | (psInitInfo->bLineOut1Dif<<4) | psInitInfo->bLineIn1Dif; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_DIF_LINE, bReg); + + /* SP*_HIZ, SPMN */ + bReg = (psInitInfo->bSpmn << 1); + if(MCDRV_SPHIZ_HIZ == psInitInfo->bSpHiz) + { + bReg |= (MCB_AA_SPL_HIZ|MCB_AA_SPR_HIZ); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_SP_MODE, bReg); + + /* MC*SNG */ + bReg = (psInitInfo->bMic2Sng<<6) | (psInitInfo->bMic1Sng<<2); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_MC_GAIN, bReg); + bReg = (psInitInfo->bMic3Sng<<2); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_MC3_GAIN, bReg); + + /* AVDDLEV, VREFLEV */ + bReg = 0x20 | psInitInfo->bAvddLev; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LEV, bReg); + + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)MCI_AA_ANA_ADR, MCI_AA_PWM_ANALOG_0); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)60, 0xD9); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)MCI_AA_ANA_WINDOW, MCI_AA_PWM_ANALOG_0_DEF); + + if((psInitInfo->bPowerMode & MCDRV_POWMODE_VREFON) != 0 || McResCtrl_GetAPMode_AA() == eMCDRV_APM_OFF_AA) + { + bReg = MCI_AA_PWM_ANALOG_0_DEF; + if(psInitInfo->bLdo == MCDRV_LDO_ON) + { + /* AP_LDOA */ + bReg &= (UINT8)~MCB_AA_PWM_LDOA; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_0, bReg); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | MCDRV_LDOA_WAIT_TIME_AA, 0); + } + else + { + bReg &= (UINT8)~MCB_AA_PWM_REFA; + } + /* AP_VR up */ + bReg &= (UINT8)~MCB_AA_PWM_VR; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_0, bReg); + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | psInitInfo->sWaitTime.dVrefRdy2, 0); + } + + if(McResCtrl_GetAPMode_AA() == eMCDRV_APM_OFF_AA) + { + bReg = MCB_AA_AMPOFF_SP|MCB_AA_AMPOFF_HP|MCB_AA_AMPOFF_RC; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_AMP, bReg); + } + + sdRet = McDevIf_ExecutePacket_AA(); + if (MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* unused path power down */ + McResCtrl_GetPowerInfo_AA(&sPowerInfo); + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL_AA; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL_AA; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL_AA; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL_AA; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL_AA; + return McPacket_AddPowerDown_AA(&sPowerInfo, &sPowerUpdate); +} + +/**************************************************************************** + * McPacket_AddPowerUp_AA + * + * Description: + * Add powerup packet. + * Arguments: + * psPowerInfo power information + * psPowerUpdate power update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddPowerUp_AA +( + const MCDRV_POWER_INFO_AA* psPowerInfo, + const MCDRV_POWER_UPDATE_AA* psPowerUpdate +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + UINT8 bRegCur; + UINT8 bRegAna1; + UINT8 bRegAna2; + UINT32 dUpdate; + UINT8 bRegChange; + UINT8 bSpHizReg; + UINT32 dWaitTime; + UINT32 dWaitTimeDone = 0; + UINT8 bWaitVREFRDY = 0; + UINT8 bWaitHPVolUp = 0; + UINT8 bWaitSPVolUp = 0; + MCDRV_INIT_INFO sInitInfo; + + + McResCtrl_GetInitInfo_AA(&sInitInfo); + + /* Digital Power */ + dUpdate = ~psPowerInfo->dDigital & psPowerUpdate->dDigital; + if((dUpdate & MCDRV_POWINFO_DIGITAL_DP0_AA) != 0) + { + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PWM_DIGITAL) & MCB_AA_PWM_DP0) != 0) + {/* DP0 changed */ + /* CKSEL */ + if(sInitInfo.bCkSel != MCDRV_CKSEL_CMOS) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | (UINT32)MCI_AA_CKSEL, MCB_AA_CKSEL); + } + else + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | (UINT32)MCI_AA_CKSEL, 0); + } + /* DIVR0, DIVF0 */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | (UINT32)MCI_AA_DIVR0, sInitInfo.bDivR0); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | (UINT32)MCI_AA_DIVF0, sInitInfo.bDivF0); + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + /* Clock Start */ + McSrv_ClockStart(); + /* DP0 up */ + bReg = MCB_AA_PWM_DP2|MCB_AA_PWM_DP1; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL, bReg); + if(sInitInfo.bCkSel != MCDRV_CKSEL_CMOS) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | MCDRV_TCXO_WAIT_TIME_AA, 0); + } + /* PLLRST0 up */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PLL_RST, 0); + /* 2ms wait */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | MCDRV_PLRST_WAIT_TIME_AA, 0); + /* DP1/DP2 up */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL, 0); + /* DPB/DPDI* up */ + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PWM_DIGITAL_1); + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI0_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPDI0; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI1_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPDI1; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI2_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPDI2; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPPDM_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPPDM; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPB_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPB; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL_1, bReg); + } + else if((dUpdate & MCDRV_POWINFO_DIGITAL_DP2_AA) != 0) + { + /* DP1/DP2 up */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL, 0); + /* DPB/DPDI* up */ + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PWM_DIGITAL_1); + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI0_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPDI0; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI1_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPDI1; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI2_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPDI2; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPPDM_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPPDM; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPB_AA) != 0) + { + bReg &= (UINT8)~MCB_AA_PWM_DPB; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL_1, bReg); + } + + /* DPBDSP */ + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPBDSP_AA) != 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL_BDSP, 0); + } + /* DPADIF */ + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPADIF_AA) != 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_DPADIF, 0); + } + } + + if(McResCtrl_GetAPMode_AA() == eMCDRV_APM_ON_AA) + { + return AddAnalogPowerUpAuto(psPowerInfo, psPowerUpdate); + } + + /* Analog Power */ + dUpdate = ~psPowerInfo->abAnalog[0] & psPowerUpdate->abAnalog[0]; + if((dUpdate & MCB_AA_PWM_VR) != 0) + { + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_0) & MCB_AA_PWM_VR) != 0) + {/* AP_VR changed */ + bReg = MCI_AA_PWM_ANALOG_0_DEF; + if(sInitInfo.bLdo == MCDRV_LDO_ON) + { + /* AP_LDOA */ + bReg &= (UINT8)~MCB_AA_PWM_LDOA; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_PWM_ANALOG_0, bReg); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | MCDRV_LDOA_WAIT_TIME_AA, 0); + } + else + { + bReg &= (UINT8)~MCB_AA_PWM_REFA; + } + /* AP_VR up */ + bReg &= (UINT8)~MCB_AA_PWM_VR; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_PWM_ANALOG_0, bReg); + dWaitTimeDone = sInitInfo.sWaitTime.dVrefRdy1; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | dWaitTimeDone, 0); + bWaitVREFRDY = 1; + } + + bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) & McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_1); + /* SP_HIZ control */ + if(MCDRV_SPHIZ_HIZ == sInitInfo.bSpHiz) + { + bSpHizReg = 0; + if((bReg & (MCB_AA_PWM_SPL1 | MCB_AA_PWM_SPL2)) != 0) + { + bSpHizReg |= MCB_AA_SPL_HIZ; + } + + if((bReg & (MCB_AA_PWM_SPR1 | MCB_AA_PWM_SPR2)) != 0) + { + bSpHizReg |= MCB_AA_SPR_HIZ; + } + + bSpHizReg |= (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_SP_MODE) & (MCB_AA_SPMN | MCB_AA_SP_SWAP)); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_SP_MODE, bSpHizReg); + } + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_3); + bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3]) & bRegCur; + bRegChange = bReg ^ bRegCur; + /* set DACON and NSMUTE before setting 0 to AP_DA */ + if((bRegChange & MCB_AA_PWM_DA) != 0 && (psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3] & MCB_AA_PWM_DA) == 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | (UINT32)MCI_AA_DAC_CONFIG, MCB_AA_NSMUTE); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | (UINT32)MCI_AA_DAC_CONFIG, (MCB_AA_DACON | MCB_AA_NSMUTE)); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | (UINT32)MCI_AA_DAC_CONFIG, MCB_AA_DACON); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_3, bReg); + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_4); + bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[4] & psPowerUpdate->abAnalog[4]) & bRegCur; + bRegChange |= (bReg ^ bRegCur); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_4, bReg); + + if(bWaitVREFRDY != 0) + { + /* wait VREF_RDY */ + dWaitTimeDone = sInitInfo.sWaitTime.dVrefRdy2 - dWaitTimeDone; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | dWaitTimeDone, 0); + } + + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_0); + bReg = (UINT8)~dUpdate & bRegCur; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_0, bReg); + if((bRegCur & MCB_AA_PWM_CP) != 0 && (bReg & MCB_AA_PWM_CP) == 0) + {/* AP_CP up */ + dWaitTime = MCDRV_HP_WAIT_TIME_AA; + } + else + { + dWaitTime = 0; + } + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_1); + bRegAna1 = (UINT8)~(~psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) & bRegCur; + if(((bRegCur & MCB_AA_PWM_SPL1) != 0 && (bRegAna1 & MCB_AA_PWM_SPL1) == 0) + || ((bRegCur & MCB_AA_PWM_SPR1) != 0 && (bRegAna1 & MCB_AA_PWM_SPR1) == 0)) + {/* AP_SP* up */ + bReg = bRegAna1|(bRegCur&(UINT8)~(MCB_AA_PWM_SPL1|MCB_AA_PWM_SPR1)); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_1, bReg); + if(dWaitTime == (UINT32)0) + { + dWaitTime = MCDRV_SP_WAIT_TIME_AA; + bWaitSPVolUp = 1; + } + } + if(((bRegCur & MCB_AA_PWM_HPL) != 0 && (bRegAna1 & MCB_AA_PWM_HPL) == 0) + || ((bRegCur & MCB_AA_PWM_HPR) != 0 && (bRegAna1 & MCB_AA_PWM_HPR) == 0)) + { + bWaitHPVolUp = 1; + } + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_2); + bRegAna2 = (UINT8)~(~psPowerInfo->abAnalog[2] & psPowerUpdate->abAnalog[2]) & bRegCur; + if((bRegCur & MCB_AA_PWM_RC1) != 0 && (bRegAna2 & MCB_AA_PWM_RC1) == 0) + {/* AP_RC up */ + bReg = bRegAna2|(bRegCur&~MCB_AA_PWM_RC1); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_2, bReg); + if(dWaitTime == (UINT32)0) + { + dWaitTime = MCDRV_RC_WAIT_TIME_AA; + } + } + if(dWaitTime > (UINT32)0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | dWaitTime, 0); + dWaitTimeDone += dWaitTime; + } + + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_1, bRegAna1); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_2, bRegAna2); + + /* time wait */ + dWaitTime = GetMaxWait(bRegChange); + if(dWaitTime > dWaitTimeDone) + { + dWaitTime = dWaitTime - dWaitTimeDone; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | dWaitTime, 0); + dWaitTimeDone += dWaitTime; + } + + if(bWaitSPVolUp != 0 && sInitInfo.sWaitTime.dSpRdy > dWaitTimeDone) + { + dWaitTime = sInitInfo.sWaitTime.dSpRdy - dWaitTimeDone; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | dWaitTime, 0); + dWaitTimeDone += dWaitTime; + } + if(bWaitHPVolUp != 0 && sInitInfo.sWaitTime.dHpRdy > dWaitTimeDone) + { + dWaitTime = sInitInfo.sWaitTime.dHpRdy - dWaitTimeDone; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | dWaitTime, 0); + dWaitTimeDone += dWaitTime; + } + } + return sdRet; +} + +/**************************************************************************** + * AddAnalogPowerUpAuto + * + * Description: + * Add analog auto powerup packet. + * Arguments: + * psPowerInfo power information + * psPowerUpdate power update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +static SINT32 AddAnalogPowerUpAuto +( + const MCDRV_POWER_INFO_AA* psPowerInfo, + const MCDRV_POWER_UPDATE_AA* psPowerUpdate +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + UINT8 bRegCur; + UINT32 dUpdate; + UINT8 bRegChange; + UINT8 bSpHizReg; + MCDRV_INIT_INFO sInitInfo; + UINT32 dWaitTime = 0; + + + McResCtrl_GetInitInfo_AA(&sInitInfo); + + /* Analog Power */ + dUpdate = (UINT32)~psPowerInfo->abAnalog[0] & psPowerUpdate->abAnalog[0]; + if((dUpdate & MCB_AA_PWM_VR) != 0) + { + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_0) & MCB_AA_PWM_VR) != 0) + {/* AP_VR changed */ + /* AP_VR up */ + bReg = MCI_AA_PWM_ANALOG_0_DEF; + if(sInitInfo.bLdo == MCDRV_LDO_ON) + { + /* AP_LDOA */ + bReg &= (UINT8)~MCB_AA_PWM_LDOA; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_PWM_ANALOG_0, bReg); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | MCDRV_LDOA_WAIT_TIME_AA, 0); + } + else + { + bReg &= (UINT8)~MCB_AA_PWM_REFA; + } + bReg &= (UINT8)~MCB_AA_PWM_VR; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_PWM_ANALOG_0, bReg); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | sInitInfo.sWaitTime.dVrefRdy1, 0); + if(sInitInfo.sWaitTime.dVrefRdy2 > sInitInfo.sWaitTime.dVrefRdy1) + { + dWaitTime = sInitInfo.sWaitTime.dVrefRdy2 - sInitInfo.sWaitTime.dVrefRdy1; + } + } + + bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) & McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_1); + /* SP_HIZ control */ + if(MCDRV_SPHIZ_HIZ == sInitInfo.bSpHiz) + { + bSpHizReg = 0; + if((bReg & (MCB_AA_PWM_SPL1 | MCB_AA_PWM_SPL2)) != 0) + { + bSpHizReg |= MCB_AA_SPL_HIZ; + } + + if((bReg & (MCB_AA_PWM_SPR1 | MCB_AA_PWM_SPR2)) != 0) + { + bSpHizReg |= MCB_AA_SPR_HIZ; + } + + bSpHizReg |= (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_SP_MODE) & (MCB_AA_SPMN | MCB_AA_SP_SWAP)); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_SP_MODE, bSpHizReg); + } + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_3); + bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3]) & bRegCur; + bRegChange = bReg ^ bRegCur; + /* set DACON and NSMUTE before setting 0 to AP_DA */ + if((bRegChange & MCB_AA_PWM_DA) != 0 && (psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3] & MCB_AA_PWM_DA) == 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | (UINT32)MCI_AA_DAC_CONFIG, MCB_AA_NSMUTE); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | (UINT32)MCI_AA_DAC_CONFIG, (MCB_AA_DACON | MCB_AA_NSMUTE)); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | (UINT32)MCI_AA_DAC_CONFIG, MCB_AA_DACON); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_3, bReg); + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_4); + bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[4] & psPowerUpdate->abAnalog[4]) & bRegCur; + bRegChange |= (bReg ^ bRegCur); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_4, bReg); + + if(dWaitTime > (UINT32)0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | dWaitTime, 0); + } + + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_0); + bReg = (UINT8)~dUpdate & bRegCur; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_0, bReg); + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_1); + bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) & bRegCur; + if((bRegCur & (MCB_AA_PWM_ADL|MCB_AA_PWM_ADR)) != (bReg & (MCB_AA_PWM_ADL|MCB_AA_PWM_ADR))) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_1, bReg); + } + else + { + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + McResCtrl_SetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_1, bReg); + } + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_2); + bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[2] & psPowerUpdate->abAnalog[2]) & bRegCur; + if((bRegCur & (MCB_AA_PWM_LO1L|MCB_AA_PWM_LO1R|MCB_AA_PWM_LO2L|MCB_AA_PWM_LO2R)) != (bReg & (MCB_AA_PWM_LO1L|MCB_AA_PWM_LO1R|MCB_AA_PWM_LO2L|MCB_AA_PWM_LO2R))) + { + bReg = bReg|(bRegCur&(MCB_AA_PWM_RC1|MCB_AA_PWM_RC2)); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_2, bReg); + } + else + { + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + McResCtrl_SetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_2, bReg); + } + + /* time wait */ + if(dWaitTime < GetMaxWait(bRegChange)) + { + dWaitTime = GetMaxWait(bRegChange) - dWaitTime; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | dWaitTime, 0); + } + } + return sdRet; +} + +/**************************************************************************** + * McPacket_AddPowerDown_AA + * + * Description: + * Add powerdown packet. + * Arguments: + * psPowerInfo power information + * psPowerUpdate power update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddPowerDown_AA +( + const MCDRV_POWER_INFO_AA* psPowerInfo, + const MCDRV_POWER_UPDATE_AA* psPowerUpdate +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + UINT8 bRegCur; + UINT32 dUpdate = psPowerInfo->dDigital & psPowerUpdate->dDigital; + UINT32 dAPMDoneParam; + UINT32 dAnaRdyParam; + UINT8 bSpHizReg; + MCDRV_INIT_INFO sInitInfo; + + + McResCtrl_GetInitInfo_AA(&sInitInfo); + + if(McResCtrl_GetAPMode_AA() == eMCDRV_APM_ON_AA) + { + if(((psPowerInfo->abAnalog[0] & psPowerUpdate->abAnalog[0] & MCB_AA_PWM_VR) != 0 + && (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_0) & MCB_AA_PWM_VR) == 0)) + { + /* wait AP_XX_A */ + dAPMDoneParam = ((MCB_AA_AP_CP_A|MCB_AA_AP_HPL_A|MCB_AA_AP_HPR_A)<<8) + | (MCB_AA_AP_RC1_A|MCB_AA_AP_RC2_A|MCB_AA_AP_SPL1_A|MCB_AA_AP_SPR1_A|MCB_AA_AP_SPL2_A|MCB_AA_AP_SPR2_A); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_APM_DONE_AA | dAPMDoneParam, 0); + } + } + + if((dUpdate & MCDRV_POWINFO_DIGITAL_DP0_AA) != 0 + && (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PWM_DIGITAL) & MCB_AA_PWM_DP0) == 0) + { + /* wait mute complete */ + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_ALLMUTE_AA, 0); + } + + /* Analog Power */ + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_1); + bReg = (psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) | bRegCur; + if((psPowerUpdate->abAnalog[1] & MCDRV_POWUPDATE_ANALOG1_OUT_AA) != 0 && (MCDRV_SPHIZ_HIZ == sInitInfo.bSpHiz)) + { + /* SP_HIZ control */ + bSpHizReg = 0; + if((bReg & (MCB_AA_PWM_SPL1 | MCB_AA_PWM_SPL2)) != 0) + { + bSpHizReg |= MCB_AA_SPL_HIZ; + } + + if((bReg & (MCB_AA_PWM_SPR1 | MCB_AA_PWM_SPR2)) != 0) + { + bSpHizReg |= MCB_AA_SPR_HIZ; + } + + bSpHizReg |= (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_SP_MODE) & (MCB_AA_SPMN | MCB_AA_SP_SWAP)); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_SP_MODE, bSpHizReg); + } + + if(McResCtrl_GetAPMode_AA() == eMCDRV_APM_ON_AA) + { + if((bRegCur & (MCB_AA_PWM_ADL|MCB_AA_PWM_ADR)) != (bReg & (MCB_AA_PWM_ADL|MCB_AA_PWM_ADR))) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_1, bReg); + } + else + { + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + McResCtrl_SetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_1, bReg); + } + } + else + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_PWM_ANALOG_1, bReg); + } + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_2); + bReg = (psPowerInfo->abAnalog[2] & psPowerUpdate->abAnalog[2]) | bRegCur; + if(McResCtrl_GetAPMode_AA() == eMCDRV_APM_ON_AA) + { + if((bRegCur & (MCB_AA_PWM_LO1L|MCB_AA_PWM_LO1R|MCB_AA_PWM_LO2L|MCB_AA_PWM_LO2R)) != (bReg & (MCB_AA_PWM_LO1L|MCB_AA_PWM_LO1R|MCB_AA_PWM_LO2L|MCB_AA_PWM_LO2R))) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_2, bReg); + } + else + { + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + McResCtrl_SetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_2, bReg); + } + } + else + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_PWM_ANALOG_2, bReg); + } + + bReg = (UINT8)(psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3]) | McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_3); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_3, bReg); + bReg = (UINT8)(psPowerInfo->abAnalog[4] & psPowerUpdate->abAnalog[4]) | McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_4); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_PWM_ANALOG_4, bReg); + + /* set DACON and NSMUTE after setting 1 to AP_DA */ + if((psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3] & MCB_AA_PWM_DA) != 0) + { + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_DAC_CONFIG) & MCB_AA_DACON) == MCB_AA_DACON) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_DACMUTE_AA | (UINT32)((MCB_AA_DAC_FLAGL<<8)|MCB_AA_DAC_FLAGR), 0); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | (UINT32)MCI_AA_DAC_CONFIG, MCB_AA_NSMUTE); + } + + bRegCur = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_PWM_ANALOG_0); + bReg = psPowerInfo->abAnalog[0] & psPowerUpdate->abAnalog[0]; + if(McResCtrl_GetAPMode_AA() == eMCDRV_APM_OFF_AA) + { + /* wait CPPDRDY */ + dAnaRdyParam = 0; + if((bRegCur & MCB_AA_PWM_CP) == 0 && (bReg & MCB_AA_PWM_CP) == MCB_AA_PWM_CP) + { + dAnaRdyParam = MCB_AA_CPPDRDY; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_ANA_RDY_AA | dAnaRdyParam, 0); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_PWM_ANALOG_0, (bRegCur|MCB_AA_PWM_CP)); + } + } + + if((bReg & MCB_AA_PWM_VR) != 0 && (bRegCur & MCB_AA_PWM_VR) == 0) + {/* AP_VR changed */ + /* AP_xx down */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_PWM_ANALOG_0, MCI_AA_PWM_ANALOG_0_DEF); + } + else + { + bReg |= bRegCur; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_PWM_ANALOG_0, bReg); + } + + + /* Digital Power */ + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPADIF_AA) != 0 + && McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_DPADIF) != MCB_AA_DPADIF) + { + /* AD_MUTE */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_MUTE, MCB_AA_AD_MUTE); + /* DPADIF */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_DPADIF, MCB_AA_DPADIF); + } + + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPPDM_AA) != 0 + && (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PWM_DIGITAL_1) & MCB_AA_PWM_DPPDM) == 0) + { + /* PDM_MUTE */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_MUTE, MCB_AA_PDM_MUTE); + } + + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPBDSP_AA) != 0) + { + /* DPBDSP */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL_BDSP, MCB_AA_PWM_DPBDSP); + } + + /* DPDI*, DPPDM */ + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PWM_DIGITAL_1); + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI0_AA) != 0 || (dUpdate & MCDRV_POWINFO_DIGITAL_DP2_AA) != 0) + { + bReg |= MCB_AA_PWM_DPDI0; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI1_AA) != 0 || (dUpdate & MCDRV_POWINFO_DIGITAL_DP2_AA) != 0) + { + bReg |= MCB_AA_PWM_DPDI1; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI2_AA) != 0 || (dUpdate & MCDRV_POWINFO_DIGITAL_DP2_AA) != 0) + { + bReg |= MCB_AA_PWM_DPDI2; + } + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPPDM_AA) != 0) + { + bReg |= MCB_AA_PWM_DPPDM; + } + if(bReg != 0) + { + /* cannot set DP* & DPB at the same time */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL_1, bReg); + } + /* DPB */ + if((dUpdate & MCDRV_POWINFO_DIGITAL_DPB_AA) != 0) + { + bReg |= MCB_AA_PWM_DPB; + } + if(bReg != 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL_1, bReg); + } + + if((dUpdate & MCDRV_POWINFO_DIGITAL_DP2_AA) != 0 + && (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PWM_DIGITAL) & MCB_AA_PWM_DP2) == 0) + { + if((dUpdate & MCDRV_POWINFO_DIGITAL_DP0_AA) != 0) + { + /* DP2, DP1 */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL, (MCB_AA_PWM_DP2 | MCB_AA_PWM_DP1)); + if((dUpdate & MCDRV_POWINFO_DIGITAL_PLLRST0_AA) != 0) + { + /* PLLRST0 */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PLL_RST, MCB_AA_PLLRST0); + } + /* DP0 */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL, (MCB_AA_PWM_DP2 | MCB_AA_PWM_DP1 | MCB_AA_PWM_DP0)); + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + McSrv_ClockStop(); + } + else + { + /* DP2 */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PWM_DIGITAL, MCB_AA_PWM_DP2); + } + } + return sdRet; +} + +/**************************************************************************** + * McPacket_AddPathSet_AA + * + * Description: + * Add path update packet. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddPathSet_AA +( + void +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + + /* DI Pad */ + AddDIPad(); + + /* PAD(PDM) */ + AddPAD(); + + /* Digital Mixer Source */ + sdRet = AddSource(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + /* DIR*_START, DIT*_START */ + AddDIStart(); + + return sdRet; +} + +/**************************************************************************** + * AddDIPad + * + * Description: + * Add DI Pad setup packet. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void AddDIPad +( + void +) +{ + UINT8 bReg; + UINT8 bIsUsedDIR[3]; + MCDRV_INIT_INFO sInitInfo; + MCDRV_PATH_INFO sPathInfo; + MCDRV_DIO_INFO sDioInfo; + + McResCtrl_GetInitInfo_AA(&sInitInfo); + McResCtrl_GetPathInfo_AA(&sPathInfo); + McResCtrl_GetDioInfo_AA(&sDioInfo); + + /* SDIN_MSK2/1 */ + bReg = 0; + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR2_AA) == 0) + { + bReg |= MCB_AA_SDIN_MSK2; + bIsUsedDIR[2] = 0; + } + else + { + bIsUsedDIR[2] = 1; + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR1_AA) == 0) + { + bReg |= MCB_AA_SDIN_MSK1; + bIsUsedDIR[1] = 0; + } + else + { + bIsUsedDIR[1] = 1; + } + /* SDO_DDR2/1 */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_DIT2_AA, eMCDRV_DST_CH0_AA) == 0) + { + if(sInitInfo.bDioSdo2Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_SDO_DDR2; + } + } + else + { + bReg |= MCB_AA_SDO_DDR2; + } + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_DIT1_AA, eMCDRV_DST_CH0_AA) == 0) + { + if(sInitInfo.bDioSdo1Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_SDO_DDR1; + } + } + else + { + bReg |= MCB_AA_SDO_DDR1; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | (UINT32)MCI_AA_SD_MSK, bReg); + + /* SDIN_MSK0 */ + bReg = 0; + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR0_AA) == 0) + { + bReg |= MCB_AA_SDIN_MSK0; + bIsUsedDIR[0] = 0; + } + else + { + bIsUsedDIR[0] = 1; + } + /* SDO_DDR0 */ + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_DIT0_AA, eMCDRV_DST_CH0_AA) == 0) + { + if(sInitInfo.bDioSdo0Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_SDO_DDR0; + } + } + else + { + bReg |= MCB_AA_SDO_DDR0; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | (UINT32)MCI_AA_SD_MSK_1, bReg); + + /* BCLK_MSK*, BCLD_DDR*, LRCK_MSK*, LRCK_DDR* */ + bReg = 0; + if(bIsUsedDIR[2] == 0 && McResCtrl_GetDITSource_AA(eMCDRV_DIO_2_AA) == eMCDRV_SRC_NONE_AA) + { + bReg |= MCB_AA_BCLK_MSK2; + bReg |= MCB_AA_LRCK_MSK2; + if(sInitInfo.bDioClk2Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_BCLK_DDR2; + bReg |= MCB_AA_LRCK_DDR2; + } + } + else + { + if(sDioInfo.asPortInfo[2].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + bReg |= MCB_AA_BCLK_DDR2; + bReg |= MCB_AA_LRCK_DDR2; + } + } + if(bIsUsedDIR[1] == 0 && McResCtrl_GetDITSource_AA(eMCDRV_DIO_1_AA) == eMCDRV_SRC_NONE_AA) + { + bReg |= MCB_AA_BCLK_MSK1; + bReg |= MCB_AA_LRCK_MSK1; + if(sInitInfo.bDioClk1Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_BCLK_DDR1; + bReg |= MCB_AA_LRCK_DDR1; + } + } + else + { + if(sDioInfo.asPortInfo[1].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + bReg |= MCB_AA_BCLK_DDR1; + bReg |= MCB_AA_LRCK_DDR1; + } + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_BCLK_MSK, bReg); + + /* BCLK_MSK*, BCLD_DDR*, LRCK_MSK*, LRCK_DDR*, PCM_HIZ* */ + bReg = 0; + if(bIsUsedDIR[0] == 0 && McResCtrl_GetDITSource_AA(eMCDRV_DIO_0_AA) == eMCDRV_SRC_NONE_AA) + { + bReg |= MCB_AA_BCLK_MSK0; + bReg |= MCB_AA_LRCK_MSK0; + if(sInitInfo.bDioClk0Hiz == MCDRV_DAHIZ_LOW) + { + bReg |= MCB_AA_BCLK_DDR0; + bReg |= MCB_AA_LRCK_DDR0; + } + } + else + { + if(sDioInfo.asPortInfo[0].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + bReg |= MCB_AA_BCLK_DDR0; + bReg |= MCB_AA_LRCK_DDR0; + } + } + if(sInitInfo.bPcmHiz == MCDRV_PCMHIZ_HIZ) + { + bReg |= (MCB_AA_PCMOUT_HIZ2 | MCB_AA_PCMOUT_HIZ1 | MCB_AA_PCMOUT_HIZ0); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_BCLK_MSK_1, bReg); +} + +/**************************************************************************** + * AddPAD + * + * Description: + * Add PAD setup packet. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void AddPAD +( + void +) +{ + UINT8 bReg; + MCDRV_INIT_INFO sInitInfo; + + McResCtrl_GetInitInfo_AA(&sInitInfo); + + /* PA*_MSK */ + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PA_MSK_1); + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_PDM_AA) == 0) + { + bReg |= MCB_AA_PA0_MSK; + if(sInitInfo.bPad1Func == MCDRV_PAD_PDMDI) + { + bReg |= MCB_AA_PA1_MSK; + } + } + else + { + bReg &= (UINT8)~MCB_AA_PA0_MSK; + if(sInitInfo.bPad1Func == MCDRV_PAD_PDMDI) + { + bReg &= (UINT8)~MCB_AA_PA1_MSK; + } + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PA_MSK_1, bReg); +} + +/**************************************************************************** + * AddSource + * + * Description: + * Add source setup packet. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +static SINT32 AddSource +( + void +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + UINT8 bAEng6 = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_AENG6_SOURCE); + UINT8 bRegAESource = 0; + UINT8 bAESourceChange = 0; + UINT32 dXFadeParam = 0; + MCDRV_SRC_TYPE_AA eAESource = McResCtrl_GetAESource_AA(); + MCDRV_PATH_INFO sPathInfo; + MCDRV_DAC_INFO sDacInfo; + MCDRV_AE_INFO sAeInfo; + + McResCtrl_GetPathInfo_AA(&sPathInfo); + McResCtrl_GetAeInfo_AA(&sAeInfo); + + switch(eAESource) + { + case eMCDRV_SRC_PDM_AA: bRegAESource = MCB_AA_AE_SOURCE_AD; bAEng6 = MCB_AA_AENG6_PDM; break; + case eMCDRV_SRC_ADC0_AA: bRegAESource = MCB_AA_AE_SOURCE_AD; bAEng6 = MCB_AA_AENG6_ADC0; break; + case eMCDRV_SRC_DIR0_AA: bRegAESource = MCB_AA_AE_SOURCE_DIR0; break; + case eMCDRV_SRC_DIR1_AA: bRegAESource = MCB_AA_AE_SOURCE_DIR1; break; + case eMCDRV_SRC_DIR2_AA: bRegAESource = MCB_AA_AE_SOURCE_DIR2; break; + case eMCDRV_SRC_MIX_AA: bRegAESource = MCB_AA_AE_SOURCE_MIX; break; + default: bRegAESource = 0; + } + if(bRegAESource != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_SRC_SOURCE_1)&0xF0)) + { + /* xxx_INS */ + dXFadeParam = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DAC_INS); + dXFadeParam <<= 8; + dXFadeParam |= McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_INS); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_DAC_INS, 0); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_INS, 0); + bAESourceChange = 1; + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + } + + McResCtrl_GetDacInfo_AA(&sDacInfo); + + /* DAC_SOURCE/VOICE_SOURCE */ + bReg = 0; + switch(McResCtrl_GetDACSource_AA(eMCDRV_DAC_MASTER_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg |= MCB_AA_DAC_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_PDM; + break; + case eMCDRV_SRC_ADC0_AA: + bReg |= MCB_AA_DAC_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_ADC0; + break; + case eMCDRV_SRC_DIR0_AA: + bReg |= MCB_AA_DAC_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg |= MCB_AA_DAC_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg |= MCB_AA_DAC_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg |= MCB_AA_DAC_SOURCE_MIX; + break; + default: + break; + } + switch(McResCtrl_GetDACSource_AA(eMCDRV_DAC_VOICE_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg |= MCB_AA_VOICE_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_PDM; + break; + case eMCDRV_SRC_ADC0_AA: + bReg |= MCB_AA_VOICE_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_ADC0; + break; + case eMCDRV_SRC_DIR0_AA: + bReg |= MCB_AA_VOICE_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg |= MCB_AA_VOICE_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg |= MCB_AA_VOICE_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg |= MCB_AA_VOICE_SOURCE_MIX; + break; + default: + break; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_SOURCE, bReg); + + /* SWP/VOICE_SWP */ + bReg = (sDacInfo.bMasterSwap << 4) | sDacInfo.bVoiceSwap; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_SWP, bReg); + + /* DIT0SRC_SOURCE/DIT1SRC_SOURCE */ + bReg = 0; + switch(McResCtrl_GetDITSource_AA(eMCDRV_DIO_0_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg |= MCB_AA_DIT0_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_PDM; + break; + case eMCDRV_SRC_ADC0_AA: + bReg |= MCB_AA_DIT0_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_ADC0; + break; + case eMCDRV_SRC_DIR0_AA: + bReg |= MCB_AA_DIT0_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg |= MCB_AA_DIT0_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg |= MCB_AA_DIT0_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg |= MCB_AA_DIT0_SOURCE_MIX; + break; + default: + break; + } + switch(McResCtrl_GetDITSource_AA(eMCDRV_DIO_1_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg |= MCB_AA_DIT1_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_PDM; + break; + case eMCDRV_SRC_ADC0_AA: + bReg |= MCB_AA_DIT1_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_ADC0; + break; + case eMCDRV_SRC_DIR0_AA: + bReg |= MCB_AA_DIT1_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg |= MCB_AA_DIT1_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg |= MCB_AA_DIT1_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg |= MCB_AA_DIT1_SOURCE_MIX; + break; + default: + break; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_SRC_SOURCE, bReg); + + /* AE_SOURCE/DIT2SRC_SOURCE */ + bReg = bRegAESource; + switch(McResCtrl_GetDITSource_AA(eMCDRV_DIO_2_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg |= MCB_AA_DIT2_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_PDM; + break; + case eMCDRV_SRC_ADC0_AA: + bReg |= MCB_AA_DIT2_SOURCE_AD; + bAEng6 = MCB_AA_AENG6_ADC0; + break; + case eMCDRV_SRC_DIR0_AA: + bReg |= MCB_AA_DIT2_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg |= MCB_AA_DIT2_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg |= MCB_AA_DIT2_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg |= MCB_AA_DIT2_SOURCE_MIX; + break; + default: + break; + } + if(bAESourceChange != 0) + { + /* wait xfade complete */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_INSFLG_AA | dXFadeParam, 0); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_SRC_SOURCE_1, bReg); + + /* BDSP_ST */ + if(McResCtrl_GetAESource_AA() == eMCDRV_SRC_NONE_AA) + {/* AE is unused */ + /* BDSP stop & reset */ + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_A_AA, MCI_AA_BDSP_ST)&MCB_AA_BDSP_ST) != 0) + { + bReg = 0; + if((sAeInfo.bOnOff & MCDRV_EQ5_ON) != 0) + { + bReg |= MCB_AA_EQ5ON; + } + if((sAeInfo.bOnOff & MCDRV_DRC_ON) != 0) + { + bReg |= MCB_AA_DRCON; + } + if((sAeInfo.bOnOff & MCDRV_EQ3_ON) != 0) + { + bReg |= MCB_AA_EQ3ON; + } + if(McDevProf_IsValid(eMCDRV_FUNC_DBEX) == 1) + { + if((sAeInfo.bOnOff & MCDRV_BEXWIDE_ON) != 0) + { + bReg |= MCB_AA_DBEXON; + } + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | MCI_AA_BDSP_ST, bReg); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | MCI_AA_BDSP_RST, MCB_AA_TRAM_RST); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | MCI_AA_BDSP_RST, 0); + } + } + else + {/* AE is used */ + bReg = 0; + if((sAeInfo.bOnOff & MCDRV_EQ5_ON) != 0) + { + bReg |= MCB_AA_EQ5ON; + } + if((sAeInfo.bOnOff & MCDRV_DRC_ON) != 0) + { + bReg |= MCB_AA_DRCON; + bReg |= MCB_AA_BDSP_ST; + } + if((sAeInfo.bOnOff & MCDRV_EQ3_ON) != 0) + { + bReg |= MCB_AA_EQ3ON; + } + if(McDevProf_IsValid(eMCDRV_FUNC_DBEX) == 1) + { + if((sAeInfo.bOnOff & MCDRV_BEXWIDE_ON) != 0) + { + bReg |= MCB_AA_DBEXON; + bReg |= MCB_AA_BDSP_ST; + } + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | MCI_AA_BDSP_ST, bReg); + } + + /* check MIX SOURCE for AENG6_SOURCE */ + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_PDM_AA) != 0) + { + bAEng6 = MCB_AA_AENG6_PDM; + } + else if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_ADC0_AA) != 0) + { + bAEng6 = MCB_AA_AENG6_ADC0; + } + + /* AENG6_SOURCE */ + if(bAEng6 != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_AENG6_SOURCE)) + { + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_AD_START); + if((bReg & MCB_AA_AD_START) != 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_MUTE, MCB_AA_AD_MUTE); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_START, bReg&(UINT8)~MCB_AA_AD_START); + } + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM_START); + if((bReg & MCB_AA_PDM_START) != 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_MUTE, MCB_AA_PDM_MUTE); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_START, bReg&(UINT8)~MCB_AA_PDM_START); + } + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_AENG6_SOURCE, bAEng6); + + /* xxx_INS */ + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_AE_AA) != 0) + { + switch(eAESource) + { + case eMCDRV_SRC_PDM_AA: + case eMCDRV_SRC_ADC0_AA: + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_INS, MCB_AA_ADC_INS); + break; + case eMCDRV_SRC_DIR0_AA: + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_INS, MCB_AA_DIR0_INS); + break; + case eMCDRV_SRC_DIR1_AA: + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_INS, MCB_AA_DIR1_INS); + break; + case eMCDRV_SRC_DIR2_AA: + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_INS, MCB_AA_DIR2_INS); + break; + case eMCDRV_SRC_MIX_AA: + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_DAC_INS, MCB_AA_DAC_INS); + break; + default: + break; + } + } + + return sdRet; +} + +/**************************************************************************** + * AddDIStart + * + * Description: + * Add DIStart setup packet. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void AddDIStart +( + void +) +{ + UINT8 bReg; + MCDRV_PATH_INFO sPathInfo; + MCDRV_DIO_INFO sDioInfo; + + McResCtrl_GetPathInfo_AA(&sPathInfo); + McResCtrl_GetDioInfo_AA(&sDioInfo); + + /* DIR*_START, DIT*_START */ + bReg = 0; + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_0_AA) != eMCDRV_SRC_NONE_AA) + { + if(sDioInfo.asPortInfo[0].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + bReg |= MCB_AA_DITIM0_START; + } + bReg |= MCB_AA_DIT0_SRC_START; + bReg |= MCB_AA_DIT0_START; + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR0_AA) != 0) + { + if(sDioInfo.asPortInfo[0].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + bReg |= MCB_AA_DITIM0_START; + } + bReg |= MCB_AA_DIR0_SRC_START; + bReg |= MCB_AA_DIR0_START; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIX0_START, bReg); + + bReg = 0; + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_1_AA) != eMCDRV_SRC_NONE_AA) + { + if(sDioInfo.asPortInfo[1].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + bReg |= MCB_AA_DITIM1_START; + } + bReg |= MCB_AA_DIT1_SRC_START; + bReg |= MCB_AA_DIT1_START; + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR1_AA) != 0) + { + if(sDioInfo.asPortInfo[1].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + bReg |= MCB_AA_DITIM1_START; + } + bReg |= MCB_AA_DIR1_SRC_START; + bReg |= MCB_AA_DIR1_START; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIX1_START, bReg); + + bReg = 0; + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_2_AA) != eMCDRV_SRC_NONE_AA) + { + if(sDioInfo.asPortInfo[2].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + bReg |= MCB_AA_DITIM2_START; + } + bReg |= MCB_AA_DIT2_SRC_START; + bReg |= MCB_AA_DIT2_START; + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR2_AA) != 0) + { + if(sDioInfo.asPortInfo[2].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER) + { + bReg |= MCB_AA_DITIM2_START; + } + bReg |= MCB_AA_DIR2_SRC_START; + bReg |= MCB_AA_DIR2_START; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIX2_START, bReg); +} + +/**************************************************************************** + * McPacket_AddMixSet_AA + * + * Description: + * Add analog mixer set packet. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +SINT32 McPacket_AddMixSet_AA +( + void +) +{ + UINT8 bReg; + MCDRV_INIT_INFO sInitInfo; + MCDRV_PATH_INFO sPathInfo; + + McResCtrl_GetInitInfo_AA(&sInitInfo); + McResCtrl_GetPathInfo_AA(&sPathInfo); + + /* ADL_MIX */ + bReg = GetMicMixBit(&sPathInfo.asAdc0[0]); + if((sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_LI1MIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_ADL_MIX, bReg); + /* ADL_MONO */ + bReg = 0; + if((sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_MONO_LI1; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_ADL_MONO, bReg); + + /* ADR_MIX */ + bReg = GetMicMixBit(&sPathInfo.asAdc0[1]); + if((sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_LI1MIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_ADR_MIX, bReg); + /* ADR_MONO */ + bReg = 0; + if((sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_MONO_LI1; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_ADR_MONO, bReg); + + /* L1L_MIX */ + bReg = GetMicMixBit(&sPathInfo.asLout1[0]); + if((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_LI1MIX; + } + if((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_DAMIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LO1L_MIX, bReg); + /* L1L_MONO */ + bReg = 0; + if((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_MONO_LI1; + } + if((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_MONO_DA; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LO1L_MONO, bReg); + + /* L1R_MIX */ + if(sInitInfo.bLineOut1Dif != MCDRV_LINE_DIF) + { + bReg = GetMicMixBit(&sPathInfo.asLout1[1]); + if((sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON) + { + bReg |= MCB_AA_LI1MIX; + } + if((sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON) + { + bReg |= MCB_AA_DAMIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_LO1R_MIX, bReg); + } + + /* L2L_MIX */ + bReg = GetMicMixBit(&sPathInfo.asLout2[0]); + if((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_LI1MIX; + } + if((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_DAMIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LO2L_MIX, bReg); + /* L2L_MONO */ + bReg = 0; + if((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_MONO_LI1; + } + if((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_MONO_DA; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LO2L_MONO, bReg); + + /* L2R_MIX */ + if(sInitInfo.bLineOut2Dif != MCDRV_LINE_DIF) + { + bReg = GetMicMixBit(&sPathInfo.asLout2[1]); + if((sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON) + { + bReg |= MCB_AA_LI1MIX; + } + if((sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON) + { + bReg |= MCB_AA_DAMIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_LO2R_MIX, bReg); + } + + /* HPL_MIX */ + bReg = GetMicMixBit(&sPathInfo.asHpOut[0]); + if((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_LI1MIX; + } + if((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_DAMIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_HPL_MIX, bReg); + /* HPL_MONO */ + bReg = 0; + if((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_MONO_LI1; + } + if((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_MONO_DA; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_HPL_MONO, bReg); + + /* HPR_MIX */ + bReg = GetMicMixBit(&sPathInfo.asHpOut[1]); + if((sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON) + { + bReg |= MCB_AA_LI1MIX; + } + if((sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON) + { + bReg |= MCB_AA_DAMIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_HPR_MIX, bReg); + + /* SPL_MIX */ + bReg = 0; + if((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON + || (sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_LI1MIX; + } + if((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON + || (sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_DAMIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_SPL_MIX, bReg); + /* SPL_MONO */ + bReg = 0; + if((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_MONO_LI1; + } + if((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_MONO_DA; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_SPL_MONO, bReg); + + /* SPR_MIX */ + bReg = 0; + if((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON + || (sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_LI1MIX; + } + if((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON + || (sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_DAMIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_SPR_MIX, bReg); + /* SPR_MONO */ + bReg = 0; + if((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_MONO_LI1; + } + if((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON) + { + bReg |= MCB_AA_MONO_DA; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_SPR_MONO, bReg); + + /* RCV_MIX */ + bReg = GetMicMixBit(&sPathInfo.asRcOut[0]); + if((sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON) + { + bReg |= MCB_AA_LI1MIX; + } + if((sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON) + { + bReg |= MCB_AA_DALMIX; + } + if((sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON) + { + bReg |= MCB_AA_DARMIX; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_RC_MIX, bReg); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * GetMicMixBit + * + * Description: + * Get mic mixer bit. + * Arguments: + * source info + * Return: + * mic mixer bit + * + ****************************************************************************/ +static UINT8 GetMicMixBit +( + const MCDRV_CHANNEL* psChannel +) +{ + UINT8 bMicMix = 0; + + if((psChannel->abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON) + { + bMicMix |= MCB_AA_M1MIX; + } + if((psChannel->abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON) + { + bMicMix |= MCB_AA_M2MIX; + } + if((psChannel->abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON) + { + bMicMix |= MCB_AA_M3MIX; + } + return bMicMix; +} + +/**************************************************************************** + * McPacket_AddStart_AA + * + * Description: + * Add start packet. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddStart_AA +( + void +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + UINT8 bADStart = 0; + UINT8 bPDMStart = 0; + MCDRV_INIT_INFO sInitInfo; + MCDRV_PATH_INFO sPathInfo; + MCDRV_ADC_INFO sAdcInfo; + MCDRV_PDM_INFO sPdmInfo; + + McResCtrl_GetInitInfo_AA(&sInitInfo); + McResCtrl_GetPathInfo_AA(&sPathInfo); + McResCtrl_GetAdcInfo_AA(&sAdcInfo); + McResCtrl_GetPdmInfo_AA(&sPdmInfo); + + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC0_AA, eMCDRV_DST_CH0_AA) == 1 + || McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC0_AA, eMCDRV_DST_CH1_AA) == 1) + {/* ADC0 source is used */ + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_AD_START) & MCB_AA_AD_START) == 0) + { + bReg = (sAdcInfo.bAgcOn << 2) | sAdcInfo.bAgcAdjust; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_AGC, bReg); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_MUTE, MCB_AA_AD_MUTE); + bReg = (sAdcInfo.bMono << 1) | MCB_AA_AD_START; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_START, bReg); + bADStart = 1; + } + } + else if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_PDM_AA) != 0) + {/* PDM is used */ + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM_START) & MCB_AA_PDM_START) == 0) + { + bReg = (sPdmInfo.bAgcOn << 2) | sPdmInfo.bAgcAdjust; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_AGC, bReg); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_MUTE, MCB_AA_PDM_MUTE); + bReg = (sPdmInfo.bMono << 1) | MCB_AA_PDM_START; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_START, bReg); + bPDMStart = 1; + } + } + + if(bADStart == 1 || bPDMStart == 1) + { + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_TIMWAIT_AA | sInitInfo.sWaitTime.dAdHpf, 0); + if(bADStart == 1) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_MUTE, 0); + } + else + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_MUTE, 0); + } + } + return sdRet; +} + +/**************************************************************************** + * McPacket_AddStop_AA + * + * Description: + * Add stop packet. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +SINT32 McPacket_AddStop_AA +( + void +) +{ + UINT8 bReg; + + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIX0_START); + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_0_AA) == eMCDRV_SRC_NONE_AA) + {/* DIT is unused */ + bReg &= (UINT8)~MCB_AA_DIT0_SRC_START; + bReg &= (UINT8)~MCB_AA_DIT0_START; + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR0_AA) == 0) + {/* DIR is unused */ + bReg &= (UINT8)~MCB_AA_DIR0_SRC_START; + bReg &= (UINT8)~MCB_AA_DIR0_START; + } + if((bReg & 0x0F) == 0) + { + bReg &= (UINT8)~MCB_AA_DITIM0_START; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIX0_START, bReg); + + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIX1_START); + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_1_AA) == eMCDRV_SRC_NONE_AA) + {/* DIT is unused */ + bReg &= (UINT8)~MCB_AA_DIT1_SRC_START; + bReg &= (UINT8)~MCB_AA_DIT1_START; + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR1_AA) == 0) + {/* DIR is unused */ + bReg &= (UINT8)~MCB_AA_DIR1_SRC_START; + bReg &= (UINT8)~MCB_AA_DIR1_START; + } + if((bReg & 0x0F) == 0) + { + bReg &= (UINT8)~MCB_AA_DITIM1_START; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIX1_START, bReg); + + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIX2_START); + if(McResCtrl_GetDITSource_AA(eMCDRV_DIO_2_AA) == eMCDRV_SRC_NONE_AA) + {/* DIT is unused */ + bReg &= (UINT8)~MCB_AA_DIT2_SRC_START; + bReg &= (UINT8)~MCB_AA_DIT2_START; + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_DIR2_AA) == 0) + {/* DIR is unused */ + bReg &= (UINT8)~MCB_AA_DIR2_SRC_START; + bReg &= (UINT8)~MCB_AA_DIR2_START; + } + if((bReg & 0x0F) == 0) + { + bReg &= (UINT8)~MCB_AA_DITIM2_START; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIX2_START, bReg); + + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC0_AA, eMCDRV_DST_CH0_AA) == 0 + && McResCtrl_IsDstUsed_AA(eMCDRV_DST_ADC0_AA, eMCDRV_DST_CH1_AA) == 0) + {/* ADC0 source is unused */ + AddStopADC(); + } + if(McResCtrl_IsSrcUsed_AA(eMCDRV_SRC_PDM_AA) == 0) + {/* PDM is unused */ + AddStopPDM(); + } + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * McPacket_AddVol_AA + * + * Description: + * Add volume mute packet. + * Arguments: + * dUpdate target volume items + * eMode update mode + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +SINT32 McPacket_AddVol_AA +( + UINT32 dUpdate, + MCDRV_VOLUPDATE_MODE_AA eMode +) +{ + UINT8 bVolL; + UINT8 bVolR; + UINT8 bLAT; + UINT8 bReg; + UINT32 dSVolDoneParam = 0; + MCDRV_INIT_INFO sInitInfo; + MCDRV_VOL_INFO sVolInfo; + + McResCtrl_GetInitInfo_AA(&sInitInfo); + McResCtrl_GetVolReg_AA(&sVolInfo); + + if((dUpdate & MCDRV_VOLUPDATE_ANAOUT_ALL_AA) != (UINT32)0) + { + bVolL = (UINT8)sVolInfo.aswA_Hp[0]&MCB_AA_HPVOL_L; + bVolR = (UINT8)sVolInfo.aswA_Hp[1]&MCB_AA_HPVOL_R; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_HPVOL_L) & MCB_AA_HPVOL_L)) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA) || (bVolL == MCDRV_REG_MUTE)) + { + if(((eMode != eMCDRV_VOLUPDATE_MUTE_AA) || (bVolR == MCDRV_REG_MUTE)) + && (bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_HPVOL_R))) + { + bLAT = MCB_AA_ALAT_HP; + } + else + { + bLAT = 0; + } + bReg = bLAT|MCB_AA_SVOL_HP|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_HPVOL_L, bReg); + if(bVolL == MCDRV_REG_MUTE) + { + dSVolDoneParam |= (MCB_AA_HPL_BUSY<<8); + } + } + } + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA) || (bVolR == MCDRV_REG_MUTE)) + { + if((bVolR == MCDRV_REG_MUTE) && (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_HPVOL_R) != 0)) + { + dSVolDoneParam |= (UINT8)MCB_AA_HPR_BUSY; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_HPVOL_R, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswA_Sp[0]&MCB_AA_SPVOL_L; + bVolR = (UINT8)sVolInfo.aswA_Sp[1]&MCB_AA_SPVOL_R; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_SPVOL_L) & MCB_AA_SPVOL_L)) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA) || (bVolL == MCDRV_REG_MUTE)) + { + if(((eMode != eMCDRV_VOLUPDATE_MUTE_AA) || (bVolR == MCDRV_REG_MUTE)) + && (bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_SPVOL_R))) + { + bLAT = MCB_AA_ALAT_SP; + } + else + { + bLAT = 0; + } + bReg = bLAT|MCB_AA_SVOL_SP|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_SPVOL_L, bReg); + if(bVolL == MCDRV_REG_MUTE) + { + dSVolDoneParam |= (MCB_AA_SPL_BUSY<<8); + } + } + } + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA) || (bVolR == MCDRV_REG_MUTE)) + { + if((bVolR == MCDRV_REG_MUTE) && (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_SPVOL_R) != 0)) + { + dSVolDoneParam |= (UINT8)MCB_AA_SPR_BUSY; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_SPVOL_R, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswA_Rc[0]&MCB_AA_RCVOL; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_RCVOL) & MCB_AA_RCVOL)) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA) || (bVolL == MCDRV_REG_MUTE)) + { + bReg = MCB_AA_SVOL_RC|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | (UINT32)MCI_AA_RCVOL, bReg); + if(bVolL == MCDRV_REG_MUTE) + { + dSVolDoneParam |= (MCB_AA_RC_BUSY<<8); + } + } + } + + bVolL = (UINT8)sVolInfo.aswA_Lout1[0]&MCB_AA_LO1VOL_L; + bVolR = (UINT8)sVolInfo.aswA_Lout1[1]&MCB_AA_LO1VOL_R; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_LO1VOL_L) & MCB_AA_LO1VOL_L)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_LO1VOL_R)) + { + bLAT = MCB_AA_ALAT_LO1; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LO1VOL_L, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LO1VOL_R, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswA_Lout2[0]&MCB_AA_LO2VOL_L; + bVolR = (UINT8)sVolInfo.aswA_Lout2[1]&MCB_AA_LO2VOL_R; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_LO2VOL_L) & MCB_AA_LO2VOL_L)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_LO2VOL_R)) + { + bLAT = MCB_AA_ALAT_LO2; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LO2VOL_L, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LO2VOL_R, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswA_HpGain[0]; + if(bVolL != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_HP_GAIN)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_HP_GAIN, bVolL); + } + } + /* wait XX_BUSY */ + if(dSVolDoneParam != (UINT32)0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_SVOL_DONE_AA | dSVolDoneParam, 0); + } + } + if((dUpdate & (UINT32)~MCDRV_VOLUPDATE_ANAOUT_ALL_AA) != (UINT32)0) + { + bVolL = (UINT8)sVolInfo.aswA_Lin1[0]&MCB_AA_LI1VOL_L; + bVolR = (UINT8)sVolInfo.aswA_Lin1[1]&MCB_AA_LI1VOL_R; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_LI1VOL_L) & MCB_AA_LI1VOL_L)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_LI1VOL_R)) + { + bLAT = MCB_AA_ALAT_LI1; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LI1VOL_L, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LI1VOL_R, bVolR); + } + + if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1) + { + bVolL = (UINT8)sVolInfo.aswA_Lin2[0]&MCB_AA_LI2VOL_L; + bVolR = (UINT8)sVolInfo.aswA_Lin2[1]&MCB_AA_LI2VOL_R; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_LI2VOL_L) & MCB_AA_LI2VOL_L)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_LI2VOL_R)) + { + bLAT = MCB_AA_ALAT_LI2; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LI2VOL_L, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_LI2VOL_R, bVolR); + } + } + + bVolL = (UINT8)sVolInfo.aswA_Mic1[0]&MCB_AA_MC1VOL; + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_MC1VOL, bVolL); + } + bVolL = (UINT8)sVolInfo.aswA_Mic2[0]&MCB_AA_MC2VOL; + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_MC2VOL, bVolL); + } + bVolL = (UINT8)sVolInfo.aswA_Mic3[0]&MCB_AA_MC3VOL; + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_MC3VOL, bVolL); + } + + bVolL = (UINT8)sVolInfo.aswA_Ad0[0]&MCB_AA_ADVOL_L; + bVolR = (UINT8)sVolInfo.aswA_Ad0[1]&MCB_AA_ADVOL_R; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_ADVOL_L) & MCB_AA_ADVOL_L)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_ADVOL_R)) + { + bLAT = MCB_AA_ALAT_AD; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_ADVOL_L, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_ADVOL_R, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswA_Mic2Gain[0]&0x03; + bVolL = (UINT8)((bVolL << 4) & MCB_AA_MC2GAIN) | (UINT8)(sVolInfo.aswA_Mic1Gain[0]&MCB_AA_MC1GAIN); + bVolL |= ((sInitInfo.bMic2Sng << 6) & MCB_AA_MC2SNG); + bVolL |= ((sInitInfo.bMic1Sng << 2) & MCB_AA_MC1SNG); + if(eMode == eMCDRV_VOLUPDATE_MUTE_AA) + { + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_MC_GAIN); + if(((bReg & MCB_AA_MC2GAIN) == 0) && ((bReg & MCB_AA_MC1GAIN) == 0)) + { + ; + } + else + { + if((bReg & MCB_AA_MC2GAIN) == 0) + { + bVolL &= (UINT8)~MCB_AA_MC2GAIN; + } + else if((bReg & MCB_AA_MC1GAIN) == 0) + { + bVolL &= (UINT8)~MCB_AA_MC1GAIN; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_MC_GAIN, bVolL); + } + } + else + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_MC_GAIN, bVolL); + } + + bVolL = (UINT8)(sVolInfo.aswA_Mic3Gain[0]&MCB_AA_MC3GAIN) | ((sInitInfo.bMic3Sng << 2) & MCB_AA_MC3SNG); + if(eMode == eMCDRV_VOLUPDATE_MUTE_AA) + { + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_MC3_GAIN); + if((bReg & MCB_AA_MC3GAIN) == 0) + { + ; + } + else + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_MC3_GAIN, bVolL); + } + } + else + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_MC3_GAIN, bVolL); + } + + bVolL = (UINT8)sVolInfo.aswD_Dit0[0]&MCB_AA_DIT0_INVOLL; + bVolR = (UINT8)sVolInfo.aswD_Dit0[1]&MCB_AA_DIT0_INVOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT0_INVOLL) & MCB_AA_DIT0_INVOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT0_INVOLR)) + { + bLAT = MCB_AA_DIT0_INLAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT0_INVOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT0_INVOLR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Dit1[0]&MCB_AA_DIT1_INVOLL; + bVolR = (UINT8)sVolInfo.aswD_Dit1[1]&MCB_AA_DIT1_INVOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT1_INVOLL) & MCB_AA_DIT1_INVOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT1_INVOLR)) + { + bLAT = MCB_AA_DIT1_INLAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT1_INVOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT1_INVOLR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Dit2[0]&MCB_AA_DIT2_INVOLL; + bVolR = (UINT8)sVolInfo.aswD_Dit2[1]&MCB_AA_DIT2_INVOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT2_INVOLL) & MCB_AA_DIT2_INVOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT2_INVOLR)) + { + bLAT = MCB_AA_DIT2_INLAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT2_INVOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT2_INVOLR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Pdm[0]&MCB_AA_PDM0_VOLL; + bVolR = (UINT8)sVolInfo.aswD_Pdm[1]&MCB_AA_PDM0_VOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM0_VOLL) & MCB_AA_PDM0_VOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM0_VOLR)) + { + bLAT = MCB_AA_PDM0_INLAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM0_VOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM0_VOLR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Dir0[0]&MCB_AA_DIR0_VOLL; + bVolR = (UINT8)sVolInfo.aswD_Dir0[1]&MCB_AA_DIR0_VOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR0_VOLL) & MCB_AA_DIR0_VOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR0_VOLR)) + { + bLAT = MCB_AA_DIR0_LAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR0_VOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR0_VOLR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Dir1[0]&MCB_AA_DIR1_VOLL; + bVolR = (UINT8)sVolInfo.aswD_Dir1[1]&MCB_AA_DIR1_VOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR1_VOLL) & MCB_AA_DIR1_VOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR1_VOLR)) + { + bLAT = MCB_AA_DIR1_LAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR1_VOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR1_VOLR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Dir2[0]&MCB_AA_DIR2_VOLL; + bVolR = (UINT8)sVolInfo.aswD_Dir2[1]&MCB_AA_DIR2_VOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR2_VOLL) & MCB_AA_DIR2_VOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR2_VOLR)) + { + bLAT = MCB_AA_DIR2_LAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR2_VOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR2_VOLR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Ad0[0]&MCB_AA_ADC_VOLL; + bVolR = (UINT8)sVolInfo.aswD_Ad0[1]&MCB_AA_ADC_VOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_ADC_VOLL) & MCB_AA_ADC_VOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_ADC_VOLR)) + { + bLAT = MCB_AA_ADC_LAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_ADC_VOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_ADC_VOLR, bVolR); + } + + if(McDevProf_IsValid(eMCDRV_FUNC_ADC1) == 1) + { +#if 0 + bVolL = (UINT8)sVolInfo.aswD_Ad1[0]&MCB_AA_ADC1_VOLL; + bVolR = (UINT8)sVolInfo.aswD_Ad1[1]&MCB_AA_ADC1_VOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_ADC1_VOLL) & MCB_AA_ADC1_VOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_ADC1_VOLR)) + { + bLAT = MCB_AA_ADC_LAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_ADC1_VOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_ADC1_VOLR, bVolR); + } +#endif + } + + bVolL = (UINT8)sVolInfo.aswD_Aeng6[0]&MCB_AA_AENG6_VOLL; + bVolR = (UINT8)sVolInfo.aswD_Aeng6[1]&MCB_AA_AENG6_VOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_AENG6_VOLL) & MCB_AA_AENG6_VOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_AENG6_VOLR)) + { + bLAT = MCB_AA_AENG6_LAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_AENG6_VOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_AENG6_VOLR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Ad0Att[0]&MCB_AA_ADC_ATTL; + bVolR = (UINT8)sVolInfo.aswD_Ad0Att[1]&MCB_AA_ADC_ATTR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_ADC_ATTL) & MCB_AA_ADC_ATTL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_ADC_ATTR)) + { + bLAT = MCB_AA_ADC_ALAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_ADC_ATTL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_ADC_ATTR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Dir0Att[0]&MCB_AA_DIR0_ATTL; + bVolR = (UINT8)sVolInfo.aswD_Dir0Att[1]&MCB_AA_DIR0_ATTR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR0_ATTL) & MCB_AA_DIR0_ATTL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR0_ATTR)) + { + bLAT = MCB_AA_DIR0_ALAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR0_ATTL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR0_ATTR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Dir1Att[0]&MCB_AA_DIR1_ATTL; + bVolR = (UINT8)sVolInfo.aswD_Dir1Att[1]&MCB_AA_DIR1_ATTR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR1_ATTL) & MCB_AA_DIR1_ATTL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR1_ATTR)) + { + bLAT = MCB_AA_DIR1_ALAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR1_ATTL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR1_ATTR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_Dir2Att[0]&MCB_AA_DIR2_ATTL; + bVolR = (UINT8)sVolInfo.aswD_Dir2Att[1]&MCB_AA_DIR2_ATTR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR2_ATTL) & MCB_AA_DIR2_ATTL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR2_ATTR)) + { + bLAT = MCB_AA_DIR2_ALAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR2_ATTL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIR2_ATTR, bVolR); + } + + if(McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_AENG6_SOURCE) == MCB_AA_AENG6_PDM) + { + bVolL = (UINT8)sVolInfo.aswD_SideTone[0]&MCB_AA_ST_VOLL; + bVolR = (UINT8)sVolInfo.aswD_SideTone[1]&MCB_AA_ST_VOLR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_ST_VOLL) & MCB_AA_ST_VOLL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_ST_VOLR)) + { + bLAT = MCB_AA_ST_LAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_ST_VOLL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_ST_VOLR, bVolR); + } + } + + bVolL = (UINT8)sVolInfo.aswD_DacMaster[0]&MCB_AA_MASTER_OUTL; + bVolR = (UINT8)sVolInfo.aswD_DacMaster[1]&MCB_AA_MASTER_OUTR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_MASTER_OUTL) & MCB_AA_MASTER_OUTL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_MASTER_OUTR)) + { + bLAT = MCB_AA_MASTER_OLAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_MASTER_OUTL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_MASTER_OUTR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_DacVoice[0]&MCB_AA_VOICE_ATTL; + bVolR = (UINT8)sVolInfo.aswD_DacVoice[1]&MCB_AA_VOICE_ATTR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_VOICE_ATTL) & MCB_AA_VOICE_ATTL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_VOICE_ATTR)) + { + bLAT = MCB_AA_VOICE_LAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_VOICE_ATTL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_VOICE_ATTR, bVolR); + } + + bVolL = (UINT8)sVolInfo.aswD_DacAtt[0]&MCB_AA_DAC_ATTL; + bVolR = (UINT8)sVolInfo.aswD_DacAtt[1]&MCB_AA_DAC_ATTR; + if(bVolL != (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DAC_ATTL) & MCB_AA_DAC_ATTL)) + { + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolL == MCDRV_REG_MUTE) + { + if((eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + && bVolR != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DAC_ATTR)) + { + bLAT = MCB_AA_DAC_LAT; + } + else + { + bLAT = 0; + } + bReg = bLAT|bVolL; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DAC_ATTL, bReg); + } + } + if(eMode != eMCDRV_VOLUPDATE_MUTE_AA || bVolR == MCDRV_REG_MUTE) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DAC_ATTR, bVolR); + } + } + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * AddStopADC + * + * Description: + * Add stop ADC packet. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void AddStopADC +( + void +) +{ + UINT8 bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_AD_START); + if((bReg & MCB_AA_AD_START) != 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_MUTE, MCB_AA_AD_MUTE); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_START, bReg&(UINT8)~MCB_AA_AD_START); + } +} + +/**************************************************************************** + * AddStopPDM + * + * Description: + * Add stop PDM packet. + * Arguments: + * none + * Return: + * none + * + ****************************************************************************/ +static void AddStopPDM +( + void +) +{ + UINT8 bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM_START); + if((bReg & MCB_AA_PDM_START) != 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_MUTE, MCB_AA_PDM_MUTE); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_START, bReg&(UINT8)~MCB_AA_PDM_START); + } +} + +/**************************************************************************** + * McPacket_AddDigitalIO_AA + * + * Description: + * Add DigitalI0 setup packet. + * Arguments: + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddDigitalIO_AA +( + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + MCDRV_DIO_INFO sDioInfo; + + if(IsModifiedDIO(dUpdateInfo) == 0) + { + return sdRet; + } + + McResCtrl_GetCurPowerInfo_AA(&sPowerInfo); + sdRet = PowerUpDig(MCDRV_DPB_UP_AA); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + if((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != (UINT32)0) + { + AddDIOCommon(eMCDRV_DIO_0_AA); + } + if((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != (UINT32)0) + { + AddDIOCommon(eMCDRV_DIO_1_AA); + } + if((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != (UINT32)0) + { + AddDIOCommon(eMCDRV_DIO_2_AA); + } + + /* DI*_BCKP */ + if((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != (UINT32)0) + { + McResCtrl_GetDioInfo_AA(&sDioInfo); + bReg = 0; + if(sDioInfo.asPortInfo[0].sDioCommon.bBckInvert == MCDRV_BCLK_INVERT) + { + bReg |= MCB_AA_DI0_BCKP; + } + if(sDioInfo.asPortInfo[1].sDioCommon.bBckInvert == MCDRV_BCLK_INVERT) + { + bReg |= MCB_AA_DI1_BCKP; + } + if(sDioInfo.asPortInfo[2].sDioCommon.bBckInvert == MCDRV_BCLK_INVERT) + { + bReg |= MCB_AA_DI2_BCKP; + } + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_BCKP)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | (UINT32)MCI_AA_BCKP, bReg); + } + } + + if((dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != (UINT32)0) + { + AddDIODIR(eMCDRV_DIO_0_AA); + } + if((dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != (UINT32)0) + { + AddDIODIR(eMCDRV_DIO_1_AA); + } + if((dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != (UINT32)0) + { + AddDIODIR(eMCDRV_DIO_2_AA); + } + + if((dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != (UINT32)0) + { + AddDIODIT(eMCDRV_DIO_0_AA); + } + if((dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != (UINT32)0) + { + AddDIODIT(eMCDRV_DIO_1_AA); + } + if((dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != (UINT32)0) + { + AddDIODIT(eMCDRV_DIO_2_AA); + } + + /* unused path power down */ + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = + sPowerUpdate.abAnalog[1] = + sPowerUpdate.abAnalog[2] = + sPowerUpdate.abAnalog[3] = + sPowerUpdate.abAnalog[4] = 0; + return McPacket_AddPowerDown_AA(&sPowerInfo, &sPowerUpdate); +} + +/**************************************************************************** + * IsModifiedDIO + * + * Description: + * Is modified DigitalIO. + * Arguments: + * dUpdateInfo update information + * Return: + * 0:not modified/1:modified + * + ****************************************************************************/ +static UINT8 IsModifiedDIO +( + UINT32 dUpdateInfo +) +{ + if((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != (UINT32)0 && IsModifiedDIOCommon(eMCDRV_DIO_0_AA) == 1) + { + return 1; + } + if((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != (UINT32)0 && IsModifiedDIOCommon(eMCDRV_DIO_1_AA) == 1) + { + return 1; + } + if((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != (UINT32)0 && IsModifiedDIOCommon(eMCDRV_DIO_2_AA) == 1) + { + return 1; + } + + if((dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != (UINT32)0 && IsModifiedDIODIR(eMCDRV_DIO_0_AA) == 1) + { + return 1; + } + if((dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != (UINT32)0 && IsModifiedDIODIR(eMCDRV_DIO_1_AA) == 1) + { + return 1; + } + if((dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != (UINT32)0 && IsModifiedDIODIR(eMCDRV_DIO_2_AA) == 1) + { + return 1; + } + + if((dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != (UINT32)0 && IsModifiedDIODIT(eMCDRV_DIO_0_AA) == 1) + { + return 1; + } + if((dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != (UINT32)0 && IsModifiedDIODIT(eMCDRV_DIO_1_AA) == 1) + { + return 1; + } + if((dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != (UINT32)0 && IsModifiedDIODIT(eMCDRV_DIO_2_AA) == 1) + { + return 1; + } + return 0; +} + +/**************************************************************************** + * IsModifiedDIOCommon + * + * Description: + * Is modified DigitalIO Common. + * Arguments: + * ePort port number + * Return: + * 0:not modified/1:modified + * + ****************************************************************************/ +static UINT8 IsModifiedDIOCommon +( + MCDRV_DIO_PORT_NO_AA ePort +) +{ + UINT8 bReg; + UINT8 bRegOffset; + MCDRV_DIO_INFO sDioInfo; + + if(ePort == eMCDRV_DIO_0_AA) + { + bRegOffset = 0; + } + else if(ePort == eMCDRV_DIO_1_AA) + { + bRegOffset = MCI_AA_DIMODE1 - MCI_AA_DIMODE0; + } + else if(ePort == eMCDRV_DIO_2_AA) + { + bRegOffset = MCI_AA_DIMODE2 - MCI_AA_DIMODE0; + } + else + { + return 0; + } + + McResCtrl_GetDioInfo_AA(&sDioInfo); + + if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIMODE0+bRegOffset)) + { + return 1; + } + + bReg = (sDioInfo.asPortInfo[ePort].sDioCommon.bAutoFs << 7) + | (sDioInfo.asPortInfo[ePort].sDioCommon.bBckFs << 4) + | sDioInfo.asPortInfo[ePort].sDioCommon.bFs; + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DI_FS0+bRegOffset)) + { + return 1; + } + + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DI0_SRC+bRegOffset); + if(sDioInfo.asPortInfo[ePort].sDioCommon.bAutoFs == 0 + && sDioInfo.asPortInfo[ePort].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE) + { + bReg |= MCB_AA_DICOMMON_SRC_RATE_SET; + } + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DI0_SRC+bRegOffset)) + { + return 1; + } + + if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_PCM) + { + bReg = (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmHizTim << 7) + | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmClkDown << 6) + | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmFrame << 5) + | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmHighPeriod); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_HIZ_REDGE0+bRegOffset)) + { + return 1; + } + } + return 0; +} + +/**************************************************************************** + * IsModifiedDIODIR + * + * Description: + * Is modified DigitalIO DIR. + * Arguments: + * ePort port number + * Return: + * 0:not modified/1:modified + * + ****************************************************************************/ +static UINT8 IsModifiedDIODIR +( + MCDRV_DIO_PORT_NO_AA ePort +) +{ + UINT8 bReg; + UINT8 bRegOffset; + MCDRV_DIO_INFO sDioInfo; + + if(ePort == eMCDRV_DIO_0_AA) + { + bRegOffset = 0; + } + else if(ePort == eMCDRV_DIO_1_AA) + { + bRegOffset = MCI_AA_DIMODE1 - MCI_AA_DIMODE0; + } + else if(ePort == eMCDRV_DIO_2_AA) + { + bRegOffset = MCI_AA_DIMODE2 - MCI_AA_DIMODE0; + } + else + { + return 0; + } + + McResCtrl_GetDioInfo_AA(&sDioInfo); + + bReg = (UINT8)(sDioInfo.asPortInfo[ePort].sDir.wSrcRate>>8); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIRSRC_RATE0_MSB+bRegOffset)) + { + return 1; + } + + bReg = (UINT8)sDioInfo.asPortInfo[ePort].sDir.wSrcRate; + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIRSRC_RATE0_LSB+bRegOffset)) + { + return 1; + } + + if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_DA) + { + bReg = (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bMode << 6) + | (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bBitSel << 4) + | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bMode << 2) + | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bBitSel); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIX0_FMT+bRegOffset)) + { + return 1; + } + /* DIR*_CH */ + bReg = (sDioInfo.asPortInfo[ePort].sDir.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDir.abSlot[0]); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR0_CH+bRegOffset)) + { + return 1; + } + } + else + { + /* PCM_MONO_RX*, PCM_EXTEND_RX*, PCM_LSBON_RX*, PCM_LAW_RX*, PCM_BIT_RX* */ + bReg = (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bMono << 7) + | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bOrder << 4) + | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bLaw << 2) + | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bBitSel); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PCM_RX0+bRegOffset)) + { + return 1; + } + /* PCM_CH1_RX*, PCM_CH0_RX* */ + bReg = (sDioInfo.asPortInfo[ePort].sDir.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDir.abSlot[0]); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PCM_SLOT_RX0+bRegOffset)) + { + return 1; + } + } + return 0; +} + +/**************************************************************************** + * IsModifiedDIODIT + * + * Description: + * Is modified DigitalIO DIT. + * Arguments: + * ePort port number + * Return: + * 0:not modified/1:modified + * + ****************************************************************************/ +static UINT8 IsModifiedDIODIT +( + MCDRV_DIO_PORT_NO_AA ePort +) +{ + UINT8 bReg; + UINT8 bRegOffset; + MCDRV_DIO_INFO sDioInfo; + + if(ePort == eMCDRV_DIO_0_AA) + { + bRegOffset = 0; + } + else if(ePort == eMCDRV_DIO_1_AA) + { + bRegOffset = MCI_AA_DIMODE1 - MCI_AA_DIMODE0; + } + else if(ePort == eMCDRV_DIO_2_AA) + { + bRegOffset = MCI_AA_DIMODE2 - MCI_AA_DIMODE0; + } + else + { + return 0; + } + + McResCtrl_GetDioInfo_AA(&sDioInfo); + + bReg = (UINT8)(sDioInfo.asPortInfo[ePort].sDit.wSrcRate>>8); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DITSRC_RATE0_MSB+bRegOffset)) + { + return 1; + } + bReg = (UINT8)sDioInfo.asPortInfo[ePort].sDit.wSrcRate; + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DITSRC_RATE0_LSB+bRegOffset)) + { + return 1; + } + + if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_DA) + { + /* DIT*_FMT, DIT*_BIT, DIR*_FMT, DIR*_BIT */ + bReg = (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bMode << 6) + | (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bBitSel << 4) + | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bMode << 2) + | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bBitSel); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIX0_FMT+bRegOffset)) + { + return 1; + } + + /* DIT*_SLOT */ + bReg = (sDioInfo.asPortInfo[ePort].sDit.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDit.abSlot[0]); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT0_SLOT+bRegOffset)) + { + return 1; + } + } + else + { + /* PCM_MONO_TX*, PCM_EXTEND_TX*, PCM_LSBON_TX*, PCM_LAW_TX*, PCM_BIT_TX* */ + bReg = (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bMono << 7) + | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bOrder << 4) + | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bLaw << 2) + | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bBitSel); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PCM_TX0+bRegOffset)) + { + return 1; + } + + /* PCM_CH1_TX*, PCM_CH0_TX* */ + bReg = (sDioInfo.asPortInfo[ePort].sDit.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDit.abSlot[0]); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PCM_SLOT_TX0+bRegOffset)) + { + return 1; + } + } + return 0; +} + +/**************************************************************************** + * AddDIOCommon + * + * Description: + * Add DigitalI0 Common setup packet. + * Arguments: + * ePort port number + * Return: + * none + * + ****************************************************************************/ +static void AddDIOCommon +( + MCDRV_DIO_PORT_NO_AA ePort +) +{ + UINT8 bReg; + UINT8 bRegOffset; + MCDRV_DIO_INFO sDioInfo; + + if(ePort == eMCDRV_DIO_0_AA) + { + bRegOffset = 0; + } + else if(ePort == eMCDRV_DIO_1_AA) + { + bRegOffset = MCI_AA_DIMODE1 - MCI_AA_DIMODE0; + } + else if(ePort == eMCDRV_DIO_2_AA) + { + bRegOffset = MCI_AA_DIMODE2 - MCI_AA_DIMODE0; + } + else + { + return; + } + + McResCtrl_GetDioInfo_AA(&sDioInfo); + + /* DIMODE* */ + if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIMODE0+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DIMODE0+bRegOffset), + sDioInfo.asPortInfo[ePort].sDioCommon.bInterface); + } + + /* DIAUTO_FS*, DIBCK*, DIFS* */ + bReg = (sDioInfo.asPortInfo[ePort].sDioCommon.bAutoFs << 7) + | (sDioInfo.asPortInfo[ePort].sDioCommon.bBckFs << 4) + | sDioInfo.asPortInfo[ePort].sDioCommon.bFs; + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DI_FS0+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DI_FS0+bRegOffset), bReg); + } + + /* DI*_SRCRATE_SET */ + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DI0_SRC+bRegOffset); + if(sDioInfo.asPortInfo[ePort].sDioCommon.bAutoFs == 0 + && sDioInfo.asPortInfo[ePort].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE) + { + bReg |= MCB_AA_DICOMMON_SRC_RATE_SET; + } + else + { + bReg &= (UINT8)~MCB_AA_DICOMMON_SRC_RATE_SET; + } + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DI0_SRC+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DI0_SRC+bRegOffset), bReg); + } + + /* HIZ_REDGE*, PCM_CLKDOWN*, PCM_FRAME*, PCM_HPERIOD* */ + if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_PCM) + { + bReg = (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmHizTim << 7) + | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmClkDown << 6) + | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmFrame << 5) + | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmHighPeriod); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_HIZ_REDGE0+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_HIZ_REDGE0+bRegOffset), bReg); + } + } +} + +/**************************************************************************** + * AddDIODIR + * + * Description: + * Add DigitalI0 DIR setup packet. + * Arguments: + * ePort port number + * Return: + * none + * + ****************************************************************************/ +static void AddDIODIR +( + MCDRV_DIO_PORT_NO_AA ePort +) +{ + UINT8 bReg; + UINT8 bRegOffset; + UINT16 wSrcRate; + MCDRV_DIO_INFO sDioInfo; + + if(ePort == eMCDRV_DIO_0_AA) + { + bRegOffset = 0; + } + else if(ePort == eMCDRV_DIO_1_AA) + { + bRegOffset = MCI_AA_DIMODE1 - MCI_AA_DIMODE0; + } + else if(ePort == eMCDRV_DIO_2_AA) + { + bRegOffset = MCI_AA_DIMODE2 - MCI_AA_DIMODE0; + } + else + { + return; + } + + McResCtrl_GetDioInfo_AA(&sDioInfo); + + /* DIRSRC_RATE* */ + wSrcRate = sDioInfo.asPortInfo[ePort].sDir.wSrcRate; + if(wSrcRate == 0) + { + switch(sDioInfo.asPortInfo[ePort].sDioCommon.bFs) + { + case MCDRV_FS_48000: + wSrcRate = MCDRV_DIR_SRCRATE_48000_AA; + break; + case MCDRV_FS_44100: + wSrcRate = MCDRV_DIR_SRCRATE_44100_AA; + break; + case MCDRV_FS_32000: + wSrcRate = MCDRV_DIR_SRCRATE_32000_AA; + break; + case MCDRV_FS_24000: + wSrcRate = MCDRV_DIR_SRCRATE_24000_AA; + break; + case MCDRV_FS_22050: + wSrcRate = MCDRV_DIR_SRCRATE_22050_AA; + break; + case MCDRV_FS_16000: + wSrcRate = MCDRV_DIR_SRCRATE_16000_AA; + break; + case MCDRV_FS_12000: + wSrcRate = MCDRV_DIR_SRCRATE_12000_AA; + break; + case MCDRV_FS_11025: + wSrcRate = MCDRV_DIR_SRCRATE_11025_AA; + break; + case MCDRV_FS_8000: + wSrcRate = MCDRV_DIR_SRCRATE_8000_AA; + break; + default: + /* unreachable */ + wSrcRate = 0; + break; + } + } + bReg = (UINT8)(wSrcRate>>8); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIRSRC_RATE0_MSB+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DIRSRC_RATE0_MSB+bRegOffset), bReg); + } + bReg = (UINT8)wSrcRate; + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIRSRC_RATE0_LSB+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DIRSRC_RATE0_LSB+bRegOffset), bReg); + } + + /* DIT*_FMT, DIT*_BIT, DIR*_FMT, DIR*_BIT */ + if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_DA) + { + bReg = (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bMode << 6) + | (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bBitSel << 4) + | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bMode << 2) + | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bBitSel); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIX0_FMT+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DIX0_FMT+bRegOffset), bReg); + } + /* DIR*_CH */ + bReg = (sDioInfo.asPortInfo[ePort].sDir.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDir.abSlot[0]); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIR0_CH+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DIR0_CH+bRegOffset), bReg); + } + } + else + { + /* PCM_MONO_RX*, PCM_EXTEND_RX*, PCM_LSBON_RX*, PCM_LAW_RX*, PCM_BIT_RX* */ + bReg = (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bMono << 7) + | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bOrder << 4) + | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bLaw << 2) + | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bBitSel); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PCM_RX0+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_PCM_RX0+bRegOffset), bReg); + } + /* PCM_CH1_RX*, PCM_CH0_RX* */ + bReg = (sDioInfo.asPortInfo[ePort].sDir.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDir.abSlot[0]); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PCM_SLOT_RX0+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_PCM_SLOT_RX0+bRegOffset), bReg); + } + } +} + +/**************************************************************************** + * AddDIODIT + * + * Description: + * Add DigitalI0 DIT setup packet. + * Arguments: + * ePort port number + * Return: + * none + * + ****************************************************************************/ +static void AddDIODIT +( + MCDRV_DIO_PORT_NO_AA ePort +) +{ + UINT8 bReg; + UINT8 bRegOffset; + UINT16 wSrcRate; + MCDRV_DIO_INFO sDioInfo; + + if(ePort == eMCDRV_DIO_0_AA) + { + bRegOffset = 0; + } + else if(ePort == eMCDRV_DIO_1_AA) + { + bRegOffset = MCI_AA_DIMODE1 - MCI_AA_DIMODE0; + } + else if(ePort == eMCDRV_DIO_2_AA) + { + bRegOffset = MCI_AA_DIMODE2 - MCI_AA_DIMODE0; + } + else + { + return; + } + + McResCtrl_GetDioInfo_AA(&sDioInfo); + + wSrcRate = sDioInfo.asPortInfo[ePort].sDit.wSrcRate; + if(wSrcRate == 0) + { + switch(sDioInfo.asPortInfo[ePort].sDioCommon.bFs) + { + case MCDRV_FS_48000: + wSrcRate = MCDRV_DIT_SRCRATE_48000_AA; + break; + case MCDRV_FS_44100: + wSrcRate = MCDRV_DIT_SRCRATE_44100_AA; + break; + case MCDRV_FS_32000: + wSrcRate = MCDRV_DIT_SRCRATE_32000_AA; + break; + case MCDRV_FS_24000: + wSrcRate = MCDRV_DIT_SRCRATE_24000_AA; + break; + case MCDRV_FS_22050: + wSrcRate = MCDRV_DIT_SRCRATE_22050_AA; + break; + case MCDRV_FS_16000: + wSrcRate = MCDRV_DIT_SRCRATE_16000_AA; + break; + case MCDRV_FS_12000: + wSrcRate = MCDRV_DIT_SRCRATE_12000_AA; + break; + case MCDRV_FS_11025: + wSrcRate = MCDRV_DIT_SRCRATE_11025_AA; + break; + case MCDRV_FS_8000: + wSrcRate = MCDRV_DIT_SRCRATE_8000_AA; + break; + default: + /* unreachable */ + wSrcRate = 0; + break; + } + } + /* DITSRC_RATE* */ + bReg = (UINT8)(wSrcRate>>8); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DITSRC_RATE0_MSB+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DITSRC_RATE0_MSB+bRegOffset), bReg); + } + bReg = (UINT8)wSrcRate; + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DITSRC_RATE0_LSB+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DITSRC_RATE0_LSB+bRegOffset), bReg); + } + + if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_DA) + { + /* DIT*_FMT, DIT*_BIT, DIR*_FMT, DIR*_BIT */ + bReg = (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bMode << 6) + | (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bBitSel << 4) + | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bMode << 2) + | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bBitSel); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIX0_FMT+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DIX0_FMT+bRegOffset), bReg); + } + + /* DIT*_SLOT */ + bReg = (sDioInfo.asPortInfo[ePort].sDit.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDit.abSlot[0]); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT0_SLOT+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_DIT0_SLOT+bRegOffset), bReg); + } + } + else + { + /* PCM_MONO_TX*, PCM_EXTEND_TX*, PCM_LSBON_TX*, PCM_LAW_TX*, PCM_BIT_TX* */ + bReg = (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bMono << 7) + | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bOrder << 4) + | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bLaw << 2) + | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bBitSel); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PCM_TX0+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_PCM_TX0+bRegOffset), bReg); + } + + /* PCM_CH1_TX*, PCM_CH0_TX* */ + bReg = (sDioInfo.asPortInfo[ePort].sDit.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDit.abSlot[0]); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PCM_SLOT_TX0+bRegOffset)) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)(MCI_AA_PCM_SLOT_TX0+bRegOffset), bReg); + } + } +} + +/**************************************************************************** + * McPacket_AddDAC_AA + * + * Description: + * Add DAC setup packet. + * Arguments: + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddDAC_AA +( + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + MCDRV_DAC_INFO sDacInfo; + UINT8 bReg; + + McResCtrl_GetDacInfo_AA(&sDacInfo); + + if((dUpdateInfo & MCDRV_DAC_MSWP_UPDATE_FLAG) != (UINT32)0 || (dUpdateInfo & MCDRV_DAC_VSWP_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sDacInfo.bMasterSwap<<4)|sDacInfo.bVoiceSwap; + if(bReg == McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_SWP)) + { + dUpdateInfo &= ~(MCDRV_DAC_MSWP_UPDATE_FLAG|MCDRV_DAC_VSWP_UPDATE_FLAG); + } + } + if((dUpdateInfo & MCDRV_DAC_HPF_UPDATE_FLAG) != (UINT32)0) + { + if(sDacInfo.bDcCut == McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_DCCUTOFF)) + { + dUpdateInfo &= ~(MCDRV_DAC_HPF_UPDATE_FLAG); + } + } + if(dUpdateInfo == (UINT32)0) + { + return sdRet; + } + + McResCtrl_GetCurPowerInfo_AA(&sPowerInfo); + sdRet = PowerUpDig(MCDRV_DPB_UP_AA); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + if((dUpdateInfo & MCDRV_DAC_MSWP_UPDATE_FLAG) != (UINT32)0 || (dUpdateInfo & MCDRV_DAC_VSWP_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sDacInfo.bMasterSwap<<4)|sDacInfo.bVoiceSwap; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_SWP, bReg); + } + if((dUpdateInfo & MCDRV_DAC_HPF_UPDATE_FLAG) != (UINT32)0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_DCCUTOFF, sDacInfo.bDcCut); + } + + /* unused path power down */ + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = + sPowerUpdate.abAnalog[1] = + sPowerUpdate.abAnalog[2] = + sPowerUpdate.abAnalog[3] = + sPowerUpdate.abAnalog[4] = 0; + return McPacket_AddPowerDown_AA(&sPowerInfo, &sPowerUpdate); +} + +/**************************************************************************** + * McPacket_AddADC_AA + * + * Description: + * Add ADC setup packet. + * Arguments: + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddADC_AA +( + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + MCDRV_ADC_INFO sAdcInfo; + + McResCtrl_GetAdcInfo_AA(&sAdcInfo); + + if((dUpdateInfo & MCDRV_ADCADJ_UPDATE_FLAG) != (UINT32)0 || (dUpdateInfo & MCDRV_ADCAGC_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sAdcInfo.bAgcOn<<2)|sAdcInfo.bAgcAdjust; + if(bReg == McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_AD_AGC)) + { + dUpdateInfo &= ~(MCDRV_ADCADJ_UPDATE_FLAG|MCDRV_ADCAGC_UPDATE_FLAG); + } + } + if((dUpdateInfo & MCDRV_ADCMONO_UPDATE_FLAG) != (UINT32)0) + { + bReg = (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_AD_START) & MCB_AA_AD_START) | (sAdcInfo.bMono << 1); + if(bReg == McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_AD_START)) + { + dUpdateInfo &= ~(MCDRV_ADCMONO_UPDATE_FLAG); + } + } + + if(dUpdateInfo == (UINT32)0) + { + return sdRet; + } + + McResCtrl_GetCurPowerInfo_AA(&sPowerInfo); + sdRet = PowerUpDig(MCDRV_DPB_UP_AA); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + if((dUpdateInfo & MCDRV_ADCADJ_UPDATE_FLAG) != (UINT32)0 || (dUpdateInfo & MCDRV_ADCAGC_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sAdcInfo.bAgcOn<<2)|sAdcInfo.bAgcAdjust; + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_AD_AGC)) + { + AddStopADC(); + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_AGC, bReg); + } + if((dUpdateInfo & MCDRV_ADCMONO_UPDATE_FLAG) != (UINT32)0) + { + bReg = (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_AD_START) & MCB_AA_AD_START) | (sAdcInfo.bMono << 1); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_CODEC_AA, MCI_AA_AD_START)) + { + AddStopADC(); + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | MCI_AA_AD_START, (sAdcInfo.bMono << 1)); + } + + /* unused path power down */ + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = + sPowerUpdate.abAnalog[1] = + sPowerUpdate.abAnalog[2] = + sPowerUpdate.abAnalog[3] = + sPowerUpdate.abAnalog[4] = 0; + sdRet = McPacket_AddPowerDown_AA(&sPowerInfo, &sPowerUpdate); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + return McPacket_AddStart_AA(); +} + +/**************************************************************************** + * McPacket_AddSP_AA + * + * Description: + * Add SP setup packet. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +SINT32 McPacket_AddSP_AA +( + void +) +{ + MCDRV_SP_INFO sSpInfo; + UINT8 bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_SP_MODE) & (UINT8)~MCB_AA_SP_SWAP; + + McResCtrl_GetSpInfo_AA(&sSpInfo); + + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_SP_MODE, bReg|sSpInfo.bSwap); + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * McPacket_AddDNG_AA + * + * Description: + * Add Digital Noise Gate setup packet. + * Arguments: + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddDNG_AA +( + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_POWER_INFO_AA sCurPowerInfo; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + MCDRV_DNG_INFO sDngInfo; + UINT8 bReg; + + McResCtrl_GetDngInfo_AA(&sDngInfo); + + if((dUpdateInfo & MCDRV_DNGREL_HP_UPDATE_FLAG) != (UINT32)0 || (dUpdateInfo & MCDRV_DNGATK_HP_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sDngInfo.abRelease[0]<<4)|sDngInfo.abAttack[0]; + if(bReg == McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_DNGATRT)) + { + dUpdateInfo &= ~(MCDRV_DNGREL_HP_UPDATE_FLAG|MCDRV_DNGATK_HP_UPDATE_FLAG); + } + } + if((dUpdateInfo & MCDRV_DNGSW_HP_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_DNGTHRES_HP_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_DNGHOLD_HP_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sDngInfo.abThreshold[0]<<4)|(sDngInfo.abHold[0]<<1)|sDngInfo.abOnOff[0]; + if(bReg == McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_ANA_AA, MCI_AA_DNGON)) + { + dUpdateInfo &= ~(MCDRV_DNGSW_HP_UPDATE_FLAG|MCDRV_DNGTHRES_HP_UPDATE_FLAG|MCDRV_DNGHOLD_HP_UPDATE_FLAG); + } + } + if(dUpdateInfo == (UINT32)0) + { + return sdRet; + } + + McResCtrl_GetCurPowerInfo_AA(&sCurPowerInfo); + sPowerInfo = sCurPowerInfo; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP0_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP1_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP2_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_PLLRST0_AA; + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + if((dUpdateInfo & MCDRV_DNGREL_HP_UPDATE_FLAG) != (UINT32)0 || (dUpdateInfo & MCDRV_DNGATK_HP_UPDATE_FLAG) != (UINT32)0) + { + sPowerInfo.abAnalog[0] &= (UINT8)~MCB_AA_PWM_VR; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL_AA; + sPowerUpdate.abAnalog[1] = + sPowerUpdate.abAnalog[2] = + sPowerUpdate.abAnalog[3] = + sPowerUpdate.abAnalog[4] = 0; + } + sdRet = McPacket_AddPowerUp_AA(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + if((dUpdateInfo & MCDRV_DNGREL_HP_UPDATE_FLAG) != (UINT32)0 || (dUpdateInfo & MCDRV_DNGATK_HP_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sDngInfo.abRelease[0]<<4)|sDngInfo.abAttack[0]; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_DNGATRT, bReg); + } + if((dUpdateInfo & MCDRV_DNGSW_HP_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_DNGTHRES_HP_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_DNGHOLD_HP_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sDngInfo.abThreshold[0]<<4)|(sDngInfo.abHold[0]<<1)|sDngInfo.abOnOff[0]; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | MCI_AA_DNGON, bReg); + } + + /* restore power */ + return McPacket_AddPowerDown_AA(&sCurPowerInfo, &sPowerUpdate); +} + +/**************************************************************************** + * McPacket_AddAE_AA + * + * Description: + * Add Audio Engine setup packet. + * Arguments: + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddAE_AA +( + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + UINT8 i; + UINT32 dXFadeParam = 0; + MCDRV_AE_INFO sAeInfo; + MCDRV_PATH_INFO sPathInfo; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + + McResCtrl_GetPathInfo_AA(&sPathInfo); + McResCtrl_GetAeInfo_AA(&sAeInfo); + + if(McResCtrl_IsDstUsed_AA(eMCDRV_DST_AE_AA, eMCDRV_DST_CH0_AA) == 1) + {/* AE is used */ + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_A_AA, MCI_AA_BDSP_ST); + if(McDevProf_IsValid(eMCDRV_FUNC_DBEX) == 1) + { + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEXWIDE_ONOFF) != (UINT32)0) + { + if(((sAeInfo.bOnOff & MCDRV_BEXWIDE_ON) != 0 && (bReg & MCB_AA_DBEXON) != 0) + || ((sAeInfo.bOnOff & MCDRV_BEXWIDE_ON) == 0 && (bReg & MCB_AA_DBEXON) == 0)) + { + dUpdateInfo &= ~MCDRV_AEUPDATE_FLAG_BEXWIDE_ONOFF; + } + } + } + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC_ONOFF) != (UINT32)0) + { + if(((sAeInfo.bOnOff & MCDRV_DRC_ON) != 0 && (bReg & MCB_AA_DRCON) != 0) + || ((sAeInfo.bOnOff & MCDRV_DRC_ON) == 0 && (bReg & MCB_AA_DRCON) == 0)) + { + dUpdateInfo &= ~MCDRV_AEUPDATE_FLAG_DRC_ONOFF; + } + } + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5_ONOFF) != (UINT32)0) + { + if(((sAeInfo.bOnOff & MCDRV_EQ5_ON) != 0 && (bReg & MCB_AA_EQ5ON) != 0) + || ((sAeInfo.bOnOff & MCDRV_EQ5_ON) == 0 && (bReg & MCB_AA_EQ5ON) == 0)) + { + dUpdateInfo &= ~MCDRV_AEUPDATE_FLAG_EQ5_ONOFF; + } + } + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3_ONOFF) != (UINT32)0) + { + if(((sAeInfo.bOnOff & MCDRV_EQ3_ON) != 0 && (bReg & MCB_AA_EQ3ON) != 0) + || ((sAeInfo.bOnOff & MCDRV_EQ3_ON) == 0 && (bReg & MCB_AA_EQ3ON) == 0)) + { + dUpdateInfo &= ~MCDRV_AEUPDATE_FLAG_EQ3_ONOFF; + } + } + if(dUpdateInfo == (UINT32)0) + { + return sdRet; + } + + /* on/off setting or param changed */ + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5) != (UINT32)0 + || (dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3) != (UINT32)0 + || (dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEX) != (UINT32)0 + || (dUpdateInfo & MCDRV_AEUPDATE_FLAG_WIDE) != (UINT32)0 + || (dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC) != (UINT32)0 + || (dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEXWIDE_ONOFF) != (UINT32)0 + || (dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC_ONOFF) != (UINT32)0 + || (dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5_ONOFF) != (UINT32)0 + || (dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3_ONOFF) != (UINT32)0) + { + dXFadeParam = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DAC_INS); + dXFadeParam <<= 8; + dXFadeParam |= McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_INS); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_DAC_INS, 0); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_INS, 0); + } + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + /* wait xfade complete */ + if(dXFadeParam != (UINT32)0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_INSFLG_AA | dXFadeParam, 0); + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_A_AA, MCI_AA_BDSP_ST); + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5) != (UINT32)0) + { + bReg &= (UINT8)~MCB_AA_EQ5ON; + } + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3) != (UINT32)0) + { + bReg &= (UINT8)~MCB_AA_EQ3ON; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)MCI_AA_BDSP_ST, bReg); + } + + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_A_AA, MCI_AA_BDSP_ST); + if((bReg & MCB_AA_BDSP_ST) == MCB_AA_BDSP_ST) + { + /* Stop BDSP */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)MCI_AA_BDSP_ST, 0); + /* Reset TRAM */ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)MCI_AA_BDSP_RST, MCB_AA_TRAM_RST); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)MCI_AA_BDSP_RST, 0); + } + } + + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC) != (UINT32)0) + { + McResCtrl_GetPowerInfo_AA(&sPowerInfo); + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP0_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP1_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP2_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPBDSP_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_PLLRST0_AA; + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = + sPowerUpdate.abAnalog[1] = + sPowerUpdate.abAnalog[2] = + sPowerUpdate.abAnalog[3] = + sPowerUpdate.abAnalog[4] = 0; + sdRet = McPacket_AddPowerUp_AA(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)MCI_AA_BDSP_ADR, 0); + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + McDevIf_AddPacketRepeat_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)MCI_AA_BDSP_WINDOW, sAeInfo.abDrc, DRC_PARAM_SIZE); + } + + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5) != (UINT32)0) + { + for(i = 0; i < EQ5_PARAM_SIZE; i++) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_AE_AA | (UINT32)(MCI_AA_BAND0_CEQ0+i), sAeInfo.abEq5[i]); + } + } + if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3) != (UINT32)0) + { + if(McDevProf_IsValid(eMCDRV_FUNC_HWADJ) == 1) + { + for(i = 0; i < 15; i++) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_AE_AA | (UINT32)(MCI_AA_BAND5_CEQ0+i), sAeInfo.abEq3[i]); + } + } + else + { + for(i = 0; i < EQ3_PARAM_SIZE; i++) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_AE_AA | (UINT32)(MCI_AA_BAND5_CEQ0+i), sAeInfo.abEq3[i]); + } + } + } + + return sdRet; +} + +/**************************************************************************** + * McPacket_AddPDM_AA + * + * Description: + * Add PDM setup packet. + * Arguments: + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +SINT32 McPacket_AddPDM_AA +( + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + MCDRV_PDM_INFO sPdmInfo; + + McResCtrl_GetPdmInfo_AA(&sPdmInfo); + if((dUpdateInfo & MCDRV_PDMADJ_UPDATE_FLAG) != (UINT32)0 || (dUpdateInfo & MCDRV_PDMAGC_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sPdmInfo.bAgcOn<<2)|sPdmInfo.bAgcAdjust; + if(bReg == McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM_AGC)) + { + dUpdateInfo &= ~(MCDRV_PDMADJ_UPDATE_FLAG|MCDRV_PDMAGC_UPDATE_FLAG); + } + } + if((dUpdateInfo & MCDRV_PDMMONO_UPDATE_FLAG) != (UINT32)0) + { + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM_START) & (UINT8)MCB_AA_PDM_MN; + if((sPdmInfo.bMono<<1) == bReg) + { + dUpdateInfo &= ~(MCDRV_PDMMONO_UPDATE_FLAG); + } + } + if((dUpdateInfo & MCDRV_PDMCLK_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_PDMEDGE_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_PDMWAIT_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_PDMSEL_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sPdmInfo.bPdmWait<<5) | (sPdmInfo.bPdmEdge<<4) | (sPdmInfo.bPdmSel<<2) | sPdmInfo.bClk; + if(bReg == McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM_STWAIT)) + { + dUpdateInfo &= ~(MCDRV_PDMCLK_UPDATE_FLAG|MCDRV_PDMEDGE_UPDATE_FLAG|MCDRV_PDMWAIT_UPDATE_FLAG|MCDRV_PDMSEL_UPDATE_FLAG); + } + } + if(dUpdateInfo == (UINT32)0) + { + return MCDRV_SUCCESS; + } + + McResCtrl_GetCurPowerInfo_AA(&sPowerInfo); + sdRet = PowerUpDig(MCDRV_DPB_UP_AA); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + if((dUpdateInfo & MCDRV_PDMADJ_UPDATE_FLAG) != (UINT32)0 || (dUpdateInfo & MCDRV_PDMAGC_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sPdmInfo.bAgcOn<<2)|sPdmInfo.bAgcAdjust; + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM_AGC)) + { + AddStopPDM(); + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_AGC, bReg); + } + if((dUpdateInfo & MCDRV_PDMMONO_UPDATE_FLAG) != (UINT32)0) + { + bReg = (McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM_START) & (UINT8)~MCB_AA_PDM_MN) | (sPdmInfo.bMono<<1); + if(bReg != McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_PDM_START)) + { + AddStopPDM(); + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_START, (sPdmInfo.bMono<<1)); + } + } + if((dUpdateInfo & MCDRV_PDMCLK_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_PDMEDGE_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_PDMWAIT_UPDATE_FLAG) != (UINT32)0 + || (dUpdateInfo & MCDRV_PDMSEL_UPDATE_FLAG) != (UINT32)0) + { + bReg = (sPdmInfo.bPdmWait<<5) | (sPdmInfo.bPdmEdge<<4) | (sPdmInfo.bPdmSel<<2) | sPdmInfo.bClk; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_PDM_STWAIT, bReg); + } + + /* unused path power down */ + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = + sPowerUpdate.abAnalog[1] = + sPowerUpdate.abAnalog[2] = + sPowerUpdate.abAnalog[3] = + sPowerUpdate.abAnalog[4] = 0; + sdRet = McPacket_AddPowerDown_AA(&sPowerInfo, &sPowerUpdate); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + return McPacket_AddStart_AA(); +} + +/**************************************************************************** + * McPacket_AddGPMode_AA + * + * Description: + * Add GP mode setup packet. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +SINT32 McPacket_AddGPMode_AA +( + void +) +{ + UINT8 abReg[2]; + MCDRV_INIT_INFO sInitInfo; + MCDRV_GP_MODE sGPMode; + + McResCtrl_GetInitInfo_AA(&sInitInfo); + McResCtrl_GetGPMode_AA(&sGPMode); + + abReg[0] = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PA_MSK); + abReg[1] = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PA_MSK_1); + + if(sInitInfo.bPad0Func == MCDRV_PAD_GPIO) + { + if(sGPMode.abGpDdr[0] == MCDRV_GPDDR_IN) + { + abReg[1] &= (UINT8)~MCB_AA_PA0_DDR; + } + else + { + abReg[1] |= MCB_AA_PA0_DDR; + } + } + if(sInitInfo.bPad1Func == MCDRV_PAD_GPIO) + { + if(sGPMode.abGpDdr[1] == MCDRV_GPDDR_IN) + { + abReg[1] &= (UINT8)~MCB_AA_PA1_DDR; + } + else + { + abReg[1] |= MCB_AA_PA1_DDR; + } + } +/* + if(sInitInfo.bPad2Func == MCDRV_PAD_GPIO) + { + if(sGPMode.abGpDdr[2] == MCDRV_GPDDR_IN) + { + abReg[0] &= (UINT8)~MCB_AA_PA2_DDR; + } + else + { + abReg[0] |= MCB_AA_PA2_DDR; + } + } +*/ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PA_MSK, abReg[0]); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PA_MSK_1, abReg[1]); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * McPacket_AddGPMask_AA + * + * Description: + * Add GP mask setup packet. + * Arguments: + * dPadNo PAD number + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +SINT32 McPacket_AddGPMask_AA +( + UINT32 dPadNo +) +{ + UINT8 bReg; + MCDRV_INIT_INFO sInitInfo; + MCDRV_GP_MODE sGPMode; + UINT8 abMask[GPIO_PAD_NUM]; + + McResCtrl_GetInitInfo_AA(&sInitInfo); + McResCtrl_GetGPMode_AA(&sGPMode); + McResCtrl_GetGPMask_AA(abMask); + + if(dPadNo == MCDRV_GP_PAD0) + { + if(sInitInfo.bPad0Func == MCDRV_PAD_GPIO && sGPMode.abGpDdr[0] == MCDRV_GPDDR_IN) + { + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PA_MSK_1); + if(abMask[0] == MCDRV_GPMASK_OFF) + { + bReg &= (UINT8)~MCB_AA_PA0_MSK; + } + else + { + bReg |= MCB_AA_PA0_MSK; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PA_MSK_1, bReg); + } + } + else if(dPadNo == MCDRV_GP_PAD1) + { + if(sInitInfo.bPad1Func == MCDRV_PAD_GPIO && sGPMode.abGpDdr[1] == MCDRV_GPDDR_IN) + { + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PA_MSK_1); + if(abMask[1] == MCDRV_GPMASK_OFF) + { + bReg &= (UINT8)~MCB_AA_PA1_MSK; + } + else + { + bReg |= MCB_AA_PA1_MSK; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PA_MSK_1, bReg); + } + } +/* + else if(dPadNo == MCDRV_GP_PAD2) + { + if(sInitInfo.bPad2Func == MCDRV_PAD_GPIO && sGPMode.abGpDdr[2] == MCDRV_GPDDR_IN) + { + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PA_MSK); + if(abMask[2] == MCDRV_GPMASK_OFF) + { + bReg &= (UINT8)~MCB_AA_PA2_MSK; + } + else + { + bReg |= MCB_AA_PA2_MSK; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PA_MSK, bReg); + } + } +*/ + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * McPacket_AddGPSet_AA + * + * Description: + * Add GPIO output packet. + * Arguments: + * bGpio pin state setting + * dPadNo PAD number + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +SINT32 McPacket_AddGPSet_AA +( + UINT8 bGpio, + UINT32 dPadNo +) +{ + UINT8 bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_BASE_AA, MCI_AA_PA_SCU_PA); + + if(dPadNo == MCDRV_GP_PAD0) + { + if(bGpio == MCDRV_GP_LOW) + { + bReg &= (UINT8)~MCB_AA_PA_SCU_PA0; + } + else if(bGpio == MCDRV_GP_HIGH) + { + bReg |= MCB_AA_PA_SCU_PA0; + } + } + else if(dPadNo == MCDRV_GP_PAD1) + { + if(bGpio == MCDRV_GP_LOW) + { + bReg &= (UINT8)~MCB_AA_PA_SCU_PA1; + } + else if(bGpio == MCDRV_GP_HIGH) + { + bReg |= MCB_AA_PA_SCU_PA1; + } + } +/* + else if(dPadNo == MCDRV_GP_PAD2) + { + if(bGpio == MCDRV_GP_LOW) + { + bReg &= (UINT8)~MCB_AA_PA_SCU_PA2; + } + else if(bGpio == MCDRV_GP_HIGH) + { + bReg |= MCB_AA_PA_SCU_PA2; + } + } +*/ + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | MCI_AA_PA_SCU_PA, bReg); + + return MCDRV_SUCCESS; +} + + +/**************************************************************************** + * PowerUpDig + * + * Description: + * Digital power up. + * Arguments: + * bDPBUp 1:DPB power up + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_TIMEOUT + * + ****************************************************************************/ +static SINT32 PowerUpDig +( + UINT8 bDPBUp +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + + McResCtrl_GetCurPowerInfo_AA(&sPowerInfo); + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP0_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP1_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP2_AA; + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_PLLRST0_AA; + if(bDPBUp == MCDRV_DPB_UP_AA) + { + sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPB_AA; + } + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sdRet = McPacket_AddPowerUp_AA(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * GetMaxWait + * + * Description: + * Get maximum wait time. + * Arguments: + * bRegChange analog power management register update information + * Return: + * wait time + * + ****************************************************************************/ +static UINT32 GetMaxWait +( + UINT8 bRegChange +) +{ + UINT32 dWaitTimeMax = 0; + MCDRV_INIT_INFO sInitInfo; + + McResCtrl_GetInitInfo_AA(&sInitInfo); + + if((bRegChange & MCB_AA_PWM_LI) != 0) + { + if(sInitInfo.sWaitTime.dLine1Cin > dWaitTimeMax) + { + dWaitTimeMax = sInitInfo.sWaitTime.dLine1Cin; + } + } + if((bRegChange & MCB_AA_PWM_MB1) != 0 || (bRegChange & MCB_AA_PWM_MC1) != 0) + { + if(sInitInfo.sWaitTime.dMic1Cin > dWaitTimeMax) + { + dWaitTimeMax = sInitInfo.sWaitTime.dMic1Cin; + } + } + if((bRegChange & MCB_AA_PWM_MB2) != 0 || (bRegChange & MCB_AA_PWM_MC2) != 0) + { + if(sInitInfo.sWaitTime.dMic2Cin > dWaitTimeMax) + { + dWaitTimeMax = sInitInfo.sWaitTime.dMic2Cin; + } + } + if((bRegChange & MCB_AA_PWM_MB3) != 0 || (bRegChange & MCB_AA_PWM_MC3) != 0) + { + if(sInitInfo.sWaitTime.dMic3Cin > dWaitTimeMax) + { + dWaitTimeMax = sInitInfo.sWaitTime.dMic3Cin; + } + } + + return dWaitTimeMax; +} + +/*******************************/ + +#define MCDRV_MAX_WAIT_TIME_AA (0x0FFFFFFFUL) + +static SINT32 init (const MCDRV_INIT_INFO* psInitInfo); +static SINT32 term (void); + +static SINT32 read_reg (MCDRV_REG_INFO* psRegInfo); +static SINT32 write_reg (const MCDRV_REG_INFO* psRegInfo); + +static SINT32 update_clock (const MCDRV_CLOCK_INFO* psClockInfo); + +static SINT32 get_path (MCDRV_PATH_INFO* psPathInfo); +static SINT32 set_path (const MCDRV_PATH_INFO* psPathInfo); + +static SINT32 get_volume (MCDRV_VOL_INFO* psVolInfo); +static SINT32 set_volume (const MCDRV_VOL_INFO *psVolInfo); + +static SINT32 get_digitalio (MCDRV_DIO_INFO* psDioInfo); +static SINT32 set_digitalio (const MCDRV_DIO_INFO* psDioInfo, UINT32 dUpdateInfo); + +static SINT32 get_dac (MCDRV_DAC_INFO* psDacInfo); +static SINT32 set_dac (const MCDRV_DAC_INFO* psDacInfo, UINT32 dUpdateInfo); + +static SINT32 get_adc (MCDRV_ADC_INFO* psAdcInfo); +static SINT32 set_adc (const MCDRV_ADC_INFO* psAdcInfo, UINT32 dUpdateInfo); + +static SINT32 get_sp (MCDRV_SP_INFO* psSpInfo); +static SINT32 set_sp (const MCDRV_SP_INFO* psSpInfo); + +static SINT32 get_dng (MCDRV_DNG_INFO* psDngInfo); +static SINT32 set_dng (const MCDRV_DNG_INFO* psDngInfo, UINT32 dUpdateInfo); + +static SINT32 set_ae (const MCDRV_AE_INFO* psAeInfo, UINT32 dUpdateInfo); + +static SINT32 get_pdm (MCDRV_PDM_INFO* psPdmInfo); +static SINT32 set_pdm (const MCDRV_PDM_INFO* psPdmInfo, UINT32 dUpdateInfo); + +static SINT32 config_gp (const MCDRV_GP_MODE* psGpMode); +static SINT32 mask_gp (UINT8* pbMask, UINT32 dPadNo); +static SINT32 getset_gp (UINT8* pbGpio, UINT32 dPadNo); + +static SINT32 ValidateInitParam (const MCDRV_INIT_INFO* psInitInfo); +static SINT32 ValidateClockParam (const MCDRV_CLOCK_INFO* psClockInfo); +static SINT32 ValidateReadRegParam (const MCDRV_REG_INFO* psRegInfo); +static SINT32 ValidateWriteRegParam (const MCDRV_REG_INFO* psRegInfo); +static SINT32 ValidatePathParam (const MCDRV_PATH_INFO* psPathInfo); +static SINT32 ValidateDioParam (const MCDRV_DIO_INFO* psDioInfo, UINT32 dUpdateInfo); +static SINT32 CheckDIOCommon (const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort); +static SINT32 CheckDIODIR (const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort, UINT8 bInterface); +static SINT32 CheckDIODIT (const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort, UINT8 bInterface); + +static SINT32 SetVol (UINT32 dUpdate, MCDRV_VOLUPDATE_MODE_AA eMode); +static SINT32 PreUpdatePath (void); + +static UINT8 abHwAdjParam_Thru[60] = +{ + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +}; +static UINT8 abHwAdjParam_Rec8[60] = +{ + 0x10,0x07,0x79,0xEA,0xEB,0xAA,0xE3,0xBE,0xD3,0x9D, + 0x80,0xF4,0x0F,0x46,0x5C,0xEE,0x26,0x04,0x1C,0x41, + 0x2C,0x62,0x7F,0x0E,0xF0,0xB2,0x29,0x26,0xEE,0x56, + 0x10,0x00,0xCD,0x1A,0xC6,0x9C,0xE2,0x35,0xC9,0x28, + 0x8C,0x62,0x0F,0x74,0xD1,0x4A,0x2F,0x16,0x1D,0xCA, + 0x36,0xD7,0x73,0xA0,0xF0,0x8A,0x61,0x9B,0x0A,0x50 +}; +static UINT8 abHwAdjParam_Rec44[60] = +{ + 0x10,0x83,0x6A,0x3F,0x68,0x46,0x19,0x89,0xC7,0xB0, + 0x55,0x42,0x0C,0xFF,0x7A,0xAB,0x42,0x3A,0xE6,0x76, + 0x38,0x4F,0xAA,0xC0,0xF2,0x7D,0x1B,0x15,0x55,0x82, + 0x10,0x69,0xF3,0x99,0x9D,0x9E,0x08,0x63,0x05,0xAA, + 0x11,0xB8,0xFB,0x72,0x65,0x70,0x71,0x56,0xF7,0x7F, + 0x4C,0x6D,0x22,0xCA,0x04,0x41,0x54,0xDE,0xBC,0x90 +}; +static UINT8 abHwAdjParam_Rec48[60] = +{ + 0x10,0x58,0xEB,0x76,0xA5,0x22,0x19,0x40,0x9A,0xF9, + 0x6A,0x26,0x0C,0xCF,0xC3,0x76,0x0C,0x38,0xE6,0xBF, + 0x65,0x06,0x95,0xDC,0xF2,0xD7,0x51,0x13,0x4E,0xA6, + 0x10,0x46,0x7F,0x35,0x83,0x86,0x08,0x50,0xE8,0x01, + 0xBD,0x14,0xFB,0x7C,0x3B,0x31,0x2A,0xD4,0xF7,0x9B, + 0x3F,0xDC,0xC7,0xC8,0x04,0x51,0x1D,0xBA,0xCC,0xCC +}; +static UINT8 abHwAdjParam_Play8[60] = +{ + 0x10,0x17,0xAE,0x9C,0x5E,0x76,0xE4,0x96,0x5C,0x5C, + 0xE7,0x7E,0x0F,0x53,0x7E,0x85,0xBC,0xD0,0x1B,0x69, + 0xA3,0xA3,0x18,0x84,0xF0,0x94,0xD2,0xDD,0xE4,0xBC, + 0x10,0x11,0x1E,0x9A,0xB6,0xCE,0xE4,0x2A,0x1A,0xE5, + 0x81,0x80,0x0F,0x62,0xDA,0x03,0x5A,0xB4,0x1B,0xD5, + 0xE5,0x1A,0x7E,0x82,0xF0,0x8C,0x07,0x61,0xEE,0x80 +}; +static UINT8 abHwAdjParam_Play44[60] = +{ + 0x10,0x6D,0x19,0x4D,0xE6,0xFA,0x19,0x7A,0xF7,0x6F, + 0x4E,0x18,0x0D,0x04,0xAD,0x61,0x04,0xD2,0xE6,0x85, + 0x08,0x90,0xB1,0xEA,0xF2,0x8E,0x39,0x51,0x14,0x36, + 0x10,0xA7,0x40,0x2A,0x76,0x8E,0x0B,0xEA,0x7D,0x17, + 0x6A,0x44,0xFE,0x5D,0xCE,0x5E,0x8C,0x5A,0xF3,0xE6, + 0x41,0x04,0x5A,0x44,0x01,0x2A,0x33,0x5B,0x38,0x94 +}; +static UINT8 abHwAdjParam_Play48[60] = +{ + 0x0F,0x90,0xBD,0x36,0x47,0x08,0x15,0x62,0x68,0x36, + 0xFC,0x2A,0x09,0x20,0x8F,0xCB,0xCD,0x52,0xEA,0x9D, + 0x97,0xC9,0x03,0xD8,0xF7,0x4E,0xB2,0xFD,0xEB,0xA8, + 0x11,0xB9,0x89,0xB8,0x89,0x34,0x10,0x0F,0xDD,0x08, + 0xCB,0x38,0x03,0xA3,0x87,0xD1,0x51,0x14,0xEF,0x0F, + 0x12,0xEC,0x91,0xA2,0xFB,0x83,0xFE,0x80,0xC8,0xE2 +}; + +/**************************************************************************** + * init + * + * Description: + * Initialize. + * Arguments: + * psInitInfo initialize information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 init +( + const MCDRV_INIT_INFO *psInitInfo +) +{ + SINT32 sdRet; + UINT8 bReg; + + if(NULL == psInitInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA != McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McSrv_SystemInit(); + McSrv_Lock(); + + bReg = McSrv_ReadI2C(McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG), (UINT32)MCI_AA_HW_ID); + sdRet = McResCtrl_SetHwId_AA(bReg); + if(sdRet == MCDRV_SUCCESS) + { + sdRet = ValidateInitParam(psInitInfo); + } + + if(sdRet == MCDRV_SUCCESS) + { + McResCtrl_Init_AA(psInitInfo); + sdRet = McDevIf_AllocPacketBuf_AA(); + } + + if(sdRet == MCDRV_SUCCESS) + { + sdRet = McPacket_AddInit_AA(psInitInfo); + } + + if(sdRet == MCDRV_SUCCESS) + { + sdRet = McDevIf_ExecutePacket_AA(); + } + + if(sdRet == MCDRV_SUCCESS) + { + McResCtrl_UpdateState_AA(eMCDRV_STATE_READY_AA); + } + else + { + McDevIf_ReleasePacketBuf_AA(); + } + + McSrv_Unlock(); + + if(sdRet != MCDRV_SUCCESS) + { + McSrv_SystemTerm(); + } + + return sdRet; +} + +/**************************************************************************** + * term + * + * Description: + * Terminate. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 term +( + void +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bCh, bSrcIdx; + UINT8 abOnOff[SOURCE_BLOCK_NUM]; + MCDRV_PATH_INFO sPathInfo; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + + if(eMCDRV_STATE_READY_AA != McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McSrv_Lock(); + + abOnOff[0] = (MCDRV_SRC0_MIC1_OFF|MCDRV_SRC0_MIC2_OFF|MCDRV_SRC0_MIC3_OFF); + abOnOff[1] = (MCDRV_SRC1_LINE1_L_OFF|MCDRV_SRC1_LINE1_R_OFF|MCDRV_SRC1_LINE1_M_OFF); + abOnOff[2] = (MCDRV_SRC2_LINE2_L_OFF|MCDRV_SRC2_LINE2_R_OFF|MCDRV_SRC2_LINE2_M_OFF); + abOnOff[3] = (MCDRV_SRC3_DIR0_OFF|MCDRV_SRC3_DIR1_OFF|MCDRV_SRC3_DIR2_OFF|MCDRV_SRC3_DIR2_DIRECT_OFF); + abOnOff[4] = (MCDRV_SRC4_DTMF_OFF|MCDRV_SRC4_PDM_OFF|MCDRV_SRC4_ADC0_OFF|MCDRV_SRC4_ADC1_OFF); + abOnOff[5] = (MCDRV_SRC5_DAC_L_OFF|MCDRV_SRC5_DAC_R_OFF|MCDRV_SRC5_DAC_M_OFF); + abOnOff[6] = (MCDRV_SRC6_MIX_OFF|MCDRV_SRC6_AE_OFF|MCDRV_SRC6_CDSP_OFF|MCDRV_SRC6_CDSP_DIRECT_OFF); + + for(bSrcIdx = 0; bSrcIdx < SOURCE_BLOCK_NUM; bSrcIdx++) + { + for(bCh = 0; bCh < HP_PATH_CHANNELS; bCh++) + { + sPathInfo.asHpOut[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < SP_PATH_CHANNELS; bCh++) + { + sPathInfo.asSpOut[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < RC_PATH_CHANNELS; bCh++) + { + sPathInfo.asRcOut[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < LOUT1_PATH_CHANNELS; bCh++) + { + sPathInfo.asLout1[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < LOUT2_PATH_CHANNELS; bCh++) + { + sPathInfo.asLout2[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < PEAK_PATH_CHANNELS; bCh++) + { + sPathInfo.asPeak[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < DIT0_PATH_CHANNELS; bCh++) + { + sPathInfo.asDit0[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < DIT1_PATH_CHANNELS; bCh++) + { + sPathInfo.asDit1[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < DIT2_PATH_CHANNELS; bCh++) + { + sPathInfo.asDit2[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++) + { + sPathInfo.asDac[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < AE_PATH_CHANNELS; bCh++) + { + sPathInfo.asAe[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < CDSP_PATH_CHANNELS; bCh++) + { + sPathInfo.asCdsp[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < ADC0_PATH_CHANNELS; bCh++) + { + sPathInfo.asAdc0[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < ADC1_PATH_CHANNELS; bCh++) + { + sPathInfo.asAdc1[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < MIX_PATH_CHANNELS; bCh++) + { + sPathInfo.asMix[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + for(bCh = 0; bCh < BIAS_PATH_CHANNELS; bCh++) + { + sPathInfo.asBias[bCh].abSrcOnOff[bSrcIdx] = abOnOff[bSrcIdx]; + } + } + sdRet = set_path(&sPathInfo); + if(sdRet == MCDRV_SUCCESS) + { + sPowerInfo.dDigital = (MCDRV_POWINFO_DIGITAL_DP0_AA + |MCDRV_POWINFO_DIGITAL_DP1_AA + |MCDRV_POWINFO_DIGITAL_DP2_AA + |MCDRV_POWINFO_DIGITAL_DPB_AA + |MCDRV_POWINFO_DIGITAL_DPDI0_AA + |MCDRV_POWINFO_DIGITAL_DPDI1_AA + |MCDRV_POWINFO_DIGITAL_DPDI2_AA + |MCDRV_POWINFO_DIGITAL_DPPDM_AA + |MCDRV_POWINFO_DIGITAL_DPBDSP_AA + |MCDRV_POWINFO_DIGITAL_DPADIF_AA + |MCDRV_POWINFO_DIGITAL_PLLRST0_AA); + sPowerInfo.abAnalog[0] = + sPowerInfo.abAnalog[1] = + sPowerInfo.abAnalog[2] = + sPowerInfo.abAnalog[3] = + sPowerInfo.abAnalog[4] = (UINT8)0xFF; + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL_AA; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL_AA; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL_AA; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL_AA; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL_AA; + sdRet = McPacket_AddPowerDown_AA(&sPowerInfo, &sPowerUpdate); + } + if(sdRet == MCDRV_SUCCESS) + { + sdRet = McDevIf_ExecutePacket_AA(); + } + + McDevIf_ReleasePacketBuf_AA(); + + McResCtrl_UpdateState_AA(eMCDRV_STATE_NOTINIT_AA); + + McSrv_Unlock(); + + McSrv_SystemTerm(); + + return sdRet; +} + +/**************************************************************************** + * read_reg + * + * Description: + * read register. + * Arguments: + * psRegInfo register information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 read_reg +( + MCDRV_REG_INFO* psRegInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bSlaveAddr; + UINT8 bAddr; + UINT8 abData[2]; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_INFO_AA sCurPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + + if(NULL == psRegInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + sdRet = ValidateReadRegParam(psRegInfo); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + /* get current power info */ + McResCtrl_GetCurPowerInfo_AA(&sCurPowerInfo); + + /* power up */ + McResCtrl_GetPowerInfoRegAccess_AA(psRegInfo, &sPowerInfo); + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL_AA; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL_AA; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL_AA; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL_AA; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL_AA; + sdRet = McPacket_AddPowerUp_AA(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + bAddr = psRegInfo->bAddress; + + if(psRegInfo->bRegType == MCDRV_REGTYPE_A) + { + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + } + else + { + switch(psRegInfo->bRegType) + { + case MCDRV_REGTYPE_B_BASE: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_AA_BASE_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_AA_BASE_WINDOW; + break; + + case MCDRV_REGTYPE_B_MIXER: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_AA_MIX_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_AA_MIX_WINDOW; + break; + + case MCDRV_REGTYPE_B_AE: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_AA_AE_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_AA_AE_WINDOW; + break; + + case MCDRV_REGTYPE_B_CDSP: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_AA_CDSP_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_AA_CDSP_WINDOW; + break; + + case MCDRV_REGTYPE_B_CODEC: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_AA_CD_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_AA_CD_WINDOW; + break; + + case MCDRV_REGTYPE_B_ANALOG: + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA); + abData[0] = MCI_AA_ANA_ADR<<1; + abData[1] = bAddr; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bAddr = MCI_AA_ANA_WINDOW; + break; + + default: + return MCDRV_ERROR_ARGUMENT; + } + } + + /* read register */ + psRegInfo->bData = McSrv_ReadI2C(bSlaveAddr, bAddr); + + /* restore power */ + sdRet = McPacket_AddPowerDown_AA(&sCurPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * write_reg + * + * Description: + * Write register. + * Arguments: + * psWR register information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +static SINT32 write_reg +( + const MCDRV_REG_INFO* psRegInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_INFO_AA sCurPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + + if(NULL == psRegInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + sdRet = ValidateWriteRegParam(psRegInfo); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + /* get current power info */ + McResCtrl_GetCurPowerInfo_AA(&sCurPowerInfo); + + /* power up */ + McResCtrl_GetPowerInfoRegAccess_AA(psRegInfo, &sPowerInfo); + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL_AA; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL_AA; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL_AA; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL_AA; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL_AA; + sdRet = McPacket_AddPowerUp_AA(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + switch(psRegInfo->bRegType) + { + case MCDRV_REGTYPE_A: + McDevIf_AddPacket_AA((MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_BASE: + McDevIf_AddPacket_AA((MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_BASE_AA | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_MIXER: + McDevIf_AddPacket_AA((MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_AE: + McDevIf_AddPacket_AA((MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_AE_AA | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_CDSP: + McDevIf_AddPacket_AA((MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CDSP_AA | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_CODEC: + McDevIf_AddPacket_AA((MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_CODEC_AA | psRegInfo->bAddress), psRegInfo->bData); + break; + + case MCDRV_REGTYPE_B_ANALOG: + McDevIf_AddPacket_AA((MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_ANA_AA | psRegInfo->bAddress), psRegInfo->bData); + break; + + default: + return MCDRV_ERROR_ARGUMENT; + } + + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* restore power */ + if(psRegInfo->bRegType == MCDRV_REGTYPE_B_BASE) + { + if(psRegInfo->bAddress == MCI_AA_PWM_DIGITAL) + { + if((psRegInfo->bData & MCB_AA_PWM_DP0) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP0_AA; + } + if((psRegInfo->bData & MCB_AA_PWM_DP1) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP1_AA; + } + if((psRegInfo->bData & MCB_AA_PWM_DP2) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP2_AA; + } + } + else if(psRegInfo->bAddress == MCI_AA_PWM_DIGITAL_1) + { + if((psRegInfo->bData & MCB_AA_PWM_DPB) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPB_AA; + } + if((psRegInfo->bData & MCB_AA_PWM_DPDI0) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPDI0_AA; + } + if((psRegInfo->bData & MCB_AA_PWM_DPDI1) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPDI1_AA; + } + if((psRegInfo->bData & MCB_AA_PWM_DPDI2) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPDI2_AA; + } + if((psRegInfo->bData & MCB_AA_PWM_DPPDM) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPPDM_AA; + } + } + else if(psRegInfo->bAddress == MCI_AA_PWM_DIGITAL_BDSP) + { + if((psRegInfo->bData & MCB_AA_PWM_DPBDSP) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPBDSP_AA; + } + } + else if(psRegInfo->bAddress == MCI_AA_PLL_RST) + { + if((psRegInfo->bData & MCB_AA_PLLRST0) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_PLLRST0_AA; + } + } + } + else if(psRegInfo->bRegType == MCDRV_REGTYPE_B_CODEC) + { + if(psRegInfo->bAddress == MCI_AA_DPADIF) + { + if((psRegInfo->bData & MCB_AA_DPADIF) == 0) + { + sCurPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPADIF_AA; + } + } + } + else if(psRegInfo->bRegType == MCDRV_REGTYPE_B_ANALOG) + { + if(psRegInfo->bAddress == MCI_AA_PWM_ANALOG_0) + { + sCurPowerInfo.abAnalog[0] = psRegInfo->bData; + } + else if(psRegInfo->bAddress == MCI_AA_PWM_ANALOG_1) + { + sCurPowerInfo.abAnalog[1] = psRegInfo->bData; + } + else if(psRegInfo->bAddress == MCI_AA_PWM_ANALOG_2) + { + sCurPowerInfo.abAnalog[2] = psRegInfo->bData; + } + else if(psRegInfo->bAddress == MCI_AA_PWM_ANALOG_3) + { + sCurPowerInfo.abAnalog[3] = psRegInfo->bData; + } + else if(psRegInfo->bAddress == MCI_AA_PWM_ANALOG_4) + { + sCurPowerInfo.abAnalog[4] = psRegInfo->bData; + } + } + + sdRet = McPacket_AddPowerDown_AA(&sCurPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * update_clock + * + * Description: + * Update clock info. + * Arguments: + * psClockInfo clock info + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 update_clock +( + const MCDRV_CLOCK_INFO* psClockInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + MCDRV_INIT_INFO sInitInfo; + + if(NULL == psClockInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetInitInfo_AA(&sInitInfo); + if((sInitInfo.bPowerMode & MCDRV_POWMODE_CLKON) != 0) + { + return MCDRV_ERROR_ARGUMENT; + } + + sdRet = ValidateClockParam(psClockInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + McResCtrl_SetClockInfo_AA(psClockInfo); + return sdRet; +} + +/**************************************************************************** + * get_path + * + * Description: + * Get current path setting. + * Arguments: + * psPathInfo path information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_path +( + MCDRV_PATH_INFO* psPathInfo +) +{ + if(NULL == psPathInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetPathInfoVirtual_AA(psPathInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_path + * + * Description: + * Set path. + * Arguments: + * psPathInfo path information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_path +( + const MCDRV_PATH_INFO* psPathInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT32 dXFadeParam = 0; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + MCDRV_POWER_INFO_AA sPowerInfo; + MCDRV_POWER_UPDATE_AA sPowerUpdate; + MCDRV_HWADJ eHwAdj; + UINT8 *pbHwAdjParam; + UINT8 bReg; + UINT8 i; + + if(NULL == psPathInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + sdRet = ValidatePathParam(psPathInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + McResCtrl_SetPathInfo_AA(psPathInfo); + + /* unused analog out volume mute */ + sdRet = SetVol(MCDRV_VOLUPDATE_ANAOUT_ALL_AA, eMCDRV_VOLUPDATE_MUTE_AA); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* DAC/DIT* mute */ + sdRet = PreUpdatePath(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* unused volume mute */ + sdRet = SetVol(MCDRV_VOLUPDATE_ALL_AA&~MCDRV_VOLUPDATE_ANAOUT_ALL_AA, eMCDRV_VOLUPDATE_MUTE_AA); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* stop unused path */ + sdRet = McPacket_AddStop_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + if(McDevProf_IsValid(eMCDRV_FUNC_HWADJ) == 1) + { + eHwAdj = McResCtrl_ConfigHwAdj_AA(); + + if(eHwAdj != eMCDRV_HWADJ_NOCHANGE) + { + switch(eHwAdj) + { + case eMCDRV_HWADJ_REC8: + pbHwAdjParam = abHwAdjParam_Rec8; + break; + case eMCDRV_HWADJ_REC44: + pbHwAdjParam = abHwAdjParam_Rec44; + break; + case eMCDRV_HWADJ_REC48: + pbHwAdjParam = abHwAdjParam_Rec48; + break; + case eMCDRV_HWADJ_PLAY8: + pbHwAdjParam = abHwAdjParam_Play8; + break; + case eMCDRV_HWADJ_PLAY44: + pbHwAdjParam = abHwAdjParam_Play44; + break; + case eMCDRV_HWADJ_PLAY48: + pbHwAdjParam = abHwAdjParam_Play48; + break; + default: + pbHwAdjParam = abHwAdjParam_Thru; + break; + } + + dXFadeParam = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DAC_INS); + dXFadeParam <<= 8; + dXFadeParam |= McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_INS); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_DAC_INS, 0); + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | (UINT32)MCI_AA_INS, 0); + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + /* wait xfade complete */ + if(dXFadeParam != (UINT32)0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_INSFLG_AA | dXFadeParam, 0); + bReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_A_AA, MCI_AA_BDSP_ST); + bReg &= (UINT8)~MCB_AA_EQ3ON; + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_A_AA | (UINT32)MCI_AA_BDSP_ST, bReg); + } + + for(i = 0; i < 60; i++) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_FORCE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_AE_AA | (UINT32)(MCI_AA_BAND6H_CEQ0+i), pbHwAdjParam[i]); + } + + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + } + } + + McResCtrl_GetPowerInfo_AA(&sPowerInfo); + + /* used path power up */ + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL_AA; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL_AA; + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL_AA; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL_AA; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL_AA; + sdRet = McPacket_AddPowerUp_AA(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* set digital mixer */ + sdRet = McPacket_AddPathSet_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* set analog mixer */ + sdRet = McPacket_AddMixSet_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* unused path power down */ + sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL_AA; + if(McDevProf_IsValid(eMCDRV_FUNC_HWADJ) == 1) + { + sPowerUpdate.abAnalog[0] = 0; + sPowerUpdate.abAnalog[1] = 0xCF; + } + else + { + sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL_AA; + sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL_AA; + } + sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL_AA; + sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL_AA; + sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL_AA; + sdRet = McPacket_AddPowerDown_AA(&sPowerInfo, &sPowerUpdate); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* start */ + sdRet = McPacket_AddStart_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + /* set volume */ + sdRet = SetVol(MCDRV_VOLUPDATE_ALL_AA&~MCDRV_VOLUPDATE_ANAOUT_ALL_AA, eMCDRV_VOLUPDATE_ALL_AA); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return SetVol(MCDRV_VOLUPDATE_ANAOUT_ALL_AA, eMCDRV_VOLUPDATE_ALL_AA); +} + +/**************************************************************************** + * get_volume + * + * Description: + * Get current volume setting. + * Arguments: + * psVolInfo volume information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 get_volume +( + MCDRV_VOL_INFO* psVolInfo +) +{ + if(NULL == psVolInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetVolInfo_AA(psVolInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_volume + * + * Description: + * Set volume. + * Arguments: + * psVolInfo volume update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 set_volume +( + const MCDRV_VOL_INFO* psVolInfo +) +{ + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + + if(NULL == psVolInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetVolInfo_AA(psVolInfo); + + return SetVol(MCDRV_VOLUPDATE_ALL_AA, eMCDRV_VOLUPDATE_ALL_AA); +} + +/**************************************************************************** + * get_digitalio + * + * Description: + * Get current digital IO setting. + * Arguments: + * psDioInfo digital IO information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_digitalio +( + MCDRV_DIO_INFO* psDioInfo +) +{ + if(NULL == psDioInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetDioInfo_AA(psDioInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_digitalio + * + * Description: + * Update digital IO configuration. + * Arguments: + * psDioInfo digital IO configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_digitalio +( + const MCDRV_DIO_INFO* psDioInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + + if(NULL == psDioInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + sdRet = ValidateDioParam(psDioInfo, dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + McResCtrl_SetDioInfo_AA(psDioInfo, dUpdateInfo); + + sdRet = McPacket_AddDigitalIO_AA(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * get_dac + * + * Description: + * Get current DAC setting. + * Arguments: + * psDacInfo DAC information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_dac +( + MCDRV_DAC_INFO* psDacInfo +) +{ + if(NULL == psDacInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetDacInfo_AA(psDacInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_dac + * + * Description: + * Update DAC configuration. + * Arguments: + * psDacInfo DAC configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_dac +( + const MCDRV_DAC_INFO* psDacInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + + if(NULL == psDacInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetDacInfo_AA(psDacInfo, dUpdateInfo); + + sdRet = McPacket_AddDAC_AA(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * get_adc + * + * Description: + * Get current ADC setting. + * Arguments: + * psAdcInfo ADC information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_adc +( + MCDRV_ADC_INFO* psAdcInfo +) +{ + if(NULL == psAdcInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetAdcInfo_AA(psAdcInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_adc + * + * Description: + * Update ADC configuration. + * Arguments: + * psAdcInfo ADC configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_adc +( + const MCDRV_ADC_INFO* psAdcInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + + if(NULL == psAdcInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetAdcInfo_AA(psAdcInfo, dUpdateInfo); + + sdRet = McPacket_AddADC_AA(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * get_sp + * + * Description: + * Get current SP setting. + * Arguments: + * psSpInfo SP information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_sp +( + MCDRV_SP_INFO* psSpInfo +) +{ + if(NULL == psSpInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetSpInfo_AA(psSpInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_sp + * + * Description: + * Update SP configuration. + * Arguments: + * psSpInfo SP configuration + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_sp +( + const MCDRV_SP_INFO* psSpInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + + if(NULL == psSpInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetSpInfo_AA(psSpInfo); + + sdRet = McPacket_AddSP_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * get_dng + * + * Description: + * Get current Digital Noise Gate setting. + * Arguments: + * psDngInfo DNG information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_dng +( + MCDRV_DNG_INFO* psDngInfo +) +{ + if(NULL == psDngInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetDngInfo_AA(psDngInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_dng + * + * Description: + * Update Digital Noise Gate configuration. + * Arguments: + * psDngInfo DNG configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_dng +( + const MCDRV_DNG_INFO* psDngInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + + if(NULL == psDngInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetDngInfo_AA(psDngInfo, dUpdateInfo); + + sdRet = McPacket_AddDNG_AA(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * set_ae + * + * Description: + * Update Audio Engine configuration. + * Arguments: + * psAeInfo AE configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_ae +( + const MCDRV_AE_INFO* psAeInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + MCDRV_PATH_INFO sPathInfo; + + if(NULL == psAeInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetAeInfo_AA(psAeInfo, dUpdateInfo); + + sdRet = McPacket_AddAE_AA(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + sdRet = McDevIf_ExecutePacket_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + + McResCtrl_GetPathInfoVirtual_AA(&sPathInfo); + return set_path(&sPathInfo); +} + +/**************************************************************************** + * get_pdm + * + * Description: + * Get current PDM setting. + * Arguments: + * psPdmInfo PDM information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 get_pdm +( + MCDRV_PDM_INFO* psPdmInfo +) +{ + if(NULL == psPdmInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == McResCtrl_GetState_AA()) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetPdmInfo_AA(psPdmInfo); + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * set_pdm + * + * Description: + * Update PDM configuration. + * Arguments: + * psPdmInfo PDM configuration + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +static SINT32 set_pdm +( + const MCDRV_PDM_INFO* psPdmInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + + if(NULL == psPdmInfo) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetPdmInfo_AA(psPdmInfo, dUpdateInfo); + + sdRet = McPacket_AddPDM_AA(dUpdateInfo); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * config_gp + * + * Description: + * Set GPIO mode. + * Arguments: + * psGpMode GPIO mode information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE +* + ****************************************************************************/ +static SINT32 config_gp +( + const MCDRV_GP_MODE* psGpMode +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + + if(NULL == psGpMode) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_SetGPMode_AA(psGpMode); + + sdRet = McPacket_AddGPMode_AA(); + if(MCDRV_SUCCESS != sdRet) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * mask_gp + * + * Description: + * Set GPIO input mask. + * Arguments: + * pbMask mask setting + * dPadNo PAD number + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_STATE + * MCDRV_ERROR +* + ****************************************************************************/ +static SINT32 mask_gp +( + UINT8* pbMask, + UINT32 dPadNo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + MCDRV_INIT_INFO sInitInfo; + MCDRV_GP_MODE sGPMode; + + if(NULL == pbMask) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetInitInfo_AA(&sInitInfo); + McResCtrl_GetGPMode_AA(&sGPMode); + + if(dPadNo == MCDRV_GP_PAD0) + { + if(sInitInfo.bPad0Func == MCDRV_PAD_GPIO && sGPMode.abGpDdr[dPadNo] == MCDRV_GPDDR_OUT) + { + return MCDRV_ERROR; + } + } + else if(dPadNo == MCDRV_GP_PAD1) + { + if(sInitInfo.bPad1Func == MCDRV_PAD_GPIO && sGPMode.abGpDdr[dPadNo] == MCDRV_GPDDR_OUT) + { + return MCDRV_ERROR; + } + } +/* + else if(dPadNo == MCDRV_GP_PAD2) + { + if(sInitInfo.bPad2Func == MCDRV_PAD_GPIO && sGPMode.abGpDdr[dPadNo] == MCDRV_GPDDR_OUT) + { + return MCDRV_ERROR; + } + } +*/ + McResCtrl_SetGPMask_AA(*pbMask, dPadNo); + + sdRet = McPacket_AddGPMask_AA(dPadNo); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * getset_gp + * + * Description: + * Set or get state of GPIO pin. + * Arguments: + * pbGpio pin state + * dPadNo PAD number + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT +* + ****************************************************************************/ +static SINT32 getset_gp +( + UINT8* pbGpio, + UINT32 dPadNo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bSlaveAddr; + UINT8 abData[2]; + UINT8 bRegData; + MCDRV_STATE_AA eState = McResCtrl_GetState_AA(); + MCDRV_INIT_INFO sInitInfo; + MCDRV_GP_MODE sGPMode; + + if(NULL == pbGpio) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(eMCDRV_STATE_NOTINIT_AA == eState) + { + return MCDRV_ERROR_STATE; + } + + McResCtrl_GetInitInfo_AA(&sInitInfo); + McResCtrl_GetGPMode_AA(&sGPMode); + + if((dPadNo == MCDRV_GP_PAD0 && sInitInfo.bPad0Func != MCDRV_PAD_GPIO) + || (dPadNo == MCDRV_GP_PAD1 && sInitInfo.bPad1Func != MCDRV_PAD_GPIO) + /*|| (dPadNo == MCDRV_GP_PAD2 && sInitInfo.bPad2Func != MCDRV_PAD_GPIO)*/) + { + return MCDRV_ERROR; + } + + if(dPadNo < GPIO_PAD_NUM) + { + if(sGPMode.abGpDdr[dPadNo] == MCDRV_GPDDR_IN) + { + bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG); + abData[0] = MCI_AA_BASE_ADR<<1; + abData[1] = MCI_AA_PA_SCU_PA; + McSrv_WriteI2C(bSlaveAddr, abData, 2); + bRegData = McSrv_ReadI2C(bSlaveAddr, MCI_AA_BASE_WINDOW); + if(dPadNo == MCDRV_GP_PAD0) + { + *pbGpio = bRegData & MCB_AA_PA_SCU_PA0; + } + else if(dPadNo == MCDRV_GP_PAD1) + { + *pbGpio = (bRegData & MCB_AA_PA_SCU_PA1) >> 1; + } + /* + else if(dPadNo == MCDRV_GP_PAD2) + { + *pbGpio = (bRegData & MCB_AA_PA_SCU_PA2) >> 2; + } + */ + } + else + { + sdRet = McPacket_AddGPSet_AA(*pbGpio, dPadNo); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); + } + } + + return MCDRV_SUCCESS; +} + + +/**************************************************************************** + * ValidateInitParam + * + * Description: + * validate init parameters. + * Arguments: + * psInitInfo initialize information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateInitParam +( + const MCDRV_INIT_INFO* psInitInfo +) +{ + + if(MCDRV_CKSEL_CMOS != psInitInfo->bCkSel && 1/*MCDRV_CKSEL_TCXO*/ != psInitInfo->bCkSel) + { + return MCDRV_ERROR_ARGUMENT; + } + if(psInitInfo->bDivR0 == 0x00 || psInitInfo->bDivR0 > 0x7F) + { + return MCDRV_ERROR_ARGUMENT; + } + if(McDevProf_IsValid(eMCDRV_FUNC_DIVR1) == 1 + && (psInitInfo->bDivR1 == 0x00 || psInitInfo->bDivR1 > 0x7F)) + { + return MCDRV_ERROR_ARGUMENT; + } + if(psInitInfo->bDivF0 == 0x00) + { + return MCDRV_ERROR_ARGUMENT; + } + if(McDevProf_IsValid(eMCDRV_FUNC_DIVF1) == 1 && psInitInfo->bDivF1 == 0x00) + { + return MCDRV_ERROR_ARGUMENT; + } + if(McDevProf_IsValid(eMCDRV_FUNC_RANGE) == 1 + && (psInitInfo->bRange0 > 0x07 || psInitInfo->bRange1 > 0x07)) + { + return MCDRV_ERROR_ARGUMENT; + } + if(McDevProf_IsValid(eMCDRV_FUNC_BYPASS) == 1 && psInitInfo->bBypass > 0x03) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_DAHIZ_LOW != psInitInfo->bDioSdo0Hiz && MCDRV_DAHIZ_HIZ != psInitInfo->bDioSdo0Hiz) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_DAHIZ_LOW != psInitInfo->bDioSdo1Hiz && MCDRV_DAHIZ_HIZ != psInitInfo->bDioSdo1Hiz) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_DAHIZ_LOW != psInitInfo->bDioSdo2Hiz && MCDRV_DAHIZ_HIZ != psInitInfo->bDioSdo2Hiz) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_PCMHIZ_HIZ != psInitInfo->bPcmHiz && MCDRV_PCMHIZ_LOW != psInitInfo->bPcmHiz) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_DAHIZ_LOW != psInitInfo->bDioClk0Hiz && MCDRV_DAHIZ_HIZ != psInitInfo->bDioClk0Hiz) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_DAHIZ_LOW != psInitInfo->bDioClk1Hiz && MCDRV_DAHIZ_HIZ != psInitInfo->bDioClk1Hiz) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_DAHIZ_LOW != psInitInfo->bDioClk2Hiz && MCDRV_DAHIZ_HIZ != psInitInfo->bDioClk2Hiz) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_PCMHIZ_HIZ != psInitInfo->bPcmHiz && MCDRV_PCMHIZ_LOW != psInitInfo->bPcmHiz) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_LINE_STEREO != psInitInfo->bLineIn1Dif && MCDRV_LINE_DIF != psInitInfo->bLineIn1Dif) + { + return MCDRV_ERROR_ARGUMENT; + } + if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1 + && MCDRV_LINE_STEREO != psInitInfo->bLineIn2Dif && MCDRV_LINE_DIF != psInitInfo->bLineIn2Dif) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_LINE_STEREO != psInitInfo->bLineOut1Dif && MCDRV_LINE_DIF != psInitInfo->bLineOut1Dif) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_LINE_STEREO != psInitInfo->bLineOut2Dif && MCDRV_LINE_DIF != psInitInfo->bLineOut2Dif) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_SPMN_ON != psInitInfo->bSpmn && MCDRV_SPMN_OFF != psInitInfo->bSpmn) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_MIC_DIF != psInitInfo->bMic1Sng && MCDRV_MIC_SINGLE != psInitInfo->bMic1Sng) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_MIC_DIF != psInitInfo->bMic2Sng && MCDRV_MIC_SINGLE != psInitInfo->bMic2Sng) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_MIC_DIF != psInitInfo->bMic3Sng && MCDRV_MIC_SINGLE != psInitInfo->bMic3Sng) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_POWMODE_NORMAL != psInitInfo->bPowerMode + && MCDRV_POWMODE_CLKON != psInitInfo->bPowerMode + && MCDRV_POWMODE_VREFON != psInitInfo->bPowerMode + && MCDRV_POWMODE_CLKVREFON != psInitInfo->bPowerMode + && MCDRV_POWMODE_FULL != psInitInfo->bPowerMode) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_SPHIZ_PULLDOWN != psInitInfo->bSpHiz && MCDRV_SPHIZ_HIZ != psInitInfo->bSpHiz) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_LDO_OFF != psInitInfo->bLdo && MCDRV_LDO_ON != psInitInfo->bLdo) + { + return MCDRV_ERROR_ARGUMENT; + } + if(MCDRV_PAD_GPIO != psInitInfo->bPad0Func + && MCDRV_PAD_PDMCK != psInitInfo->bPad0Func && MCDRV_PAD_IRQ != psInitInfo->bPad0Func) + { + return MCDRV_ERROR_ARGUMENT; + } + if(McDevProf_IsValid(eMCDRV_FUNC_IRQ) != 1 && MCDRV_PAD_IRQ == psInitInfo->bPad0Func) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(MCDRV_PAD_GPIO != psInitInfo->bPad1Func + && MCDRV_PAD_PDMDI != psInitInfo->bPad1Func && MCDRV_PAD_IRQ != psInitInfo->bPad1Func) + { + return MCDRV_ERROR_ARGUMENT; + } + if(McDevProf_IsValid(eMCDRV_FUNC_IRQ) != 1 && MCDRV_PAD_IRQ == psInitInfo->bPad1Func) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(McDevProf_IsValid(eMCDRV_FUNC_PAD2) == 1 + && MCDRV_PAD_GPIO != psInitInfo->bPad2Func + && MCDRV_PAD_PDMDI != psInitInfo->bPad2Func + && MCDRV_PAD_IRQ != psInitInfo->bPad2Func) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(MCDRV_OUTLEV_0 != psInitInfo->bAvddLev && MCDRV_OUTLEV_1 != psInitInfo->bAvddLev + && MCDRV_OUTLEV_2 != psInitInfo->bAvddLev && MCDRV_OUTLEV_3 != psInitInfo->bAvddLev + && MCDRV_OUTLEV_4 != psInitInfo->bAvddLev && MCDRV_OUTLEV_5 != psInitInfo->bAvddLev + && MCDRV_OUTLEV_6 != psInitInfo->bAvddLev && MCDRV_OUTLEV_7 != psInitInfo->bAvddLev) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(MCDRV_OUTLEV_0 != psInitInfo->bVrefLev && MCDRV_OUTLEV_1 != psInitInfo->bVrefLev + && MCDRV_OUTLEV_2 != psInitInfo->bVrefLev && MCDRV_OUTLEV_3 != psInitInfo->bVrefLev + && MCDRV_OUTLEV_4 != psInitInfo->bVrefLev && MCDRV_OUTLEV_5 != psInitInfo->bVrefLev + && MCDRV_OUTLEV_6 != psInitInfo->bVrefLev && MCDRV_OUTLEV_7 != psInitInfo->bVrefLev) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(MCDRV_DCLGAIN_0 != psInitInfo->bDclGain && MCDRV_DCLGAIN_6 != psInitInfo->bDclGain + && MCDRV_DCLGAIN_12!= psInitInfo->bDclGain && MCDRV_DCLGAIN_18!= psInitInfo->bDclGain) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(MCDRV_DCLLIMIT_0 != psInitInfo->bDclLimit && MCDRV_DCLLIMIT_116 != psInitInfo->bDclLimit + && MCDRV_DCLLIMIT_250 != psInitInfo->bDclLimit && MCDRV_DCLLIMIT_602 != psInitInfo->bDclLimit) + { + return MCDRV_ERROR_ARGUMENT; + } + + if((MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dAdHpf) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dMic1Cin) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dMic2Cin) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dMic3Cin) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dLine1Cin) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dLine2Cin) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dVrefRdy1) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dVrefRdy2) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dHpRdy) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dSpRdy) + || (MCDRV_MAX_WAIT_TIME_AA < psInitInfo->sWaitTime.dPdm)) + { + return MCDRV_ERROR_ARGUMENT; + } + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * ValidateClockParam + * + * Description: + * validate clock parameters. + * Arguments: + * psClockInfo clock information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateClockParam +( + const MCDRV_CLOCK_INFO* psClockInfo +) +{ + + if((MCDRV_CKSEL_CMOS != psClockInfo->bCkSel) && (1/*MCDRV_CKSEL_TCXO*/ != psClockInfo->bCkSel)) + { + return MCDRV_ERROR_ARGUMENT; + } + if((psClockInfo->bDivR0 == 0x00) || (psClockInfo->bDivR0 > 0x7F)) + { + return MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_DIVR1) == 1) + && ((psClockInfo->bDivR1 == 0x00) || (psClockInfo->bDivR1 > 0x7F))) + { + return MCDRV_ERROR_ARGUMENT; + } + if(psClockInfo->bDivF0 == 0x00) + { + return MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_DIVF1) == 1) && (psClockInfo->bDivF1 == 0x00)) + { + return MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_RANGE) == 1) + && ((psClockInfo->bRange0 > 0x07) || (psClockInfo->bRange1 > 0x07))) + { + return MCDRV_ERROR_ARGUMENT; + } + if((McDevProf_IsValid(eMCDRV_FUNC_BYPASS) == 1) && (psClockInfo->bBypass > 0x03)) + { + return MCDRV_ERROR_ARGUMENT; + } + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * ValidateReadRegParam + * + * Description: + * validate read reg parameter. + * Arguments: + * psRegInfo register information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateReadRegParam +( + const MCDRV_REG_INFO* psRegInfo +) +{ + + if((McResCtrl_GetRegAccess_AA(psRegInfo) & eMCDRV_READ_ONLY_AA) == 0) + { + return MCDRV_ERROR_ARGUMENT; + } + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * ValidateWriteRegParam + * + * Description: + * validate write reg parameter. + * Arguments: + * psRegInfo register information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateWriteRegParam +( + const MCDRV_REG_INFO* psRegInfo +) +{ + + if((McResCtrl_GetRegAccess_AA(psRegInfo) & eMCDRV_WRITE_ONLY_AA) == 0) + { + return MCDRV_ERROR_ARGUMENT; + } + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * ValidatePathParam + * + * Description: + * validate path parameters. + * Arguments: + * psPathInfo path information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidatePathParam( + const MCDRV_PATH_INFO* psPathInfo +) +{ + UINT8 bBlock; + UINT8 bCh; + UINT8 bPDMIsSrc = 0; + UINT8 bADC0IsSrc = 0; + MCDRV_PATH_INFO sCurPathInfo; + + + McResCtrl_GetPathInfoVirtual_AA(&sCurPathInfo); + /* set off to current path info */ + for(bBlock = 0; bBlock < SOURCE_BLOCK_NUM; bBlock++) + { + for(bCh = 0; bCh < HP_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asHpOut[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asHpOut[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asHpOut[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asHpOut[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asHpOut[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < SP_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asSpOut[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x02; + } + if((psPathInfo->asSpOut[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x08; + } + if((psPathInfo->asSpOut[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x20; + } + if((psPathInfo->asSpOut[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asSpOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x80; + } + } + for(bCh = 0; bCh < RC_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asRcOut[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x02; + } + if((psPathInfo->asRcOut[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x08; + } + if((psPathInfo->asRcOut[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x20; + } + if((psPathInfo->asRcOut[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asRcOut[bCh].abSrcOnOff[bBlock] |= (UINT8)0x80; + } + } + for(bCh = 0; bCh < LOUT1_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asLout1[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] |= (UINT8)0x02; + } + if((psPathInfo->asLout1[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] |= (UINT8)0x08; + } + if((psPathInfo->asLout1[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] |= (UINT8)0x20; + } + if((psPathInfo->asLout1[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asLout1[bCh].abSrcOnOff[bBlock] |= (UINT8)0x80; + } + } + for(bCh = 0; bCh < LOUT2_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asLout2[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asLout2[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asLout2[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asLout2[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asLout2[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < DIT0_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDit0[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asDit0[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asDit0[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asDit0[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asDit0[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < DIT1_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDit1[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asDit1[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asDit1[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asDit1[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asDit1[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < DIT2_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDit2[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asDit2[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asDit2[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asDit2[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asDit2[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asDac[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asDac[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asDac[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asDac[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < AE_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asAe[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asAe[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asAe[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asAe[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asAe[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + for(bCh = 0; bCh < ADC0_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asAdc0[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] |= (UINT8)0x02; + } + if((psPathInfo->asAdc0[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] |= (UINT8)0x08; + } + if((psPathInfo->asAdc0[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] |= (UINT8)0x20; + } + if((psPathInfo->asAdc0[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asAdc0[bCh].abSrcOnOff[bBlock] |= (UINT8)0x80; + } + } + for(bCh = 0; bCh < MIX_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asMix[bCh].abSrcOnOff[bBlock] & (0x03)) == 0x02) + { + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x01; + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] |= 0x02; + } + if((psPathInfo->asMix[bCh].abSrcOnOff[bBlock] & (0x0C)) == 0x08) + { + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x04; + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] |= 0x08; + } + if((psPathInfo->asMix[bCh].abSrcOnOff[bBlock] & (0x30)) == 0x20) + { + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x10; + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] |= 0x20; + } + if((psPathInfo->asMix[bCh].abSrcOnOff[bBlock] & (0xC0)) == 0x80) + { + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] &= (UINT8)~0x40; + sCurPathInfo.asMix[bCh].abSrcOnOff[bBlock] |= 0x80; + } + } + } + + if((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON) + { + bPDMIsSrc = 1; + } + if((sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON) + { + bADC0IsSrc = 1; + } + + /* HP */ + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + if(((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + /* SP */ + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + if(((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + if(((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON) + { + if(((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + /* RCV */ + + /* LOUT1 */ + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + if(((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + /* LOUT2 */ + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + if(((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + || ((sCurPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON) + { + if((sCurPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + /* PeakMeter */ + + /* DIT0 */ + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + if((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + + /* DIT1 */ + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + if((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + + /* DIT2 */ + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + if((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + + /* DAC */ + for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + if((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + } + + /* AE */ + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + { + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + { + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + { + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + && ((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON + || (sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + + /* CDSP */ + for(bCh = 0; bCh < 4; bCh++) + { + } + + /* ADC0 */ + if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + if(((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + if(((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + || ((sCurPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON) + { + if((sCurPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + + /* ADC1 */ + + /* MIX */ + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + { + if(bADC0IsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bPDMIsSrc = 1; + } + } + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + { + if(bPDMIsSrc == 1) + { + return MCDRV_ERROR_ARGUMENT; + } + else + { + bADC0IsSrc = 1; + } + } + if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON) + { + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON) + { + return MCDRV_ERROR_ARGUMENT; + } + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON) + && ((sCurPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + && ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + || (sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON + )) + { + return MCDRV_ERROR_ARGUMENT; + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + && ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + || (sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON + )) + { + return MCDRV_ERROR_ARGUMENT; + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + && ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + || (sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON + )) + { + return MCDRV_ERROR_ARGUMENT; + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + && ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON + || (sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + && ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON + || (sCurPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)) + { + return MCDRV_ERROR_ARGUMENT; + } + if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + && ((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (psPathInfo->asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (psPathInfo->asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + || (sCurPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON + )) + { + return MCDRV_ERROR_ARGUMENT; + } + + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * ValidateDioParam + * + * Description: + * validate digital IO parameters. + * Arguments: + * psDioInfo digital IO information + * dUpdateInfo update information + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 ValidateDioParam +( + const MCDRV_DIO_INFO* psDioInfo, + UINT32 dUpdateInfo +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bPort; + MCDRV_SRC_TYPE_AA aeDITSource[IOPORT_NUM]; + MCDRV_SRC_TYPE_AA eAESource = McResCtrl_GetAESource_AA(); + MCDRV_SRC_TYPE_AA eDAC0Source = McResCtrl_GetDACSource_AA(eMCDRV_DAC_MASTER_AA); + MCDRV_SRC_TYPE_AA eDAC1Source = McResCtrl_GetDACSource_AA(eMCDRV_DAC_VOICE_AA); + UINT8 bDIRUsed[IOPORT_NUM]; + MCDRV_DIO_INFO sDioInfo; + MCDRV_DIO_PORT_NO_AA aePort[IOPORT_NUM] = {eMCDRV_DIO_0_AA, eMCDRV_DIO_1_AA, eMCDRV_DIO_2_AA}; + + + McResCtrl_GetDioInfo_AA(&sDioInfo); + + for(bPort = 0; bPort < IOPORT_NUM; bPort++) + { + aeDITSource[bPort] = McResCtrl_GetDITSource_AA(aePort[bPort]); + bDIRUsed[bPort] = 0; + } + + if(eAESource == eMCDRV_SRC_DIR0_AA || eDAC0Source == eMCDRV_SRC_DIR0_AA || eDAC1Source == eMCDRV_SRC_DIR0_AA + || aeDITSource[0] == eMCDRV_SRC_DIR0_AA || aeDITSource[1] == eMCDRV_SRC_DIR0_AA || aeDITSource[2] == eMCDRV_SRC_DIR0_AA) + { + bDIRUsed[0] = 1; + } + if(eAESource == eMCDRV_SRC_DIR1_AA || eDAC0Source == eMCDRV_SRC_DIR1_AA || eDAC1Source == eMCDRV_SRC_DIR1_AA + || aeDITSource[0] == eMCDRV_SRC_DIR1_AA || aeDITSource[1] == eMCDRV_SRC_DIR1_AA || aeDITSource[2] == eMCDRV_SRC_DIR1_AA) + { + bDIRUsed[1] = 1; + } + if(eAESource == eMCDRV_SRC_DIR2_AA || eDAC0Source == eMCDRV_SRC_DIR2_AA || eDAC1Source == eMCDRV_SRC_DIR2_AA + || aeDITSource[0] == eMCDRV_SRC_DIR2_AA || aeDITSource[1] == eMCDRV_SRC_DIR2_AA || aeDITSource[2] == eMCDRV_SRC_DIR2_AA) + { + bDIRUsed[2] = 1; + } + + if((bDIRUsed[0] == 1 && ((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != 0 || (dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != 0)) + || (aeDITSource[0] != eMCDRV_SRC_NONE_AA && ((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != 0 || (dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != 0))) + { + return MCDRV_ERROR_ARGUMENT; + } + if((bDIRUsed[1] == 1 && ((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != 0 || (dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != 0)) + || (aeDITSource[1] != eMCDRV_SRC_NONE_AA && ((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != 0 || (dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != 0))) + { + return MCDRV_ERROR_ARGUMENT; + } + if((bDIRUsed[2] == 1 && ((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != 0 || (dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != 0)) + || (aeDITSource[2] != eMCDRV_SRC_NONE_AA && ((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != 0 || (dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != 0))) + { + return MCDRV_ERROR_ARGUMENT; + } + + if((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != 0) + { + sdRet = CheckDIOCommon(psDioInfo, 0); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + sDioInfo.asPortInfo[0].sDioCommon.bInterface = psDioInfo->asPortInfo[0].sDioCommon.bInterface; + } + if((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != 0) + { + sdRet = CheckDIOCommon(psDioInfo, 1); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + sDioInfo.asPortInfo[1].sDioCommon.bInterface = psDioInfo->asPortInfo[1].sDioCommon.bInterface; + } + if((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != 0) + { + sdRet = CheckDIOCommon(psDioInfo, 2); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + sDioInfo.asPortInfo[2].sDioCommon.bInterface = psDioInfo->asPortInfo[2].sDioCommon.bInterface; + } + + if((dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != 0) + { + sdRet = CheckDIODIR(psDioInfo, 0, sDioInfo.asPortInfo[0].sDioCommon.bInterface); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + } + if((dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != 0) + { + sdRet = CheckDIODIR(psDioInfo, 1, sDioInfo.asPortInfo[1].sDioCommon.bInterface); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + } + if((dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != 0) + { + sdRet = CheckDIODIR(psDioInfo, 2, sDioInfo.asPortInfo[2].sDioCommon.bInterface); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + } + + if((dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != 0) + { + sdRet = CheckDIODIT(psDioInfo, 0, sDioInfo.asPortInfo[0].sDioCommon.bInterface); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + } + if((dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != 0) + { + sdRet = CheckDIODIT(psDioInfo, 1, sDioInfo.asPortInfo[1].sDioCommon.bInterface); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + } + if((dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != 0) + { + sdRet = CheckDIODIT(psDioInfo, 2, sDioInfo.asPortInfo[2].sDioCommon.bInterface); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + } + + return sdRet; +} + + +/**************************************************************************** + * CheckDIOCommon + * + * Description: + * validate Digital IO Common parameters. + * Arguments: + * psDioInfo digital IO information + * bPort port number + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 CheckDIOCommon +( + const MCDRV_DIO_INFO* psDioInfo, + UINT8 bPort +) +{ + + if(psDioInfo->asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM) + { + if(psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_48000 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_44100 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_32000 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_24000 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_22050 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_12000 + || psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_11025) + { + return MCDRV_ERROR_ARGUMENT; + } + + if(psDioInfo->asPortInfo[bPort].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER + && psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_16000) + { + if(psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_512) + { + return MCDRV_ERROR_ARGUMENT; + } + } + } + else + { + if(psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_512 + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_256 + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_128 + || psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_16) + { + return MCDRV_ERROR_ARGUMENT; + } + } + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * CheckDIODIR + * + * Description: + * validate Digital IO DIR parameters. + * Arguments: + * psDioInfo digital IO information + * bPort port number + * bInterface Interface(DA/PCM) + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 CheckDIODIR +( + const MCDRV_DIO_INFO* psDioInfo, + UINT8 bPort, + UINT8 bInterface +) +{ + + if(bInterface == MCDRV_DIO_PCM) + { + if(psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_ALAW + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_MULAW) + { + if(psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_13 + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_14 + || psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_16) + { + return MCDRV_ERROR_ARGUMENT; + } + } + } + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * CheckDIDIT + * + * Description: + * validate Digital IO DIT parameters. + * Arguments: + * psDioInfo digital IO information + * bPort port number + * bInterface Interface(DA/PCM) + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * + ****************************************************************************/ +static SINT32 CheckDIODIT +( + const MCDRV_DIO_INFO* psDioInfo, + UINT8 bPort, + UINT8 bInterface +) +{ + + if(bInterface == MCDRV_DIO_PCM) + { + if(psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_ALAW + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_MULAW) + { + if(psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_13 + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_14 + || psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_16) + { + return MCDRV_ERROR_ARGUMENT; + } + } + } + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * SetVol + * + * Description: + * set volume. + * Arguments: + * dUpdate target volume items + * eMode update mode + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +static SINT32 SetVol +( + UINT32 dUpdate, + MCDRV_VOLUPDATE_MODE_AA eMode +) +{ + SINT32 sdRet = McPacket_AddVol_AA(dUpdate, eMode); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + return McDevIf_ExecutePacket_AA(); +} + +/**************************************************************************** + * PreUpdatePath + * + * Description: + * Preprocess update path. + * Arguments: + * none + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_RESOURCEOVER + * + ****************************************************************************/ +static SINT32 PreUpdatePath +( +void +) +{ + SINT32 sdRet = MCDRV_SUCCESS; + UINT8 bReg = 0; + UINT8 bReadReg= 0; + UINT16 wDACMuteParam = 0; + UINT16 wDITMuteParam = 0; + UINT8 bLAT = 0; + + switch(McResCtrl_GetDACSource_AA(eMCDRV_DAC_MASTER_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg = MCB_AA_DAC_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0_AA: + bReg = MCB_AA_DAC_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0_AA: + bReg = MCB_AA_DAC_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg = MCB_AA_DAC_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg = MCB_AA_DAC_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg = MCB_AA_DAC_SOURCE_MIX; + break; + default: + bReg = 0; + } + bReadReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_SOURCE); + if((bReadReg & 0xF0) != 0 && bReg != (bReadReg & 0xF0)) + {/* DAC source changed */ + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_MASTER_OUTL)&MCB_AA_MASTER_OUTL) != 0) + { + if(McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_MASTER_OUTR) != 0) + { + bLAT = MCB_AA_MASTER_OLAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_MASTER_OUTL, bLAT); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_MASTER_OUTR, 0); + wDACMuteParam |= (UINT16)(MCB_AA_MASTER_OFLAGL<<8); + wDACMuteParam |= MCB_AA_MASTER_OFLAGR; + } + + switch(McResCtrl_GetDACSource_AA(eMCDRV_DAC_VOICE_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg = MCB_AA_VOICE_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0_AA: + bReg = MCB_AA_VOICE_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0_AA: + bReg = MCB_AA_VOICE_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg = MCB_AA_VOICE_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg = MCB_AA_VOICE_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg = MCB_AA_VOICE_SOURCE_MIX; + break; + default: + bReg = 0; + } + if((bReadReg & 0x0F) != 0 && bReg != (bReadReg & 0x0F)) + {/* VOICE source changed */ + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_VOICE_ATTL)&MCB_AA_VOICE_ATTL) != 0) + { + if(McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_VOICE_ATTR) != 0) + { + bLAT = MCB_AA_VOICE_LAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_VOICE_ATTL, bLAT); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_VOICE_ATTR, 0); + wDACMuteParam |= (UINT16)(MCB_AA_VOICE_FLAGL<<8); + wDACMuteParam |= MCB_AA_VOICE_FLAGR; + } + + switch(McResCtrl_GetDITSource_AA(eMCDRV_DIO_0_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg = MCB_AA_DIT0_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0_AA: + bReg = MCB_AA_DIT0_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0_AA: + bReg = MCB_AA_DIT0_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg = MCB_AA_DIT0_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg = MCB_AA_DIT0_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg = MCB_AA_DIT0_SOURCE_MIX; + break; + default: + bReg = 0; + } + bReadReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_SRC_SOURCE); + if((bReadReg & 0xF0) != 0 && bReg != (bReadReg & 0xF0)) + {/* DIT source changed */ + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT0_INVOLL)&MCB_AA_DIT0_INVOLL) != 0) + { + if(McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT0_INVOLR) != 0) + { + bLAT = MCB_AA_DIT0_INLAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT0_INVOLL, bLAT); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT0_INVOLR, 0); + wDITMuteParam |= (UINT16)(MCB_AA_DIT0_INVFLAGL<<8); + wDITMuteParam |= MCB_AA_DIT0_INVFLAGR; + } + + switch(McResCtrl_GetDITSource_AA(eMCDRV_DIO_1_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg = MCB_AA_DIT1_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0_AA: + bReg = MCB_AA_DIT1_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0_AA: + bReg = MCB_AA_DIT1_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg = MCB_AA_DIT1_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg = MCB_AA_DIT1_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg = MCB_AA_DIT1_SOURCE_MIX; + break; + default: + bReg = 0; + } + if((bReadReg & 0x0F) != 0 && bReg != (bReadReg & 0x0F)) + {/* DIT source changed */ + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT1_INVOLL)&MCB_AA_DIT1_INVOLL) != 0) + { + if(McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT1_INVOLR) != 0) + { + bLAT = MCB_AA_DIT1_INLAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT1_INVOLL, bLAT); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT1_INVOLR, 0); + wDITMuteParam |= (UINT16)(MCB_AA_DIT1_INVFLAGL<<8); + wDITMuteParam |= MCB_AA_DIT1_INVFLAGR; + } + + switch(McResCtrl_GetDITSource_AA(eMCDRV_DIO_2_AA)) + { + case eMCDRV_SRC_PDM_AA: + bReg = MCB_AA_DIT2_SOURCE_AD; + break; + case eMCDRV_SRC_ADC0_AA: + bReg = MCB_AA_DIT2_SOURCE_AD; + break; + case eMCDRV_SRC_DIR0_AA: + bReg = MCB_AA_DIT2_SOURCE_DIR0; + break; + case eMCDRV_SRC_DIR1_AA: + bReg = MCB_AA_DIT2_SOURCE_DIR1; + break; + case eMCDRV_SRC_DIR2_AA: + bReg = MCB_AA_DIT2_SOURCE_DIR2; + break; + case eMCDRV_SRC_MIX_AA: + bReg = MCB_AA_DIT2_SOURCE_MIX; + break; + default: + bReg = 0; + } + bReadReg = McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_SRC_SOURCE_1); + if((bReadReg & 0x0F) != 0 && bReg != (bReadReg & 0x0F)) + {/* DIT source changed */ + if((McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT2_INVOLL)&MCB_AA_DIT2_INVOLL) != 0) + { + if(McResCtrl_GetRegVal_AA(MCDRV_PACKET_REGTYPE_B_MIXER_AA, MCI_AA_DIT2_INVOLR) != 0) + { + bLAT = MCB_AA_DIT2_INLAT; + } + else + { + bLAT = 0; + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT2_INVOLL, bLAT); + } + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_WRITE_AA | MCDRV_PACKET_REGTYPE_B_MIXER_AA | MCI_AA_DIT2_INVOLR, 0); + wDITMuteParam |= (UINT16)(MCB_AA_DIT2_INVFLAGL<<8); + wDITMuteParam |= MCB_AA_DIT2_INVFLAGR; + } + + sdRet = McDevIf_ExecutePacket_AA(); + if(sdRet != MCDRV_SUCCESS) + { + return sdRet; + } + + if(wDACMuteParam != 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_DACMUTE_AA | wDACMuteParam, 0); + } + if(wDITMuteParam != 0) + { + McDevIf_AddPacket_AA(MCDRV_PACKET_TYPE_EVTWAIT_AA | MCDRV_EVT_DITMUTE_AA | wDITMuteParam, 0); + } + /* do not Execute & Clear */ + return MCDRV_SUCCESS; +} + +/**************************************************************************** + * McDrv_Ctrl + * + * Description: + * MC Driver I/F function. + * Arguments: + * dCmd command # + * pvPrm parameter + * dPrm update info + * Return: + * MCDRV_SUCCESS + * MCDRV_ERROR_ARGUMENT + * MCDRV_ERROR_RESOURCEOVER + * MCDRV_ERROR_STATE + * + ****************************************************************************/ +SINT32 McDrv_Ctrl_AA +( + UINT32 dCmd, + void* pvPrm, + UINT32 dPrm +) +{ + SINT32 sdRet = MCDRV_ERROR; + + switch(dCmd) + { + case MCDRV_INIT: return init((MCDRV_INIT_INFO*)pvPrm); + case MCDRV_TERM: return term(); + default: break; + } + + McSrv_Lock(); + + switch (dCmd) + { + case MCDRV_UPDATE_CLOCK: + sdRet = update_clock((MCDRV_CLOCK_INFO*)pvPrm); + break; + case MCDRV_GET_PATH: + sdRet = get_path((MCDRV_PATH_INFO*)pvPrm); + break; + case MCDRV_SET_PATH: + sdRet = set_path((MCDRV_PATH_INFO*)pvPrm); + break; + case MCDRV_GET_VOLUME: + sdRet = get_volume((MCDRV_VOL_INFO*)pvPrm); + break; + case MCDRV_SET_VOLUME: + sdRet = set_volume((MCDRV_VOL_INFO*)pvPrm); + break; + case MCDRV_GET_DIGITALIO: + sdRet = get_digitalio((MCDRV_DIO_INFO*)pvPrm); + break; + case MCDRV_SET_DIGITALIO: + sdRet = set_digitalio((MCDRV_DIO_INFO*)pvPrm, dPrm); + break; + case MCDRV_GET_DAC: + sdRet = get_dac((MCDRV_DAC_INFO*)pvPrm); + break; + case MCDRV_SET_DAC: + sdRet = set_dac((MCDRV_DAC_INFO*)pvPrm, dPrm); + break; + case MCDRV_GET_ADC: + sdRet = get_adc((MCDRV_ADC_INFO*)pvPrm); + break; + case MCDRV_SET_ADC: + sdRet = set_adc((MCDRV_ADC_INFO*)pvPrm, dPrm); + break; + case MCDRV_GET_SP: + sdRet = get_sp((MCDRV_SP_INFO*)pvPrm); + break; + case MCDRV_SET_SP: + sdRet = set_sp((MCDRV_SP_INFO*)pvPrm); + break; + case MCDRV_GET_DNG: + sdRet = get_dng((MCDRV_DNG_INFO*)pvPrm); + break; + case MCDRV_SET_DNG: + sdRet = set_dng((MCDRV_DNG_INFO*)pvPrm, dPrm); + break; + case MCDRV_SET_AUDIOENGINE: + sdRet = set_ae((MCDRV_AE_INFO*)pvPrm, dPrm); + break; + case MCDRV_GET_PDM: + sdRet = get_pdm((MCDRV_PDM_INFO*)pvPrm); + break; + case MCDRV_SET_PDM: + sdRet = set_pdm((MCDRV_PDM_INFO*)pvPrm, dPrm); + break; + case MCDRV_CONFIG_GP: + sdRet = config_gp((MCDRV_GP_MODE*)pvPrm); + break; + case MCDRV_MASK_GP: + sdRet = mask_gp((UINT8*)pvPrm, dPrm); + break; + case MCDRV_GETSET_GP: + sdRet = getset_gp((UINT8*)pvPrm, dPrm); + break; + case MCDRV_READ_REG : + sdRet = read_reg((MCDRV_REG_INFO*)pvPrm); + break; + case MCDRV_WRITE_REG : + sdRet = write_reg((MCDRV_REG_INFO*)pvPrm); + break; + case MCDRV_GET_SYSEQ : + case MCDRV_SET_SYSEQ : + sdRet = MCDRV_SUCCESS; + break; + + case MCDRV_IRQ: + break; + + default: + break; + } + + McSrv_Unlock(); + + return sdRet; +} diff --git a/sound/soc/codecs/mc1n2/mcdriver_AA.h b/sound/soc/codecs/mc1n2/mcdriver_AA.h new file mode 100644 index 0000000..807e867 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcdriver_AA.h @@ -0,0 +1,25 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcdriver_AA.h
+ *
+ * Description : MC Driver header
+ *
+ * Version : 1.0.0 2010.09.01
+ *
+ ****************************************************************************/
+
+#ifndef _MCDRIVER_AA_H_
+#define _MCDRIVER_AA_H_
+
+#include "mctypedef.h"
+
+
+
+signed long McDrv_Ctrl_AA( UINT32 dCmd, void* pvPrm, UINT32 dPrm );
+
+
+
+
+#endif /* _MCDRIVER_H_ */
diff --git a/sound/soc/codecs/mc1n2/mcmachdep.c b/sound/soc/codecs/mc1n2/mcmachdep.c new file mode 100644 index 0000000..ce3c878 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcmachdep.c @@ -0,0 +1,318 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcmachdep.c
+ *
+ * Description : machine dependent part for MC Driver
+ *
+ * Version : 1.0.0 2010.09.10
+ *
+ ****************************************************************************/
+
+#include <linux/delay.h>
+#include <linux/i2c.h>
+#include <linux/mutex.h>
+#include "mcmachdep.h"
+#include "mc1n2_priv.h"
+#if (MCDRV_DEBUG_LEVEL>=4)
+#include "mcdebuglog.h"
+#endif
+
+static struct mutex McDrv_Mutex;
+static struct i2c_client *McDrv_I2C_Client;
+
+/****************************************************************************
+ * machdep_SystemInit
+ *
+ * Description:
+ * Initialize the system.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void machdep_SystemInit
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("machdep_SystemInit");
+#endif
+
+ /* Please implement system initialization procedure if need */
+ mutex_init(&McDrv_Mutex);
+ McDrv_I2C_Client = mc1n2_get_i2c_client();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("machdep_SystemInit", 0);
+#endif
+}
+
+/****************************************************************************
+ * machdep_SystemTerm
+ *
+ * Description:
+ * Terminate the system.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void machdep_SystemTerm
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("machdep_SystemTerm");
+#endif
+
+ /* Please implement system termination procedure if need */
+ mutex_destroy(&McDrv_Mutex);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("machdep_SystemTerm", 0);
+#endif
+}
+
+/****************************************************************************
+ * machdep_ClockStart
+ *
+ * Description:
+ * Start clock.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void machdep_ClockStart
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("machdep_ClockStart");
+#endif
+
+ /* Please implement clock start procedure if need */
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("machdep_ClockStart", 0);
+#endif
+}
+
+/****************************************************************************
+ * machdep_ClockStop
+ *
+ * Description:
+ * Stop clock.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void machdep_ClockStop
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("machdep_ClockStop");
+#endif
+
+ /* Please implement clock stop procedure if need */
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("machdep_ClockStop", 0);
+#endif
+}
+
+/***************************************************************************
+ * machdep_WriteI2C
+ *
+ * Function:
+ * Write a byte data to the register.
+ * Arguments:
+ * bSlaveAdr slave address
+ * pbData byte data for write
+ * dSize byte data length
+ * Return:
+ * None
+ *
+ ****************************************************************************/
+void machdep_WriteI2C
+(
+ UINT8 bSlaveAdr,
+ const UINT8* pbData,
+ UINT32 dSize
+)
+{
+ int count;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("machdep_WriteI2C");
+#endif
+
+ /* Please implement register write procedure */
+ count = i2c_master_send(McDrv_I2C_Client, pbData, dSize);
+ if (count != dSize) {
+ dev_err(&McDrv_I2C_Client->dev, "I2C write error\n");
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("machdep_WriteI2C", 0);
+#endif
+}
+
+/***************************************************************************
+ * machdep_ReadI2C
+ *
+ * Function:
+ * Read a byte data from the register.
+ * Arguments:
+ * bSlaveAdr slave address
+ * dAddress address of register
+ * Return:
+ * read data
+ *
+ ****************************************************************************/
+UINT8 machdep_ReadI2C
+(
+ UINT8 bSlaveAdr,
+ UINT32 dAddress
+)
+{
+ UINT8 bData;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("machdep_ReadI2C");
+#endif
+
+ /* Please implement register read procedure */
+ bData = mc1n2_i2c_read_byte(McDrv_I2C_Client, dAddress);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bData;
+ McDebugLog_FuncOut("machdep_ReadI2C", &sdRet);
+#endif
+
+ return bData;
+}
+
+/****************************************************************************
+ * machdep_Sleep
+ *
+ * Function:
+ * Sleep for a specified interval.
+ * Arguments:
+ * dSleepTime sleep time [us]
+ * Return:
+ * None
+ *
+ ****************************************************************************/
+void machdep_Sleep
+(
+ UINT32 dSleepTime
+)
+{
+ unsigned long ms = dSleepTime / 1000;
+ unsigned long us = dSleepTime % 1000;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("machdep_Sleep");
+#endif
+
+ /* Please implement sleep procedure */
+ if (us)
+ udelay(us);
+ if (ms)
+ msleep(ms);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("machdep_Sleep", 0);
+#endif
+}
+
+/***************************************************************************
+ * machdep_Lock
+ *
+ * Function:
+ * Lock a call of the driver.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void machdep_Lock
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("machdep_Lock");
+#endif
+
+ /* Please implement lock procedure */
+ mutex_lock(&McDrv_Mutex);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("machdep_Lock", 0);
+#endif
+}
+
+/***************************************************************************
+ * machdep_Unlock
+ *
+ * Function:
+ * Unlock a call of the driver.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void machdep_Unlock
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("machdep_Unlock");
+#endif
+
+ /* Please implement unlock procedure */
+ mutex_unlock(&McDrv_Mutex);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("machdep_Unlock", 0);
+#endif
+}
+
+/***************************************************************************
+ * machdep_DebugPrint
+ *
+ * Function:
+ * Output debug log.
+ * Arguments:
+ * pbLogString log string buffer pointer
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void machdep_DebugPrint
+(
+ UINT8* pbLogString
+)
+{
+ /* Please implement debug output procedure */
+ pr_debug("MCDRV: %s\n", pbLogString);
+}
+
diff --git a/sound/soc/codecs/mc1n2/mcmachdep.h b/sound/soc/codecs/mc1n2/mcmachdep.h new file mode 100644 index 0000000..4ef2844 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcmachdep.h @@ -0,0 +1,34 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcmachdep.h
+ *
+ * Description : MC Driver machine dependent part header
+ *
+ * Version : 1.0.0 2010.09.10
+ *
+ ****************************************************************************/
+
+#ifndef _MCMACHDEP_H_
+#define _MCMACHDEP_H_
+
+#include "mctypedef.h"
+
+
+#define MCDRV_DEBUG_LEVEL (0)
+
+
+void machdep_SystemInit ( void );
+void machdep_SystemTerm ( void );
+void machdep_ClockStart ( void );
+void machdep_ClockStop ( void );
+void machdep_WriteI2C ( UINT8 bSlaveAdr, const UINT8 *pbData, UINT32 dSize );
+UINT8 machdep_ReadI2C ( UINT8 bSlaveAdr, UINT32 dAddress );
+void machdep_Sleep ( UINT32 dSleepTime );
+void machdep_Lock ( void );
+void machdep_Unlock ( void );
+void machdep_DebugPrint ( UINT8 *pbLogString );
+
+
+#endif /* _MCMACHDEP_H_ */
diff --git a/sound/soc/codecs/mc1n2/mcpacking.c b/sound/soc/codecs/mc1n2/mcpacking.c new file mode 100644 index 0000000..93fc5fd --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcpacking.c @@ -0,0 +1,4710 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcpacking.c
+ *
+ * Description : MC Driver packet packing control
+ *
+ * Version : 1.0.0 2010.09.10
+ *
+ ****************************************************************************/
+
+
+#include "mcpacking.h"
+#include "mcdevif.h"
+#include "mcresctrl.h"
+#include "mcdefs.h"
+#include "mcdevprof.h"
+#include "mcservice.h"
+#include "mcmachdep.h"
+#if MCDRV_DEBUG_LEVEL
+#include "mcdebuglog.h"
+#endif
+
+
+
+#define MCDRV_TCXO_WAIT_TIME ((UINT32)2000)
+#define MCDRV_PLRST_WAIT_TIME ((UINT32)2000)
+#define MCDRV_LDOA_WAIT_TIME ((UINT32)1000)
+#define MCDRV_SP_WAIT_TIME ((UINT32)150)
+#define MCDRV_HP_WAIT_TIME ((UINT32)300)
+#define MCDRV_RC_WAIT_TIME ((UINT32)150)
+
+/* SrcRate default */
+#define MCDRV_DIR_SRCRATE_48000 (32768)
+#define MCDRV_DIR_SRCRATE_44100 (30106)
+#define MCDRV_DIR_SRCRATE_32000 (21845)
+#define MCDRV_DIR_SRCRATE_24000 (16384)
+#define MCDRV_DIR_SRCRATE_22050 (15053)
+#define MCDRV_DIR_SRCRATE_16000 (10923)
+#define MCDRV_DIR_SRCRATE_12000 (8192)
+#define MCDRV_DIR_SRCRATE_11025 (7526)
+#define MCDRV_DIR_SRCRATE_8000 (5461)
+
+#define MCDRV_DIT_SRCRATE_48000 (4096)
+#define MCDRV_DIT_SRCRATE_44100 (4458)
+#define MCDRV_DIT_SRCRATE_32000 (6144)
+#define MCDRV_DIT_SRCRATE_24000 (8192)
+#define MCDRV_DIT_SRCRATE_22050 (8916)
+#define MCDRV_DIT_SRCRATE_16000 (12288)
+#define MCDRV_DIT_SRCRATE_12000 (16384)
+#define MCDRV_DIT_SRCRATE_11025 (17833)
+#define MCDRV_DIT_SRCRATE_8000 (24576)
+
+static SINT32 AddAnalogPowerUpAuto(const MCDRV_POWER_INFO* psPowerInfo, const MCDRV_POWER_UPDATE* psPowerUpdate);
+
+static void AddDIPad(void);
+static void AddPAD(void);
+static SINT32 AddSource(void);
+static void AddDIStart(void);
+static UINT8 GetMicMixBit(const MCDRV_CHANNEL* psChannel);
+static void AddDigVolPacket(UINT8 bVolL, UINT8 bVolR, UINT8 bVolLAddr, UINT8 bLAT, UINT8 bVolRAddr, MCDRV_VOLUPDATE_MODE eMode);
+static void AddStopADC(void);
+static void AddStopPDM(void);
+static UINT8 IsModifiedDIO(UINT32 dUpdateInfo);
+static UINT8 IsModifiedDIOCommon(MCDRV_DIO_PORT_NO ePort);
+static UINT8 IsModifiedDIODIR(MCDRV_DIO_PORT_NO ePort);
+static UINT8 IsModifiedDIODIT(MCDRV_DIO_PORT_NO ePort);
+static void AddDIOCommon(MCDRV_DIO_PORT_NO ePort);
+static void AddDIODIR(MCDRV_DIO_PORT_NO ePort);
+static void AddDIODIT(MCDRV_DIO_PORT_NO ePort);
+
+#define MCDRV_DPB_KEEP 0
+#define MCDRV_DPB_UP 1
+static SINT32 PowerUpDig(UINT8 bDPBUp);
+
+static UINT32 GetMaxWait(UINT8 bRegChange);
+
+/****************************************************************************
+ * McPacket_AddInit
+ *
+ * Description:
+ * Add initialize packet.
+ * Arguments:
+ * psInitInfo information for initialization
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddInit
+(
+ const MCDRV_INIT_INFO* psInitInfo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ MCDRV_POWER_INFO sPowerInfo;
+ MCDRV_POWER_UPDATE sPowerUpdate;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddInit");
+#endif
+
+
+ /* RSTA */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_RST, MCB_RST);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_RST, 0);
+
+ /* ANA_RST */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_ANA_RST, MCI_ANA_RST_DEF);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_ANA_RST, 0);
+
+ /* SDIN_MSK*, SDO_DDR* */
+ bReg = MCB_SDIN_MSK2;
+ if(psInitInfo->bDioSdo2Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_SDO_DDR2;
+ }
+ bReg |= MCB_SDIN_MSK1;
+ if(psInitInfo->bDioSdo1Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_SDO_DDR1;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_SD_MSK, bReg);
+
+ bReg = MCB_SDIN_MSK0;
+ if(psInitInfo->bDioSdo0Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_SDO_DDR0;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_SD_MSK_1, bReg);
+
+ /* BCLK_MSK*, BCLD_DDR*, LRCK_MSK*, LRCK_DDR*, PCM_HIZ* */
+ bReg = 0;
+ bReg |= MCB_BCLK_MSK2;
+ bReg |= MCB_LRCK_MSK2;
+ if(psInitInfo->bDioClk2Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_BCLK_DDR2;
+ bReg |= MCB_LRCK_DDR2;
+ }
+ bReg |= MCB_BCLK_MSK1;
+ bReg |= MCB_LRCK_MSK1;
+ if(psInitInfo->bDioClk1Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_BCLK_DDR1;
+ bReg |= MCB_LRCK_DDR1;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_BCLK_MSK, bReg);
+
+ bReg = 0;
+ bReg |= MCB_BCLK_MSK0;
+ bReg |= MCB_LRCK_MSK0;
+ if(psInitInfo->bDioClk0Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_BCLK_DDR0;
+ bReg |= MCB_LRCK_DDR0;
+ }
+ if(psInitInfo->bPcmHiz == MCDRV_PCMHIZ_HIZ)
+ {
+ bReg |= (MCB_PCMOUT_HIZ2 | MCB_PCMOUT_HIZ1 | MCB_PCMOUT_HIZ0);
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_BCLK_MSK_1, bReg);
+
+ /* DI*_BCKP */
+
+ /* PA*_MSK, PA*_DDR */
+ bReg = MCI_PA_MSK_DEF;
+ if(psInitInfo->bPad0Func == MCDRV_PAD_PDMCK)
+ {
+ bReg |= MCB_PA0_DDR;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PA_MSK, bReg);
+
+ /* PA0_OUT */
+ if(psInitInfo->bPad0Func == MCDRV_PAD_PDMCK)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PA_OUT, MCB_PA_OUT);
+ }
+
+ /* SCU_PA* */
+
+ /* CKSEL */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_CKSEL, psInitInfo->bCkSel);
+
+ /* DIVR0, DIVF0 */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DIVR0, psInitInfo->bDivR0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DIVF0, psInitInfo->bDivF0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DIVR1, psInitInfo->bDivR1);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DIVF1, psInitInfo->bDivF1);
+
+ /* Clock Start */
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McSrv_ClockStart();
+
+ /* DP0 */
+ bReg = MCI_DPADIF_DEF & (UINT8)~MCB_DP0_CLKI0;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bReg);
+ if(psInitInfo->bCkSel != MCDRV_CKSEL_CMOS)
+ {
+ /* 2ms wait */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | MCDRV_TCXO_WAIT_TIME, 0);
+ }
+
+ /* PLLRST0 */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_PLL_RST, 0);
+ /* 2ms wait */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | MCDRV_PLRST_WAIT_TIME, 0);
+ /* DP1/DP2 up */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL, 0);
+ /* RSTB */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_RSTB, 0);
+ /* DPB */
+ bReg = MCB_PWM_DPPDM|MCB_PWM_DPDI2|MCB_PWM_DPDI1|MCB_PWM_DPDI0;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL_1, bReg);
+
+ /* DCL_GAIN, DCL_LMT */
+ bReg = (psInitInfo->bDclGain<<4) | psInitInfo->bDclLimit;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DCL, bReg);
+
+ /* DIF_LI, DIF_LO* */
+ bReg = (psInitInfo->bLineOut2Dif<<5) | (psInitInfo->bLineOut1Dif<<4) | psInitInfo->bLineIn1Dif;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_DIF_LINE, bReg);
+
+ /* SP*_HIZ, SPMN */
+ bReg = (psInitInfo->bSpmn << 1);
+ if(MCDRV_SPHIZ_HIZ == psInitInfo->bSpHiz)
+ {
+ bReg |= (MCB_SPL_HIZ|MCB_SPR_HIZ);
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SP_MODE, bReg);
+
+ /* MC*SNG */
+ bReg = (psInitInfo->bMic2Sng<<6) | (psInitInfo->bMic1Sng<<2);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_MC_GAIN, bReg);
+ bReg = (psInitInfo->bMic3Sng<<2);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_MC3_GAIN, bReg);
+
+ /* CPMOD */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_CPMOD, psInitInfo->bCpMod);
+
+ /* AVDDLEV, VREFLEV */
+ bReg = 0x20 | psInitInfo->bAvddLev;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LEV, bReg);
+
+ if(((psInitInfo->bPowerMode & MCDRV_POWMODE_VREFON) != 0) || (McResCtrl_GetAPMode() == eMCDRV_APM_OFF))
+ {
+ bReg = MCI_PWM_ANALOG_0_DEF;
+ if(psInitInfo->bLdo == MCDRV_LDO_ON)
+ {
+ /* AP_LDOA */
+ bReg &= (UINT8)~MCB_PWM_LDOA;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, bReg);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | MCDRV_LDOA_WAIT_TIME, 0);
+ }
+ else
+ {
+ bReg &= (UINT8)~MCB_PWM_REFA;
+ }
+ /* AP_VR up */
+ bReg &= (UINT8)~MCB_PWM_VR;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, bReg);
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | psInitInfo->sWaitTime.dVrefRdy2, 0);
+ }
+ }
+ }
+
+ if(MCDRV_SUCCESS == sdRet)
+ {
+ if(McResCtrl_GetAPMode() == eMCDRV_APM_OFF)
+ {
+ bReg = MCB_APMOFF_SP|MCB_APMOFF_HP|MCB_APMOFF_RC;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_APMOFF, bReg);
+ }
+ sdRet = McDevIf_ExecutePacket();
+ }
+ if(MCDRV_SUCCESS == sdRet)
+ {
+ /* unused path power down */
+ McResCtrl_GetPowerInfo(&sPowerInfo);
+ sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL;
+ sPowerUpdate.abAnalog[0] = (UINT8)MCDRV_POWUPDATE_ANALOG0_ALL;
+ sPowerUpdate.abAnalog[1] = (UINT8)MCDRV_POWUPDATE_ANALOG1_ALL;
+ sPowerUpdate.abAnalog[2] = (UINT8)MCDRV_POWUPDATE_ANALOG2_ALL;
+ sPowerUpdate.abAnalog[3] = (UINT8)MCDRV_POWUPDATE_ANALOG3_ALL;
+ sPowerUpdate.abAnalog[4] = (UINT8)MCDRV_POWUPDATE_ANALOG4_ALL;
+ sdRet = McPacket_AddPowerDown(&sPowerInfo, &sPowerUpdate);
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddInit", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddPowerUp
+ *
+ * Description:
+ * Add powerup packet.
+ * Arguments:
+ * psPowerInfo power information
+ * psPowerUpdate power update information
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddPowerUp
+(
+ const MCDRV_POWER_INFO* psPowerInfo,
+ const MCDRV_POWER_UPDATE* psPowerUpdate
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ UINT8 bRegDPADIF;
+ UINT8 bRegCur;
+ UINT8 bRegAna1;
+ UINT8 bRegAna2;
+ UINT32 dUpdate;
+ UINT8 bRegChange;
+ UINT8 bSpHizReg;
+ UINT32 dWaitTime;
+ UINT32 dWaitTimeDone = 0;
+ UINT8 bWaitVREFRDY = 0;
+ UINT8 bWaitHPVolUp = 0;
+ UINT8 bWaitSPVolUp = 0;
+ MCDRV_INIT_INFO sInitInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddPowerUp");
+#endif
+
+ bRegDPADIF = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_DPADIF);
+
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+
+ /* Digital Power */
+ dUpdate = ~psPowerInfo->dDigital & psPowerUpdate->dDigital;
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DP0) != 0UL)
+ {
+ if((bRegDPADIF & (MCB_DP0_CLKI1|MCB_DP0_CLKI0)) == (MCB_DP0_CLKI1|MCB_DP0_CLKI0))
+ {/* DP0 changed */
+ /* CKSEL */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_CKSEL, sInitInfo.bCkSel);
+ /* DIVR0, DIVF0 */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DIVR0, sInitInfo.bDivR0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DIVF0, sInitInfo.bDivF0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DIVR1, sInitInfo.bDivR1);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DIVF1, sInitInfo.bDivF1);
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ /* Clock Start */
+ McSrv_ClockStart();
+ /* DP0 up */
+ if((((bRegDPADIF & MCB_CLKSRC) == 0) && ((bRegDPADIF & MCB_CLKINPUT) == 0))
+ || (((bRegDPADIF & MCB_CLKSRC) != 0) && ((bRegDPADIF & MCB_CLKINPUT) != 0)))
+ {
+ bRegDPADIF &= (UINT8)~MCB_DP0_CLKI0;
+ }
+ else
+ {
+ bRegDPADIF &= (UINT8)~MCB_DP0_CLKI1;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bRegDPADIF);
+ if(sInitInfo.bCkSel != MCDRV_CKSEL_CMOS)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | MCDRV_TCXO_WAIT_TIME, 0);
+ }
+ /* PLLRST0 up */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_PLL_RST, 0);
+ /* 2ms wait */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | MCDRV_PLRST_WAIT_TIME, 0);
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ /* DP1/DP2 up */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL, 0);
+ /* DPB/DPDI* up */
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_PWM_DIGITAL_1);
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI0) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPDI0;
+ }
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI1) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPDI1;
+ }
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI2) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPDI2;
+ }
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPPDM) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPPDM;
+ }
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPB) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPB;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL_1, bReg);
+ }
+ }
+ }
+ else if((dUpdate & MCDRV_POWINFO_DIGITAL_DP2) != 0UL)
+ {
+ /* DP1/DP2 up */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL, 0);
+ /* DPB/DPDI* up */
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_PWM_DIGITAL_1);
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI0) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPDI0;
+ }
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI1) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPDI1;
+ }
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI2) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPDI2;
+ }
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPPDM) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPPDM;
+ }
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPB) != 0UL)
+ {
+ bReg &= (UINT8)~MCB_PWM_DPB;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL_1, bReg);
+ }
+ else
+ {
+ }
+
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ /* DPBDSP */
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPBDSP) != 0UL)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL_BDSP, 0);
+ }
+ /* DPADIF */
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPADIF) != 0UL)
+ {
+ bRegDPADIF = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_DPADIF);
+ bRegDPADIF &= (UINT8)~MCB_DPADIF;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bRegDPADIF);
+ }
+ }
+ }
+
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ if(McResCtrl_GetAPMode() == eMCDRV_APM_ON)
+ {
+ sdRet = AddAnalogPowerUpAuto(psPowerInfo, psPowerUpdate);
+ }
+ else
+ {
+ /* Analog Power */
+ dUpdate = (UINT32)~psPowerInfo->abAnalog[0] & (UINT32)psPowerUpdate->abAnalog[0];
+ if((dUpdate & (UINT32)MCB_PWM_VR) != 0UL)
+ {
+ if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_0) & MCB_PWM_VR) != 0)
+ {/* AP_VR changed */
+ bReg = MCI_PWM_ANALOG_0_DEF;
+ if(sInitInfo.bLdo == MCDRV_LDO_ON)
+ {
+ /* AP_LDOA */
+ bReg &= (UINT8)~MCB_PWM_LDOA;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, bReg);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | MCDRV_LDOA_WAIT_TIME, 0);
+ }
+ else
+ {
+ bReg &= (UINT8)~MCB_PWM_REFA;
+ }
+ /* AP_VR up */
+ bReg &= (UINT8)~MCB_PWM_VR;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, bReg);
+ dWaitTimeDone = sInitInfo.sWaitTime.dVrefRdy1;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | dWaitTimeDone, 0);
+ bWaitVREFRDY = 1;
+ }
+
+ bReg = (UINT8)((UINT8)~((UINT8)~psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) & McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_1));
+ /* SP_HIZ control */
+ if(MCDRV_SPHIZ_HIZ == sInitInfo.bSpHiz)
+ {
+ bSpHizReg = 0;
+ if((bReg & (MCB_PWM_SPL1 | MCB_PWM_SPL2)) != 0)
+ {
+ bSpHizReg |= MCB_SPL_HIZ;
+ }
+
+ if((bReg & (MCB_PWM_SPR1 | MCB_PWM_SPR2)) != 0)
+ {
+ bSpHizReg |= MCB_SPR_HIZ;
+ }
+
+ bSpHizReg |= (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_SP_MODE) & (MCB_SPMN | MCB_SP_SWAP));
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SP_MODE, bSpHizReg);
+ }
+
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_3);
+ bReg = (UINT8)((UINT8)~((UINT8)~psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3]) & bRegCur);
+ bRegChange = bReg ^ bRegCur;
+ /* set DACON and NSMUTE before setting 0 to AP_DA */
+ if(((bRegChange & (MCB_PWM_DAR|MCB_PWM_DAL)) != 0) && ((psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3] & (MCB_PWM_DAR|MCB_PWM_DAL)) != (MCB_PWM_DAR|MCB_PWM_DAL)))
+ {
+ if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_DAC_CONFIG) & MCB_DACON) == 0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DAC_CONFIG, MCB_NSMUTE);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DAC_CONFIG, (MCB_DACON | MCB_NSMUTE));
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DAC_CONFIG, MCB_DACON);
+ }
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_3, bReg);
+ bRegChange &= (MCB_PWM_MB1|MCB_PWM_MB2|MCB_PWM_MB3);
+
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_4);
+ bReg = (UINT8)((UINT8)~((UINT8)~psPowerInfo->abAnalog[4] & psPowerUpdate->abAnalog[4]) & bRegCur);
+ bRegChange |= (bReg ^ bRegCur);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_4, bReg);
+
+ if(bWaitVREFRDY != 0)
+ {
+ /* wait VREF_RDY */
+ dWaitTimeDone = sInitInfo.sWaitTime.dVrefRdy2 - dWaitTimeDone;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | dWaitTimeDone, 0);
+ }
+
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_0);
+ bReg = (UINT8)(~dUpdate & bRegCur);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, bReg);
+ if(((bRegCur & MCB_PWM_CP) != 0) && ((bReg & MCB_PWM_CP) == 0))
+ {/* AP_CP up */
+ dWaitTime = MCDRV_HP_WAIT_TIME;
+ }
+ else
+ {
+ dWaitTime = 0;
+ }
+
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_1);
+ bRegAna1 = (UINT8)((UINT8)~((UINT8)~psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) & bRegCur);
+ if((((bRegCur & MCB_PWM_SPL1) != 0) && ((bRegAna1 & MCB_PWM_SPL1) == 0))
+ || (((bRegCur & MCB_PWM_SPR1) != 0) && ((bRegAna1 & MCB_PWM_SPR1) == 0)))
+ {/* AP_SP* up */
+ bReg = bRegAna1|(bRegCur&(UINT8)~(MCB_PWM_SPL1|MCB_PWM_SPR1));
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_1, bReg);
+ if(dWaitTime == (UINT32)0)
+ {
+ dWaitTime = MCDRV_SP_WAIT_TIME;
+ bWaitSPVolUp = 1;
+ }
+ }
+ if((((bRegCur & MCB_PWM_HPL) != 0) && ((bRegAna1 & MCB_PWM_HPL) == 0))
+ || (((bRegCur & MCB_PWM_HPR) != 0) && ((bRegAna1 & MCB_PWM_HPR) == 0)))
+ {
+ bWaitHPVolUp = 1;
+ }
+
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_2);
+ bRegAna2 = (UINT8)((UINT8)~((UINT8)~psPowerInfo->abAnalog[2] & psPowerUpdate->abAnalog[2]) & bRegCur);
+ if(((bRegCur & MCB_PWM_RC1) != 0) && ((bRegAna2 & MCB_PWM_RC1) == 0))
+ {/* AP_RC up */
+ bReg = bRegAna2|(bRegCur&(UINT8)~MCB_PWM_RC1);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_2, bReg);
+ if(dWaitTime == (UINT32)0)
+ {
+ dWaitTime = MCDRV_RC_WAIT_TIME;
+ }
+ }
+ if(dWaitTime > (UINT32)0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | dWaitTime, 0);
+ dWaitTimeDone += dWaitTime;
+ }
+
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_1, bRegAna1);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_2, bRegAna2);
+
+ /* time wait */
+ dWaitTime = GetMaxWait(bRegChange);
+ if(dWaitTime > dWaitTimeDone)
+ {
+ dWaitTime = dWaitTime - dWaitTimeDone;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | dWaitTime, 0);
+ dWaitTimeDone += dWaitTime;
+ }
+
+ if((bWaitSPVolUp != 0) && (sInitInfo.sWaitTime.dSpRdy > dWaitTimeDone))
+ {
+ dWaitTime = sInitInfo.sWaitTime.dSpRdy - dWaitTimeDone;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | dWaitTime, 0);
+ dWaitTimeDone += dWaitTime;
+ }
+ if((bWaitHPVolUp != 0) && (sInitInfo.sWaitTime.dHpRdy > dWaitTimeDone))
+ {
+ dWaitTime = sInitInfo.sWaitTime.dHpRdy - dWaitTimeDone;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | dWaitTime, 0);
+ dWaitTimeDone += dWaitTime;
+ }
+ }
+ }
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddPowerUp", &sdRet);
+#endif
+ return sdRet;
+}
+
+/****************************************************************************
+ * AddAnalogPowerUpAuto
+ *
+ * Description:
+ * Add analog auto powerup packet.
+ * Arguments:
+ * psPowerInfo power information
+ * psPowerUpdate power update information
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+static SINT32 AddAnalogPowerUpAuto
+(
+ const MCDRV_POWER_INFO* psPowerInfo,
+ const MCDRV_POWER_UPDATE* psPowerUpdate
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ UINT8 bRegCur;
+ UINT32 dUpdate;
+ UINT8 bRegChange;
+ UINT8 bSpHizReg;
+ MCDRV_INIT_INFO sInitInfo;
+ UINT32 dWaitTime = 0;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("AddAnalogPowerUpAuto");
+#endif
+
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+
+ /* Analog Power */
+ dUpdate = (UINT32)~psPowerInfo->abAnalog[0] & psPowerUpdate->abAnalog[0];
+ if((dUpdate & (UINT32)MCB_PWM_VR) != 0UL)
+ {
+ if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_0) & MCB_PWM_VR) != 0)
+ {/* AP_VR changed */
+ /* AP_VR up */
+ bReg = MCI_PWM_ANALOG_0_DEF;
+ if(sInitInfo.bLdo == MCDRV_LDO_ON)
+ {
+ /* AP_LDOA */
+ bReg &= (UINT8)~MCB_PWM_LDOA;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, bReg);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | MCDRV_LDOA_WAIT_TIME, 0);
+ }
+ else
+ {
+ bReg &= (UINT8)~MCB_PWM_REFA;
+ }
+ bReg &= (UINT8)~MCB_PWM_VR;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, bReg);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | sInitInfo.sWaitTime.dVrefRdy1, 0);
+ if(sInitInfo.sWaitTime.dVrefRdy2 > sInitInfo.sWaitTime.dVrefRdy1)
+ {
+ dWaitTime = sInitInfo.sWaitTime.dVrefRdy2 - sInitInfo.sWaitTime.dVrefRdy1;
+ }
+ }
+
+ bReg = (UINT8)((UINT8)~((UINT8)~psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) & McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_1));
+ /* SP_HIZ control */
+ if(MCDRV_SPHIZ_HIZ == sInitInfo.bSpHiz)
+ {
+ bSpHizReg = 0;
+ if((bReg & (MCB_PWM_SPL1 | MCB_PWM_SPL2)) != 0)
+ {
+ bSpHizReg |= MCB_SPL_HIZ;
+ }
+
+ if((bReg & (MCB_PWM_SPR1 | MCB_PWM_SPR2)) != 0)
+ {
+ bSpHizReg |= MCB_SPR_HIZ;
+ }
+
+ bSpHizReg |= (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_SP_MODE) & (MCB_SPMN | MCB_SP_SWAP));
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SP_MODE, bSpHizReg);
+ }
+
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_3);
+ bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3]) & bRegCur;
+ bRegChange = bReg ^ bRegCur;
+ /* set DACON and NSMUTE before setting 0 to AP_DA */
+ if(((bRegChange & (MCB_PWM_DAR|MCB_PWM_DAL)) != 0) && ((psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3] & (MCB_PWM_DAR|MCB_PWM_DAL)) != (MCB_PWM_DAR|MCB_PWM_DAL)))
+ {
+ if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_DAC_CONFIG) & MCB_DACON) == 0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DAC_CONFIG, MCB_NSMUTE);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DAC_CONFIG, (MCB_DACON | MCB_NSMUTE));
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DAC_CONFIG, MCB_DACON);
+ }
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_3, bReg);
+ bRegChange &= (MCB_PWM_MB1|MCB_PWM_MB2|MCB_PWM_MB3);
+
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_4);
+ bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[4] & psPowerUpdate->abAnalog[4]) & bRegCur;
+ bRegChange |= (bReg ^ bRegCur);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_4, bReg);
+
+ if(dWaitTime > (UINT32)0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | dWaitTime, 0);
+ }
+
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_0);
+ bReg = (UINT8)~dUpdate & bRegCur;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, bReg);
+
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_1);
+ bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) & bRegCur;
+ if((bRegCur & (MCB_PWM_ADL|MCB_PWM_ADR)) != (bReg & (MCB_PWM_ADL|MCB_PWM_ADR)))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_1, bReg);
+ }
+ else
+ {
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McResCtrl_SetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_1, bReg);
+ }
+ }
+ }
+
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_2);
+ bReg = (UINT8)~((UINT8)~psPowerInfo->abAnalog[2] & psPowerUpdate->abAnalog[2]) & bRegCur;
+ if((bRegCur & (MCB_PWM_LO1L|MCB_PWM_LO1R|MCB_PWM_LO2L|MCB_PWM_LO2R)) != (bReg & (MCB_PWM_LO1L|MCB_PWM_LO1R|MCB_PWM_LO2L|MCB_PWM_LO2R)))
+ {
+ bReg = bReg|(bRegCur&(MCB_PWM_RC1|MCB_PWM_RC2));
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_2, bReg);
+ }
+ else
+ {
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McResCtrl_SetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_2, bReg);
+ }
+ }
+ }
+
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ /* time wait */
+ if(dWaitTime < GetMaxWait(bRegChange))
+ {
+ dWaitTime = GetMaxWait(bRegChange) - dWaitTime;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_TIMWAIT | dWaitTime, 0);
+ }
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddAnalogPowerUpAuto", &sdRet);
+#endif
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddPowerDown
+ *
+ * Description:
+ * Add powerdown packet.
+ * Arguments:
+ * psPowerInfo power information
+ * psPowerUpdate power update information
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddPowerDown
+(
+ const MCDRV_POWER_INFO* psPowerInfo,
+ const MCDRV_POWER_UPDATE* psPowerUpdate
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ UINT8 bRegDPADIF;
+ UINT8 bRegCur;
+ UINT32 dUpdate = psPowerInfo->dDigital & psPowerUpdate->dDigital;
+ UINT32 dAPMDoneParam;
+ UINT32 dAnaRdyParam;
+ UINT8 bSpHizReg;
+ MCDRV_INIT_INFO sInitInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddPowerDown");
+#endif
+
+ bRegDPADIF = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_DPADIF);
+
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+
+ if(McResCtrl_GetAPMode() == eMCDRV_APM_ON)
+ {
+ if((((psPowerInfo->abAnalog[0] & psPowerUpdate->abAnalog[0] & MCB_PWM_VR) != 0)
+ && (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_0) & MCB_PWM_VR) == 0))
+ {
+ /* wait AP_XX_A */
+ dAPMDoneParam = ((MCB_AP_CP_A|MCB_AP_HPL_A|MCB_AP_HPR_A)<<8)
+ | (MCB_AP_RC1_A|MCB_AP_RC2_A|MCB_AP_SPL1_A|MCB_AP_SPR1_A|MCB_AP_SPL2_A|MCB_AP_SPR2_A);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_APM_DONE | dAPMDoneParam, 0);
+ }
+ }
+
+ if(((dUpdate & MCDRV_POWINFO_DIGITAL_DP0) != 0UL)
+ && ((bRegDPADIF & (MCB_DP0_CLKI1|MCB_DP0_CLKI0)) != (MCB_DP0_CLKI1|MCB_DP0_CLKI0)))
+ {
+ /* wait mute complete */
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_ALLMUTE, 0);
+ }
+ }
+
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ /* Analog Power */
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_1);
+ bReg = (psPowerInfo->abAnalog[1] & psPowerUpdate->abAnalog[1]) | bRegCur;
+ if(((psPowerUpdate->abAnalog[1] & MCDRV_POWUPDATE_ANALOG1_OUT) != 0) && (MCDRV_SPHIZ_HIZ == sInitInfo.bSpHiz))
+ {
+ /* SP_HIZ control */
+ bSpHizReg = 0;
+ if((bReg & (MCB_PWM_SPL1 | MCB_PWM_SPL2)) != 0)
+ {
+ bSpHizReg |= MCB_SPL_HIZ;
+ }
+
+ if((bReg & (MCB_PWM_SPR1 | MCB_PWM_SPR2)) != 0)
+ {
+ bSpHizReg |= MCB_SPR_HIZ;
+ }
+
+ bSpHizReg |= (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_SP_MODE) & (MCB_SPMN | MCB_SP_SWAP));
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SP_MODE, bSpHizReg);
+ }
+
+ if(McResCtrl_GetAPMode() == eMCDRV_APM_ON)
+ {
+ if((bRegCur & (MCB_PWM_ADL|MCB_PWM_ADR)) != (bReg & (MCB_PWM_ADL|MCB_PWM_ADR)))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_1, bReg);
+ }
+ else
+ {
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McResCtrl_SetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_1, bReg);
+ }
+ }
+ }
+ else
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_1, bReg);
+ }
+ }
+
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_2);
+ bReg = (psPowerInfo->abAnalog[2] & psPowerUpdate->abAnalog[2]) | bRegCur;
+ if(McResCtrl_GetAPMode() == eMCDRV_APM_ON)
+ {
+ if((bRegCur & (MCB_PWM_LO1L|MCB_PWM_LO1R|MCB_PWM_LO2L|MCB_PWM_LO2R)) != (bReg & (MCB_PWM_LO1L|MCB_PWM_LO1R|MCB_PWM_LO2L|MCB_PWM_LO2R)))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_2, bReg);
+ }
+ else
+ {
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McResCtrl_SetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_2, bReg);
+ }
+ }
+ }
+ else
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_2, bReg);
+ }
+ }
+
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ bReg = (UINT8)((psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3]) | McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_3));
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_3, bReg);
+ bReg = (UINT8)((psPowerInfo->abAnalog[4] & psPowerUpdate->abAnalog[4]) | McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_4));
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_4, bReg);
+
+ /* set DACON and NSMUTE after setting 1 to AP_DA */
+ if((psPowerInfo->abAnalog[3] & psPowerUpdate->abAnalog[3] & (MCB_PWM_DAR|MCB_PWM_DAL)) == (MCB_PWM_DAR|MCB_PWM_DAL))
+ {
+ if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_DAC_CONFIG) & MCB_DACON) == MCB_DACON)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_DACMUTE | (UINT32)((MCB_DAC_FLAGL<<8)|MCB_DAC_FLAGR), 0);
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DAC_CONFIG, MCB_NSMUTE);
+ }
+
+ bRegCur = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_PWM_ANALOG_0);
+ bReg = psPowerInfo->abAnalog[0] & psPowerUpdate->abAnalog[0];
+ if(McResCtrl_GetAPMode() == eMCDRV_APM_OFF)
+ {
+ /* wait CPPDRDY */
+ dAnaRdyParam = 0;
+ if(((bRegCur & MCB_PWM_CP) == 0) && ((bReg & MCB_PWM_CP) == MCB_PWM_CP))
+ {
+ dAnaRdyParam = MCB_CPPDRDY;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_ANA_RDY | dAnaRdyParam, 0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, (bRegCur|MCB_PWM_CP));
+ }
+ }
+
+ if(((bReg & MCB_PWM_VR) != 0) && ((bRegCur & MCB_PWM_VR) == 0))
+ {/* AP_VR changed */
+ /* AP_xx down */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, MCI_PWM_ANALOG_0_DEF);
+ }
+ else
+ {
+ bReg |= bRegCur;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_PWM_ANALOG_0, bReg);
+ }
+
+
+ /* Digital Power */
+ if(((dUpdate & MCDRV_POWINFO_DIGITAL_DPADIF) != 0UL)
+ && (bRegDPADIF != MCB_DPADIF))
+ {
+ /* DPADIF */
+ bRegDPADIF |= MCB_DPADIF;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bRegDPADIF);
+ }
+
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPBDSP) != 0UL)
+ {
+ /* DPBDSP */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL_BDSP, MCB_PWM_DPBDSP);
+ }
+
+ /* DPDI*, DPPDM */
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_PWM_DIGITAL_1);
+ if(((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI0) != 0UL) || ((dUpdate & MCDRV_POWINFO_DIGITAL_DP2) != 0UL))
+ {
+ bReg |= MCB_PWM_DPDI0;
+ }
+ if(((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI1) != 0UL) || ((dUpdate & MCDRV_POWINFO_DIGITAL_DP2) != 0UL))
+ {
+ bReg |= MCB_PWM_DPDI1;
+ }
+ if(((dUpdate & MCDRV_POWINFO_DIGITAL_DPDI2) != 0UL) || ((dUpdate & MCDRV_POWINFO_DIGITAL_DP2) != 0UL))
+ {
+ bReg |= MCB_PWM_DPDI2;
+ }
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPPDM) != 0UL)
+ {
+ bReg |= MCB_PWM_DPPDM;
+ }
+ if(bReg != 0)
+ {
+ /* cannot set DP* & DPB at the same time */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL_1, bReg);
+ }
+ /* DPB */
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DPB) != 0UL)
+ {
+ bReg |= MCB_PWM_DPB;
+ }
+ if(bReg != 0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL_1, bReg);
+ }
+
+ if(((dUpdate & MCDRV_POWINFO_DIGITAL_DP2) != 0UL)
+ && ((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_PWM_DIGITAL) & MCB_PWM_DP2) == 0))
+ {
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_DP0) != 0UL)
+ {
+ /* DP2, DP1 */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL, (MCB_PWM_DP2 | MCB_PWM_DP1));
+ if((dUpdate & MCDRV_POWINFO_DIGITAL_PLLRST0) != 0UL)
+ {
+ /* PLLRST0 */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_PLL_RST, MCB_PLLRST0);
+ }
+ /* DP0 */
+ bRegDPADIF |= (MCB_DP0_CLKI1 | MCB_DP0_CLKI0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bRegDPADIF);
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McSrv_ClockStop();
+ }
+ }
+ else
+ {
+ /* DP2 */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PWM_DIGITAL, MCB_PWM_DP2);
+ }
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddPowerDown", &sdRet);
+#endif
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddPathSet
+ *
+ * Description:
+ * Add path update packet.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddPathSet
+(
+ void
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddPathSet");
+#endif
+
+ /* DI Pad */
+ AddDIPad();
+
+ /* PAD(PDM) */
+ AddPAD();
+
+ /* Digital Mixer Source */
+ sdRet = AddSource();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ /* DIR*_START, DIT*_START */
+ AddDIStart();
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddPathSet", &sdRet);
+#endif
+ return sdRet;
+}
+
+/****************************************************************************
+ * AddDIPad
+ *
+ * Description:
+ * Add DI Pad setup packet.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void AddDIPad
+(
+ void
+)
+{
+ UINT8 bReg;
+ UINT8 bIsUsedDIR[3];
+ MCDRV_INIT_INFO sInitInfo;
+ MCDRV_PATH_INFO sPathInfo;
+ MCDRV_DIO_INFO sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("AddDIPad");
+#endif
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+ McResCtrl_GetPathInfo(&sPathInfo);
+ McResCtrl_GetDioInfo(&sDioInfo);
+
+ /* SDIN_MSK2/1 */
+ bReg = 0;
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR2) == 0)
+ {
+ bReg |= MCB_SDIN_MSK2;
+ bIsUsedDIR[2] = 0;
+ }
+ else
+ {
+ bIsUsedDIR[2] = 1;
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR1) == 0)
+ {
+ bReg |= MCB_SDIN_MSK1;
+ bIsUsedDIR[1] = 0;
+ }
+ else
+ {
+ bIsUsedDIR[1] = 1;
+ }
+ /* SDO_DDR2/1 */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_DIT2, eMCDRV_DST_CH0) == 0)
+ {
+ if(sInitInfo.bDioSdo2Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_SDO_DDR2;
+ }
+ }
+ else
+ {
+ bReg |= MCB_SDO_DDR2;
+ }
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_DIT1, eMCDRV_DST_CH0) == 0)
+ {
+ if(sInitInfo.bDioSdo1Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_SDO_DDR1;
+ }
+ }
+ else
+ {
+ bReg |= MCB_SDO_DDR1;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_SD_MSK, bReg);
+
+ /* SDIN_MSK0 */
+ bReg = 0;
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR0) == 0)
+ {
+ bReg |= MCB_SDIN_MSK0;
+ bIsUsedDIR[0] = 0;
+ }
+ else
+ {
+ bIsUsedDIR[0] = 1;
+ }
+ /* SDO_DDR0 */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_DIT0, eMCDRV_DST_CH0) == 0)
+ {
+ if(sInitInfo.bDioSdo0Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_SDO_DDR0;
+ }
+ }
+ else
+ {
+ bReg |= MCB_SDO_DDR0;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_SD_MSK_1, bReg);
+
+ /* BCLK_MSK*, BCLD_DDR*, LRCK_MSK*, LRCK_DDR* */
+ bReg = 0;
+ if((bIsUsedDIR[2] == 0) && (McResCtrl_GetDITSource(eMCDRV_DIO_2) == eMCDRV_SRC_NONE))
+ {
+ bReg |= MCB_BCLK_MSK2;
+ bReg |= MCB_LRCK_MSK2;
+ if(sInitInfo.bDioClk2Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_BCLK_DDR2;
+ bReg |= MCB_LRCK_DDR2;
+ }
+ }
+ else
+ {
+ if(sDioInfo.asPortInfo[2].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER)
+ {
+ bReg |= MCB_BCLK_DDR2;
+ bReg |= MCB_LRCK_DDR2;
+ }
+ }
+ if((bIsUsedDIR[1] == 0) && (McResCtrl_GetDITSource(eMCDRV_DIO_1) == eMCDRV_SRC_NONE))
+ {
+ bReg |= MCB_BCLK_MSK1;
+ bReg |= MCB_LRCK_MSK1;
+ if(sInitInfo.bDioClk1Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_BCLK_DDR1;
+ bReg |= MCB_LRCK_DDR1;
+ }
+ }
+ else
+ {
+ if(sDioInfo.asPortInfo[1].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER)
+ {
+ bReg |= MCB_BCLK_DDR1;
+ bReg |= MCB_LRCK_DDR1;
+ }
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_BCLK_MSK, bReg);
+
+ /* BCLK_MSK*, BCLD_DDR*, LRCK_MSK*, LRCK_DDR*, PCM_HIZ* */
+ bReg = 0;
+ if((bIsUsedDIR[0] == 0) && (McResCtrl_GetDITSource(eMCDRV_DIO_0) == eMCDRV_SRC_NONE))
+ {
+ bReg |= MCB_BCLK_MSK0;
+ bReg |= MCB_LRCK_MSK0;
+ if(sInitInfo.bDioClk0Hiz == MCDRV_DAHIZ_LOW)
+ {
+ bReg |= MCB_BCLK_DDR0;
+ bReg |= MCB_LRCK_DDR0;
+ }
+ }
+ else
+ {
+ if(sDioInfo.asPortInfo[0].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER)
+ {
+ bReg |= MCB_BCLK_DDR0;
+ bReg |= MCB_LRCK_DDR0;
+ }
+ }
+ if(sInitInfo.bPcmHiz == MCDRV_PCMHIZ_HIZ)
+ {
+ bReg |= (MCB_PCMOUT_HIZ2 | MCB_PCMOUT_HIZ1 | MCB_PCMOUT_HIZ0);
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_BCLK_MSK_1, bReg);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddDIPad", 0);
+#endif
+}
+
+/****************************************************************************
+ * AddPAD
+ *
+ * Description:
+ * Add PAD setup packet.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void AddPAD
+(
+ void
+)
+{
+ UINT8 bReg;
+ MCDRV_INIT_INFO sInitInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("AddPAD");
+#endif
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+
+ /* PA*_MSK */
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_PA_MSK);
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_PDM) == 0)
+ {
+ bReg |= MCB_PA0_MSK;
+ if(sInitInfo.bPad1Func == MCDRV_PAD_PDMDI)
+ {
+ bReg |= MCB_PA1_MSK;
+ }
+ }
+ else
+ {
+ bReg &= (UINT8)~MCB_PA0_MSK;
+ if(sInitInfo.bPad1Func == MCDRV_PAD_PDMDI)
+ {
+ bReg &= (UINT8)~MCB_PA1_MSK;
+ }
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PA_MSK, bReg);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddPAD", 0);
+#endif
+}
+
+/****************************************************************************
+ * AddSource
+ *
+ * Description:
+ * Add source setup packet.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+static SINT32 AddSource
+(
+ void
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ UINT8 bAEng6;
+ UINT8 bRegAESource = 0;
+ UINT8 bAESourceChange = 0;
+ UINT32 dXFadeParam = 0;
+ MCDRV_SRC_TYPE eAESource;
+ MCDRV_PATH_INFO sPathInfo;
+ MCDRV_DAC_INFO sDacInfo;
+ MCDRV_AE_INFO sAeInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("AddSource");
+#endif
+
+ bAEng6 = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_AENG6_SOURCE);
+ eAESource = McResCtrl_GetAESource();
+
+ McResCtrl_GetPathInfo(&sPathInfo);
+ McResCtrl_GetAeInfo(&sAeInfo);
+
+ switch(eAESource)
+ {
+ case eMCDRV_SRC_PDM: bRegAESource = MCB_AE_SOURCE_AD; bAEng6 = MCB_AENG6_PDM; break;
+ case eMCDRV_SRC_ADC0: bRegAESource = MCB_AE_SOURCE_AD; bAEng6 = MCB_AENG6_ADC0; break;
+ case eMCDRV_SRC_DIR0: bRegAESource = MCB_AE_SOURCE_DIR0; break;
+ case eMCDRV_SRC_DIR1: bRegAESource = MCB_AE_SOURCE_DIR1; break;
+ case eMCDRV_SRC_DIR2: bRegAESource = MCB_AE_SOURCE_DIR2; break;
+ case eMCDRV_SRC_MIX: bRegAESource = MCB_AE_SOURCE_MIX; break;
+ default: bRegAESource = 0;
+ }
+ if(bRegAESource != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_SRC_SOURCE_1)&0xF0))
+ {
+ /* xxx_INS */
+ dXFadeParam = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DAC_INS);
+ dXFadeParam <<= 8;
+ dXFadeParam |= McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_INS);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DAC_INS, 0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_INS, 0);
+ bAESourceChange = 1;
+ sdRet = McDevIf_ExecutePacket();
+ }
+
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McResCtrl_GetDacInfo(&sDacInfo);
+
+ /* DAC_SOURCE/VOICE_SOURCE */
+ bReg = 0;
+ switch(McResCtrl_GetDACSource(eMCDRV_DAC_MASTER))
+ {
+ case eMCDRV_SRC_PDM:
+ bReg |= MCB_DAC_SOURCE_AD;
+ bAEng6 = MCB_AENG6_PDM;
+ break;
+ case eMCDRV_SRC_ADC0:
+ bReg |= MCB_DAC_SOURCE_AD;
+ bAEng6 = MCB_AENG6_ADC0;
+ break;
+ case eMCDRV_SRC_DIR0:
+ bReg |= MCB_DAC_SOURCE_DIR0;
+ break;
+ case eMCDRV_SRC_DIR1:
+ bReg |= MCB_DAC_SOURCE_DIR1;
+ break;
+ case eMCDRV_SRC_DIR2:
+ bReg |= MCB_DAC_SOURCE_DIR2;
+ break;
+ case eMCDRV_SRC_MIX:
+ bReg |= MCB_DAC_SOURCE_MIX;
+ break;
+ default:
+ break;
+ }
+ switch(McResCtrl_GetDACSource(eMCDRV_DAC_VOICE))
+ {
+ case eMCDRV_SRC_PDM:
+ bReg |= MCB_VOICE_SOURCE_AD;
+ bAEng6 = MCB_AENG6_PDM;
+ break;
+ case eMCDRV_SRC_ADC0:
+ bReg |= MCB_VOICE_SOURCE_AD;
+ bAEng6 = MCB_AENG6_ADC0;
+ break;
+ case eMCDRV_SRC_DIR0:
+ bReg |= MCB_VOICE_SOURCE_DIR0;
+ break;
+ case eMCDRV_SRC_DIR1:
+ bReg |= MCB_VOICE_SOURCE_DIR1;
+ break;
+ case eMCDRV_SRC_DIR2:
+ bReg |= MCB_VOICE_SOURCE_DIR2;
+ break;
+ case eMCDRV_SRC_MIX:
+ bReg |= MCB_VOICE_SOURCE_MIX;
+ break;
+ default:
+ break;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_SOURCE, bReg);
+
+ /* SWP/VOICE_SWP */
+ bReg = (sDacInfo.bMasterSwap << 4) | sDacInfo.bVoiceSwap;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_SWP, bReg);
+
+ /* DIT0SRC_SOURCE/DIT1SRC_SOURCE */
+ bReg = 0;
+ switch(McResCtrl_GetDITSource(eMCDRV_DIO_0))
+ {
+ case eMCDRV_SRC_PDM:
+ bReg |= MCB_DIT0_SOURCE_AD;
+ bAEng6 = MCB_AENG6_PDM;
+ break;
+ case eMCDRV_SRC_ADC0:
+ bReg |= MCB_DIT0_SOURCE_AD;
+ bAEng6 = MCB_AENG6_ADC0;
+ break;
+ case eMCDRV_SRC_DIR0:
+ bReg |= MCB_DIT0_SOURCE_DIR0;
+ break;
+ case eMCDRV_SRC_DIR1:
+ bReg |= MCB_DIT0_SOURCE_DIR1;
+ break;
+ case eMCDRV_SRC_DIR2:
+ bReg |= MCB_DIT0_SOURCE_DIR2;
+ break;
+ case eMCDRV_SRC_MIX:
+ bReg |= MCB_DIT0_SOURCE_MIX;
+ break;
+ default:
+ break;
+ }
+ switch(McResCtrl_GetDITSource(eMCDRV_DIO_1))
+ {
+ case eMCDRV_SRC_PDM:
+ bReg |= MCB_DIT1_SOURCE_AD;
+ bAEng6 = MCB_AENG6_PDM;
+ break;
+ case eMCDRV_SRC_ADC0:
+ bReg |= MCB_DIT1_SOURCE_AD;
+ bAEng6 = MCB_AENG6_ADC0;
+ break;
+ case eMCDRV_SRC_DIR0:
+ bReg |= MCB_DIT1_SOURCE_DIR0;
+ break;
+ case eMCDRV_SRC_DIR1:
+ bReg |= MCB_DIT1_SOURCE_DIR1;
+ break;
+ case eMCDRV_SRC_DIR2:
+ bReg |= MCB_DIT1_SOURCE_DIR2;
+ break;
+ case eMCDRV_SRC_MIX:
+ bReg |= MCB_DIT1_SOURCE_MIX;
+ break;
+ default:
+ break;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_SRC_SOURCE, bReg);
+
+ /* AE_SOURCE/DIT2SRC_SOURCE */
+ bReg = bRegAESource;
+ switch(McResCtrl_GetDITSource(eMCDRV_DIO_2))
+ {
+ case eMCDRV_SRC_PDM:
+ bReg |= MCB_DIT2_SOURCE_AD;
+ bAEng6 = MCB_AENG6_PDM;
+ break;
+ case eMCDRV_SRC_ADC0:
+ bReg |= MCB_DIT2_SOURCE_AD;
+ bAEng6 = MCB_AENG6_ADC0;
+ break;
+ case eMCDRV_SRC_DIR0:
+ bReg |= MCB_DIT2_SOURCE_DIR0;
+ break;
+ case eMCDRV_SRC_DIR1:
+ bReg |= MCB_DIT2_SOURCE_DIR1;
+ break;
+ case eMCDRV_SRC_DIR2:
+ bReg |= MCB_DIT2_SOURCE_DIR2;
+ break;
+ case eMCDRV_SRC_MIX:
+ bReg |= MCB_DIT2_SOURCE_MIX;
+ break;
+ default:
+ break;
+ }
+ if(bAESourceChange != 0)
+ {
+ /* wait xfade complete */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_INSFLG | dXFadeParam, 0);
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_SRC_SOURCE_1, bReg);
+
+ /* BDSP_ST */
+ if(McResCtrl_GetAESource() == eMCDRV_SRC_NONE)
+ {/* AE is unused */
+ /* BDSP stop & reset */
+ if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_A, MCI_BDSP_ST)&MCB_BDSP_ST) != 0)
+ {
+ bReg = 0;
+ if((sAeInfo.bOnOff & MCDRV_EQ5_ON) != 0)
+ {
+ bReg |= MCB_EQ5ON;
+ }
+ if((sAeInfo.bOnOff & MCDRV_DRC_ON) != 0)
+ {
+ bReg |= MCB_DRCON;
+ }
+ if((sAeInfo.bOnOff & MCDRV_EQ3_ON) != 0)
+ {
+ bReg |= MCB_EQ3ON;
+ }
+ if(McDevProf_IsValid(eMCDRV_FUNC_DBEX) == 1)
+ {
+ if((sAeInfo.bOnOff & MCDRV_BEXWIDE_ON) != 0)
+ {
+ bReg |= MCB_DBEXON;
+ }
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_ST, bReg);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_RST, MCB_TRAM_RST);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_RST, 0);
+ }
+ }
+ else
+ {/* AE is used */
+ bReg = 0;
+ if((sAeInfo.bOnOff & MCDRV_EQ5_ON) != 0)
+ {
+ bReg |= MCB_EQ5ON;
+ }
+ if((sAeInfo.bOnOff & MCDRV_DRC_ON) != 0)
+ {
+ bReg |= MCB_DRCON;
+ bReg |= MCB_BDSP_ST;
+ }
+ if((sAeInfo.bOnOff & MCDRV_EQ3_ON) != 0)
+ {
+ bReg |= MCB_EQ3ON;
+ }
+ if(McDevProf_IsValid(eMCDRV_FUNC_DBEX) == 1)
+ {
+ if((sAeInfo.bOnOff & MCDRV_BEXWIDE_ON) != 0)
+ {
+ bReg |= MCB_DBEXON;
+ bReg |= MCB_BDSP_ST;
+ }
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_ST, bReg);
+ }
+
+ /* check MIX SOURCE for AENG6_SOURCE */
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_PDM) != 0)
+ {
+ bAEng6 = MCB_AENG6_PDM;
+ }
+ else if(McResCtrl_IsSrcUsed(eMCDRV_SRC_ADC0) != 0)
+ {
+ bAEng6 = MCB_AENG6_ADC0;
+ }
+ else
+ {
+ }
+
+ /* AENG6_SOURCE */
+ if(bAEng6 != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_AENG6_SOURCE))
+ {
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_AD_START);
+ if((bReg & MCB_AD_START) != 0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_AD_START, bReg&(UINT8)~MCB_AD_START);
+ }
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PDM_START);
+ if((bReg & MCB_PDM_START) != 0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_PDM_START, bReg&(UINT8)~MCB_PDM_START);
+ }
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_AENG6_SOURCE, bAEng6);
+
+ /* xxx_INS */
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_AE) != 0)
+ {
+ switch(eAESource)
+ {
+ case eMCDRV_SRC_PDM:
+ case eMCDRV_SRC_ADC0:
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_INS, MCB_ADC_INS);
+ break;
+ case eMCDRV_SRC_DIR0:
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_INS, MCB_DIR0_INS);
+ break;
+ case eMCDRV_SRC_DIR1:
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_INS, MCB_DIR1_INS);
+ break;
+ case eMCDRV_SRC_DIR2:
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_INS, MCB_DIR2_INS);
+ break;
+ case eMCDRV_SRC_MIX:
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DAC_INS, MCB_DAC_INS);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddSource", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * AddDIStart
+ *
+ * Description:
+ * Add DIStart setup packet.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void AddDIStart
+(
+ void
+)
+{
+ UINT8 bReg;
+ MCDRV_PATH_INFO sPathInfo;
+ MCDRV_DIO_INFO sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("AddDIStart");
+#endif
+
+ McResCtrl_GetPathInfo(&sPathInfo);
+ McResCtrl_GetDioInfo(&sDioInfo);
+
+ /* DIR*_START, DIT*_START */
+ bReg = 0;
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_0) != eMCDRV_SRC_NONE)
+ {
+ if(sDioInfo.asPortInfo[0].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER)
+ {
+ bReg |= MCB_DITIM0_START;
+ }
+ bReg |= MCB_DIT0_SRC_START;
+ bReg |= MCB_DIT0_START;
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR0) != 0)
+ {
+ if(sDioInfo.asPortInfo[0].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER)
+ {
+ bReg |= MCB_DITIM0_START;
+ }
+ bReg |= MCB_DIR0_SRC_START;
+ bReg |= MCB_DIR0_START;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIX0_START, bReg);
+
+ bReg = 0;
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_1) != eMCDRV_SRC_NONE)
+ {
+ if(sDioInfo.asPortInfo[1].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER)
+ {
+ bReg |= MCB_DITIM1_START;
+ }
+ bReg |= MCB_DIT1_SRC_START;
+ bReg |= MCB_DIT1_START;
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR1) != 0)
+ {
+ if(sDioInfo.asPortInfo[1].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER)
+ {
+ bReg |= MCB_DITIM1_START;
+ }
+ bReg |= MCB_DIR1_SRC_START;
+ bReg |= MCB_DIR1_START;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIX1_START, bReg);
+
+ bReg = 0;
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_2) != eMCDRV_SRC_NONE)
+ {
+ if(sDioInfo.asPortInfo[2].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER)
+ {
+ bReg |= MCB_DITIM2_START;
+ }
+ bReg |= MCB_DIT2_SRC_START;
+ bReg |= MCB_DIT2_START;
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR2) != 0)
+ {
+ if(sDioInfo.asPortInfo[2].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER)
+ {
+ bReg |= MCB_DITIM2_START;
+ }
+ bReg |= MCB_DIR2_SRC_START;
+ bReg |= MCB_DIR2_START;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIX2_START, bReg);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddDIStart", 0);
+#endif
+}
+
+/****************************************************************************
+ * McPacket_AddMixSet
+ *
+ * Description:
+ * Add analog mixer set packet.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddMixSet
+(
+ void
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ MCDRV_INIT_INFO sInitInfo;
+ MCDRV_PATH_INFO sPathInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddMixSet");
+#endif
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+ McResCtrl_GetPathInfo(&sPathInfo);
+
+ /* ADL_MIX */
+ bReg = GetMicMixBit(&sPathInfo.asAdc0[0]);
+ if(((sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_ADL_MIX, bReg);
+ /* ADL_MONO */
+ bReg = 0;
+ if((sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ bReg |= MCB_MONO_LI1;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_ADL_MONO, bReg);
+
+ /* ADR_MIX */
+ bReg = GetMicMixBit(&sPathInfo.asAdc0[1]);
+ if(((sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_ADR_MIX, bReg);
+ /* ADR_MONO */
+ bReg = 0;
+ if((sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ bReg |= MCB_MONO_LI1;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_ADR_MONO, bReg);
+
+ /* L1L_MIX */
+ bReg = GetMicMixBit(&sPathInfo.asLout1[0]);
+ if(((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ if(((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bReg |= MCB_DAMIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO1L_MIX, bReg);
+ /* L1L_MONO */
+ bReg = 0;
+ if((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ bReg |= MCB_MONO_LI1;
+ }
+ if((sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON)
+ {
+ bReg |= MCB_MONO_DA;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO1L_MONO, bReg);
+
+ /* L1R_MIX */
+ if(sInitInfo.bLineOut1Dif != MCDRV_LINE_DIF)
+ {
+ bReg = GetMicMixBit(&sPathInfo.asLout1[1]);
+ if((sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ if((sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ {
+ bReg |= MCB_DAMIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO1R_MIX, bReg);
+ }
+
+ /* L2L_MIX */
+ bReg = GetMicMixBit(&sPathInfo.asLout2[0]);
+ if(((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ if(((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bReg |= MCB_DAMIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO2L_MIX, bReg);
+ /* L2L_MONO */
+ bReg = 0;
+ if((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ bReg |= MCB_MONO_LI1;
+ }
+ if((sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON)
+ {
+ bReg |= MCB_MONO_DA;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO2L_MONO, bReg);
+
+ /* L2R_MIX */
+ if(sInitInfo.bLineOut2Dif != MCDRV_LINE_DIF)
+ {
+ bReg = GetMicMixBit(&sPathInfo.asLout2[1]);
+ if((sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ if((sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ {
+ bReg |= MCB_DAMIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO2R_MIX, bReg);
+ }
+
+ /* HPL_MIX */
+ bReg = GetMicMixBit(&sPathInfo.asHpOut[0]);
+ if(((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ if(((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bReg |= MCB_DAMIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_HPL_MIX, bReg);
+ /* HPL_MONO */
+ bReg = 0;
+ if((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ bReg |= MCB_MONO_LI1;
+ }
+ if((sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON)
+ {
+ bReg |= MCB_MONO_DA;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_HPL_MONO, bReg);
+
+ /* HPR_MIX */
+ bReg = GetMicMixBit(&sPathInfo.asHpOut[1]);
+ if((sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ if((sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ {
+ bReg |= MCB_DAMIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_HPR_MIX, bReg);
+
+ /* SPL_MIX */
+ bReg = 0;
+ if(((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ if(((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bReg |= MCB_DAMIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SPL_MIX, bReg);
+ /* SPL_MONO */
+ bReg = 0;
+ if((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ bReg |= MCB_MONO_LI1;
+ }
+ if((sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON)
+ {
+ bReg |= MCB_MONO_DA;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SPL_MONO, bReg);
+
+ /* SPR_MIX */
+ bReg = 0;
+ if(((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ if(((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ || ((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bReg |= MCB_DAMIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SPR_MIX, bReg);
+ /* SPR_MONO */
+ bReg = 0;
+ if((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ bReg |= MCB_MONO_LI1;
+ }
+ if((sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON)
+ {
+ bReg |= MCB_MONO_DA;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SPR_MONO, bReg);
+
+ /* RCV_MIX */
+ bReg = GetMicMixBit(&sPathInfo.asRcOut[0]);
+ if((sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ bReg |= MCB_LI1MIX;
+ }
+ if((sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ {
+ bReg |= MCB_DALMIX;
+ }
+ if((sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ {
+ bReg |= MCB_DARMIX;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_RC_MIX, bReg);
+
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddMixSet", &sdRet);
+#endif
+ return sdRet;
+}
+
+/****************************************************************************
+ * GetMicMixBit
+ *
+ * Description:
+ * Get mic mixer bit.
+ * Arguments:
+ * source info
+ * Return:
+ * mic mixer bit
+ *
+ ****************************************************************************/
+static UINT8 GetMicMixBit
+(
+ const MCDRV_CHANNEL* psChannel
+)
+{
+ UINT8 bMicMix = 0;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetMicMixBit");
+#endif
+
+ if((psChannel->abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ {
+ bMicMix |= MCB_M1MIX;
+ }
+ if((psChannel->abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ {
+ bMicMix |= MCB_M2MIX;
+ }
+ if((psChannel->abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ {
+ bMicMix |= MCB_M3MIX;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bMicMix;
+ McDebugLog_FuncOut("GetMicMixBit", &sdRet);
+#endif
+ return bMicMix;
+}
+
+/****************************************************************************
+ * McPacket_AddStart
+ *
+ * Description:
+ * Add start packet.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddStart
+(
+ void
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ MCDRV_INIT_INFO sInitInfo;
+ MCDRV_PATH_INFO sPathInfo;
+ MCDRV_ADC_INFO sAdcInfo;
+ MCDRV_PDM_INFO sPdmInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddStart");
+#endif
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+ McResCtrl_GetPathInfo(&sPathInfo);
+ McResCtrl_GetAdcInfo(&sAdcInfo);
+ McResCtrl_GetPdmInfo(&sPdmInfo);
+
+ if((McResCtrl_IsDstUsed(eMCDRV_DST_ADC0, eMCDRV_DST_CH0) == 1)
+ || (McResCtrl_IsDstUsed(eMCDRV_DST_ADC0, eMCDRV_DST_CH1) == 1))
+ {/* ADC0 source is used */
+ if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_AD_START) & MCB_AD_START) == 0)
+ {
+ bReg = (sAdcInfo.bAgcOn << 2) | sAdcInfo.bAgcAdjust;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_AD_AGC, bReg);
+ bReg = (sAdcInfo.bMono << 1) | MCB_AD_START;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_AD_START, bReg);
+ }
+ }
+ else if(McResCtrl_IsSrcUsed(eMCDRV_SRC_PDM) != 0)
+ {/* PDM is used */
+ if((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PDM_START) & MCB_PDM_START) == 0)
+ {
+ bReg = (sPdmInfo.bAgcOn << 2) | sPdmInfo.bAgcAdjust;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_PDM_AGC, bReg);
+ bReg = (sPdmInfo.bMono << 1) | MCB_PDM_START;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_PDM_START, bReg);
+ }
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddStart", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddStop
+ *
+ * Description:
+ * Add stop packet.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddStop
+(
+ void
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddStop");
+#endif
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIX0_START);
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_0) == eMCDRV_SRC_NONE)
+ {/* DIT is unused */
+ bReg &= (UINT8)~MCB_DIT0_SRC_START;
+ bReg &= (UINT8)~MCB_DIT0_START;
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR0) == 0)
+ {/* DIR is unused */
+ bReg &= (UINT8)~MCB_DIR0_SRC_START;
+ bReg &= (UINT8)~MCB_DIR0_START;
+ }
+ if((bReg & 0x0F) == 0)
+ {
+ bReg &= (UINT8)~MCB_DITIM0_START;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIX0_START, bReg);
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIX1_START);
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_1) == eMCDRV_SRC_NONE)
+ {/* DIT is unused */
+ bReg &= (UINT8)~MCB_DIT1_SRC_START;
+ bReg &= (UINT8)~MCB_DIT1_START;
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR1) == 0)
+ {/* DIR is unused */
+ bReg &= (UINT8)~MCB_DIR1_SRC_START;
+ bReg &= (UINT8)~MCB_DIR1_START;
+ }
+ if((bReg & 0x0F) == 0)
+ {
+ bReg &= (UINT8)~MCB_DITIM1_START;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIX1_START, bReg);
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIX2_START);
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_2) == eMCDRV_SRC_NONE)
+ {/* DIT is unused */
+ bReg &= (UINT8)~MCB_DIT2_SRC_START;
+ bReg &= (UINT8)~MCB_DIT2_START;
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR2) == 0)
+ {/* DIR is unused */
+ bReg &= (UINT8)~MCB_DIR2_SRC_START;
+ bReg &= (UINT8)~MCB_DIR2_START;
+ }
+ if((bReg & 0x0F) == 0)
+ {
+ bReg &= (UINT8)~MCB_DITIM2_START;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DIX2_START, bReg);
+
+ if((McResCtrl_IsDstUsed(eMCDRV_DST_ADC0, eMCDRV_DST_CH0) == 0)
+ && (McResCtrl_IsDstUsed(eMCDRV_DST_ADC0, eMCDRV_DST_CH1) == 0))
+ {/* ADC0 source is unused */
+ AddStopADC();
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_PDM) == 0)
+ {/* PDM is unused */
+ AddStopPDM();
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddStop", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddVol
+ *
+ * Description:
+ * Add volume mute packet.
+ * Arguments:
+ * dUpdate target volume items
+ * eMode update mode
+ * pdSVolDoneParam wait soft volume complete flag
+ * Return:
+ * MCDRV_SUCCESS
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddVol
+(
+ UINT32 dUpdate,
+ MCDRV_VOLUPDATE_MODE eMode,
+ UINT32* pdSVolDoneParam
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bVolL;
+ UINT8 bVolR;
+ UINT8 bLAT;
+ UINT8 bReg;
+ MCDRV_INIT_INFO sInitInfo;
+ MCDRV_VOL_INFO sVolInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddVol");
+#endif
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+ McResCtrl_GetVolReg(&sVolInfo);
+
+ if((dUpdate & MCDRV_VOLUPDATE_ANAOUT_ALL) != (UINT32)0)
+ {
+ *pdSVolDoneParam = 0;
+
+ bVolL = (UINT8)sVolInfo.aswA_Hp[0]&MCB_HPVOL_L;
+ bVolR = (UINT8)sVolInfo.aswA_Hp[1]&MCB_HPVOL_R;
+ if(bVolL != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_HPVOL_L) & MCB_HPVOL_L))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ if(((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ && (bVolR != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_HPVOL_R)))
+ {
+ bLAT = MCB_ALAT_HP;
+ }
+ else
+ {
+ bLAT = 0;
+ }
+ bReg = bLAT|MCB_SVOL_HP|bVolL;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_HPVOL_L, bReg);
+ if(bVolL == MCDRV_REG_MUTE)
+ {
+ *pdSVolDoneParam |= (MCB_HPL_BUSY<<8);
+ }
+ }
+ }
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ {
+ if((bVolR == MCDRV_REG_MUTE) && (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_HPVOL_R) != 0))
+ {
+ *pdSVolDoneParam |= (UINT8)MCB_HPR_BUSY;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_HPVOL_R, bVolR);
+ }
+
+ bVolL = (UINT8)sVolInfo.aswA_Sp[0]&MCB_SPVOL_L;
+ bVolR = (UINT8)sVolInfo.aswA_Sp[1]&MCB_SPVOL_R;
+ if(bVolL != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_SPVOL_L) & MCB_SPVOL_L))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ if(((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ && (bVolR != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_SPVOL_R)))
+ {
+ bLAT = MCB_ALAT_SP;
+ }
+ else
+ {
+ bLAT = 0;
+ }
+ bReg = bLAT|MCB_SVOL_SP|bVolL;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SPVOL_L, bReg);
+ if(bVolL == MCDRV_REG_MUTE)
+ {
+ *pdSVolDoneParam |= (MCB_SPL_BUSY<<8);
+ }
+ }
+ }
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ {
+ if((bVolR == MCDRV_REG_MUTE) && (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_SPVOL_R) != 0))
+ {
+ *pdSVolDoneParam |= (UINT8)MCB_SPR_BUSY;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SPVOL_R, bVolR);
+ }
+
+ bVolL = (UINT8)sVolInfo.aswA_Rc[0]&MCB_RCVOL;
+ if(bVolL != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_RCVOL) & MCB_RCVOL))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ bReg = MCB_SVOL_RC|bVolL;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_RCVOL, bReg);
+ if(bVolL == MCDRV_REG_MUTE)
+ {
+ *pdSVolDoneParam |= (MCB_RC_BUSY<<8);
+ }
+ }
+ }
+
+ bVolL = (UINT8)sVolInfo.aswA_Lout1[0]&MCB_LO1VOL_L;
+ bVolR = (UINT8)sVolInfo.aswA_Lout1[1]&MCB_LO1VOL_R;
+ if(bVolL != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_LO1VOL_L) & MCB_LO1VOL_L))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ if(((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ && (bVolR != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_LO1VOL_R)))
+ {
+ bLAT = MCB_ALAT_LO1;
+ }
+ else
+ {
+ bLAT = 0;
+ }
+ bReg = bLAT|bVolL;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO1VOL_L, bReg);
+ }
+ }
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO1VOL_R, bVolR);
+ }
+
+ bVolL = (UINT8)sVolInfo.aswA_Lout2[0]&MCB_LO2VOL_L;
+ bVolR = (UINT8)sVolInfo.aswA_Lout2[1]&MCB_LO2VOL_R;
+ if(bVolL != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_LO2VOL_L) & MCB_LO2VOL_L))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ if(((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ && (bVolR != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_LO2VOL_R)))
+ {
+ bLAT = MCB_ALAT_LO2;
+ }
+ else
+ {
+ bLAT = 0;
+ }
+ bReg = bLAT|bVolL;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO2VOL_L, bReg);
+ }
+ }
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LO2VOL_R, bVolR);
+ }
+
+ bVolL = (UINT8)sVolInfo.aswA_HpGain[0];
+ if(bVolL != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_HP_GAIN))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_HP_GAIN, bVolL);
+ }
+ }
+ }
+ if((dUpdate & ~MCDRV_VOLUPDATE_ANAOUT_ALL) != (UINT32)0)
+ {
+ bVolL = (UINT8)sVolInfo.aswA_Lin1[0]&MCB_LI1VOL_L;
+ bVolR = (UINT8)sVolInfo.aswA_Lin1[1]&MCB_LI1VOL_R;
+ if(bVolL != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_LI1VOL_L) & MCB_LI1VOL_L))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ if(((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ && (bVolR != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_LI1VOL_R)))
+ {
+ bLAT = MCB_ALAT_LI1;
+ }
+ else
+ {
+ bLAT = 0;
+ }
+ bReg = bLAT|bVolL;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LI1VOL_L, bReg);
+ }
+ }
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LI1VOL_R, bVolR);
+ }
+
+ if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1)
+ {
+ bVolL = (UINT8)sVolInfo.aswA_Lin2[0]&MCB_LI2VOL_L;
+ bVolR = (UINT8)sVolInfo.aswA_Lin2[1]&MCB_LI2VOL_R;
+ if(bVolL != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_LI2VOL_L) & MCB_LI2VOL_L))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ if(((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ && (bVolR != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_LI2VOL_R)))
+ {
+ bLAT = MCB_ALAT_LI2;
+ }
+ else
+ {
+ bLAT = 0;
+ }
+ bReg = bLAT|bVolL;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LI2VOL_L, bReg);
+ }
+ }
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_LI2VOL_R, bVolR);
+ }
+ }
+
+ bVolL = (UINT8)sVolInfo.aswA_Mic1[0]&MCB_MC1VOL;
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_MC1VOL, bVolL);
+ }
+ bVolL = (UINT8)sVolInfo.aswA_Mic2[0]&MCB_MC2VOL;
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_MC2VOL, bVolL);
+ }
+ bVolL = (UINT8)sVolInfo.aswA_Mic3[0]&MCB_MC3VOL;
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_MC3VOL, bVolL);
+ }
+
+ bVolL = (UINT8)sVolInfo.aswA_Ad0[0]&MCB_ADVOL_L;
+ bVolR = (UINT8)sVolInfo.aswA_Ad0[1]&MCB_ADVOL_R;
+ if(bVolL != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_ADVOL_L) & MCB_ADVOL_L))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ if(((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ && (bVolR != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_ADVOL_R)))
+ {
+ bLAT = MCB_ALAT_AD;
+ }
+ else
+ {
+ bLAT = 0;
+ }
+ bReg = bLAT|bVolL;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_ADVOL_L, bReg);
+ }
+ }
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_ADVOL_R, bVolR);
+ }
+
+ bVolL = (UINT8)sVolInfo.aswA_Mic2Gain[0]&0x03;
+ bVolL = (UINT8)((bVolL << 4) & MCB_MC2GAIN) | ((UINT8)sVolInfo.aswA_Mic1Gain[0]&MCB_MC1GAIN);
+ bVolL |= ((sInitInfo.bMic2Sng << 6) & MCB_MC2SNG);
+ bVolL |= ((sInitInfo.bMic1Sng << 2) & MCB_MC1SNG);
+ if(eMode == eMCDRV_VOLUPDATE_MUTE)
+ {
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_MC_GAIN);
+ if(((bReg & MCB_MC2GAIN) == 0) && ((bReg & MCB_MC1GAIN) == 0))
+ {
+ ;
+ }
+ else
+ {
+ if((bReg & MCB_MC2GAIN) == 0)
+ {
+ bVolL &= (UINT8)~MCB_MC2GAIN;
+ }
+ else if((bReg & MCB_MC1GAIN) == 0)
+ {
+ bVolL &= (UINT8)~MCB_MC1GAIN;
+ }
+ else
+ {
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_MC_GAIN, bVolL);
+ }
+ }
+ else
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_MC_GAIN, bVolL);
+ }
+
+ bVolL = ((UINT8)sVolInfo.aswA_Mic3Gain[0]&MCB_MC3GAIN) | ((sInitInfo.bMic3Sng << 2) & MCB_MC3SNG);
+ if(eMode == eMCDRV_VOLUPDATE_MUTE)
+ {
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_MC3_GAIN);
+ if((bReg & MCB_MC3GAIN) == 0)
+ {
+ ;
+ }
+ else
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_MC3_GAIN, bVolL);
+ }
+ }
+ else
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_MC3_GAIN, bVolL);
+ }
+
+ /* DIT0_INVOL */
+ bVolL = (UINT8)sVolInfo.aswD_Dit0[0]&MCB_DIT0_INVOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Dit0[1]&MCB_DIT0_INVOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DIT0_INVOLL, MCB_DIT0_INLAT, MCI_DIT0_INVOLR, eMode);
+
+ /* DIT1_INVOL */
+ bVolL = (UINT8)sVolInfo.aswD_Dit1[0]&MCB_DIT1_INVOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Dit1[1]&MCB_DIT1_INVOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DIT1_INVOLL, MCB_DIT1_INLAT, MCI_DIT1_INVOLR, eMode);
+
+ /* DIT2_INVOL */
+ bVolL = (UINT8)sVolInfo.aswD_Dit2[0]&MCB_DIT2_INVOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Dit2[1]&MCB_DIT2_INVOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DIT2_INVOLL, MCB_DIT2_INLAT, MCI_DIT2_INVOLR, eMode);
+
+ /* PDM0_VOL */
+ bVolL = (UINT8)sVolInfo.aswD_Pdm[0]&MCB_PDM0_VOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Pdm[1]&MCB_PDM0_VOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_PDM0_VOLL, MCB_PDM0_LAT, MCI_PDM0_VOLR, eMode);
+
+ /* DIR0_VOL */
+ bVolL = (UINT8)sVolInfo.aswD_Dir0[0]&MCB_DIR0_VOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Dir0[1]&MCB_DIR0_VOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DIR0_VOLL, MCB_DIR0_LAT, MCI_DIR0_VOLR, eMode);
+
+ /* DIR1_VOL */
+ bVolL = (UINT8)sVolInfo.aswD_Dir1[0]&MCB_DIR1_VOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Dir1[1]&MCB_DIR1_VOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DIR1_VOLL, MCB_DIR1_LAT, MCI_DIR1_VOLR, eMode);
+
+ /* DIR2_VOL */
+ bVolL = (UINT8)sVolInfo.aswD_Dir2[0]&MCB_DIR2_VOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Dir2[1]&MCB_DIR2_VOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DIR2_VOLL, MCB_DIR2_LAT, MCI_DIR2_VOLR, eMode);
+
+ /* ADC_VOL */
+ bVolL = (UINT8)sVolInfo.aswD_Ad0[0]&MCB_ADC_VOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Ad0[1]&MCB_ADC_VOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_ADC_VOLL, MCB_ADC_LAT, MCI_ADC_VOLR, eMode);
+
+ if(McDevProf_IsValid(eMCDRV_FUNC_ADC1) == 1)
+ {
+#if 0
+ bVolL = (UINT8)sVolInfo.aswD_Ad1[0]&MCB_ADC1_VOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Ad1[1]&MCB_ADC1_VOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_ADC1_VOLL, MCB_ADC1_LAT, MCI_ADC1_VOLR, eMode);
+#endif
+ }
+
+ /* AENG6_VOL */
+ bVolL = (UINT8)sVolInfo.aswD_Aeng6[0]&MCB_AENG6_VOLL;
+ bVolR = (UINT8)sVolInfo.aswD_Aeng6[1]&MCB_AENG6_VOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_AENG6_VOLL, MCB_AENG6_LAT, MCI_AENG6_VOLR, eMode);
+
+ /* ADC_ATT */
+ bVolL = (UINT8)sVolInfo.aswD_Ad0Att[0]&MCB_ADC_ATTL;
+ bVolR = (UINT8)sVolInfo.aswD_Ad0Att[1]&MCB_ADC_ATTR;
+ AddDigVolPacket(bVolL, bVolR, MCI_ADC_ATTL, MCB_ADC_ALAT, MCI_ADC_ATTR, eMode);
+
+ /* DIR0_ATT */
+ bVolL = (UINT8)sVolInfo.aswD_Dir0Att[0]&MCB_DIR0_ATTL;
+ bVolR = (UINT8)sVolInfo.aswD_Dir0Att[1]&MCB_DIR0_ATTR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DIR0_ATTL, MCB_DIR0_ALAT, MCI_DIR0_ATTR, eMode);
+
+ /* DIR1_ATT */
+ bVolL = (UINT8)sVolInfo.aswD_Dir1Att[0]&MCB_DIR1_ATTL;
+ bVolR = (UINT8)sVolInfo.aswD_Dir1Att[1]&MCB_DIR1_ATTR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DIR1_ATTL, MCB_DIR1_ALAT, MCI_DIR1_ATTR, eMode);
+
+ /* DIR2_ATT */
+ bVolL = (UINT8)sVolInfo.aswD_Dir2Att[0]&MCB_DIR2_ATTL;
+ bVolR = (UINT8)sVolInfo.aswD_Dir2Att[1]&MCB_DIR2_ATTR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DIR2_ATTL, MCB_DIR2_ALAT, MCI_DIR2_ATTR, eMode);
+
+ /* ST_VOL */
+ if(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_AENG6_SOURCE) == MCB_AENG6_PDM)
+ {
+ bVolL = (UINT8)sVolInfo.aswD_SideTone[0]&MCB_ST_VOLL;
+ bVolR = (UINT8)sVolInfo.aswD_SideTone[1]&MCB_ST_VOLR;
+ AddDigVolPacket(bVolL, bVolR, MCI_ST_VOLL, MCB_ST_LAT, MCI_ST_VOLR, eMode);
+ }
+
+ /* MASTER_OUT */
+ bVolL = (UINT8)sVolInfo.aswD_DacMaster[0]&MCB_MASTER_OUTL;
+ bVolR = (UINT8)sVolInfo.aswD_DacMaster[1]&MCB_MASTER_OUTR;
+ AddDigVolPacket(bVolL, bVolR, MCI_MASTER_OUTL, MCB_MASTER_OLAT, MCI_MASTER_OUTR, eMode);
+
+ /* VOICE_ATT */
+ bVolL = (UINT8)sVolInfo.aswD_DacVoice[0]&MCB_VOICE_ATTL;
+ bVolR = (UINT8)sVolInfo.aswD_DacVoice[1]&MCB_VOICE_ATTR;
+ AddDigVolPacket(bVolL, bVolR, MCI_VOICE_ATTL, MCB_VOICE_LAT, MCI_VOICE_ATTR, eMode);
+
+ /* DAC_ATT */
+ bVolL = (UINT8)sVolInfo.aswD_DacAtt[0]&MCB_DAC_ATTL;
+ bVolR = (UINT8)sVolInfo.aswD_DacAtt[1]&MCB_DAC_ATTR;
+ AddDigVolPacket(bVolL, bVolR, MCI_DAC_ATTL, MCB_DAC_LAT, MCI_DAC_ATTR, eMode);
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddVol", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * AddDigVolPacket
+ *
+ * Description:
+ * Add digital vol setup packet.
+ * Arguments:
+ * bVolL Left volume
+ * bVolR Right volume
+ * bVolLAddr Left volume register address
+ * bLAT LAT
+ * bVolRAddr Right volume register address
+ * eMode update mode
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void AddDigVolPacket
+(
+ UINT8 bVolL,
+ UINT8 bVolR,
+ UINT8 bVolLAddr,
+ UINT8 bLAT,
+ UINT8 bVolRAddr,
+ MCDRV_VOLUPDATE_MODE eMode
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("AddDigVolPacket");
+#endif
+
+ if(bVolL != (McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, bVolLAddr) & (UINT8)~bLAT))
+ {
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolL == MCDRV_REG_MUTE))
+ {
+ if(((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ && (bVolR != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, bVolRAddr)))
+ {
+ }
+ else
+ {
+ bLAT = 0;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)bVolLAddr, bLAT|bVolL);
+ }
+ }
+ if((eMode != eMCDRV_VOLUPDATE_MUTE) || (bVolR == MCDRV_REG_MUTE))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)bVolRAddr, bVolR);
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddDigVolPacket", 0);
+#endif
+}
+
+/****************************************************************************
+ * AddStopADC
+ *
+ * Description:
+ * Add stop ADC packet.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void AddStopADC
+(
+ void
+)
+{
+ UINT8 bReg;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("AddStopADC");
+#endif
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_AD_START);
+
+ if((bReg & MCB_AD_START) != 0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_AD_START, bReg&(UINT8)~MCB_AD_START);
+ }
+
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_ADCMUTE, 0);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddStopADC", 0);
+#endif
+}
+
+/****************************************************************************
+ * AddStopPDM
+ *
+ * Description:
+ * Add stop PDM packet.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void AddStopPDM
+(
+ void
+)
+{
+ UINT8 bReg;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("AddStopPDM");
+#endif
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PDM_START);
+
+ if((bReg & MCB_PDM_START) != 0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_PDM_START, bReg&(UINT8)~MCB_PDM_START);
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddStopPDM", 0);
+#endif
+}
+
+/****************************************************************************
+ * McPacket_AddDigitalIO
+ *
+ * Description:
+ * Add DigitalI0 setup packet.
+ * Arguments:
+ * dUpdateInfo update information
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddDigitalIO
+(
+ UINT32 dUpdateInfo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ MCDRV_POWER_INFO sPowerInfo;
+ MCDRV_POWER_UPDATE sPowerUpdate;
+ MCDRV_DIO_INFO sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddDigitalIO");
+#endif
+
+ if(IsModifiedDIO(dUpdateInfo) != 0)
+ {
+ McResCtrl_GetCurPowerInfo(&sPowerInfo);
+ sdRet = PowerUpDig(MCDRV_DPB_UP);
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ if((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != (UINT32)0)
+ {
+ AddDIOCommon(eMCDRV_DIO_0);
+ }
+ if((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != (UINT32)0)
+ {
+ AddDIOCommon(eMCDRV_DIO_1);
+ }
+ if((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != (UINT32)0)
+ {
+ AddDIOCommon(eMCDRV_DIO_2);
+ }
+
+ /* DI*_BCKP */
+ if(((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != (UINT32)0))
+ {
+ McResCtrl_GetDioInfo(&sDioInfo);
+ bReg = 0;
+ if(sDioInfo.asPortInfo[0].sDioCommon.bBckInvert == MCDRV_BCLK_INVERT)
+ {
+ bReg |= MCB_DI0_BCKP;
+ }
+ if(sDioInfo.asPortInfo[1].sDioCommon.bBckInvert == MCDRV_BCLK_INVERT)
+ {
+ bReg |= MCB_DI1_BCKP;
+ }
+ if(sDioInfo.asPortInfo[2].sDioCommon.bBckInvert == MCDRV_BCLK_INVERT)
+ {
+ bReg |= MCB_DI2_BCKP;
+ }
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_BCKP))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_BCKP, bReg);
+ }
+ }
+
+ if((dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != (UINT32)0)
+ {
+ AddDIODIR(eMCDRV_DIO_0);
+ }
+ if((dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != (UINT32)0)
+ {
+ AddDIODIR(eMCDRV_DIO_1);
+ }
+ if((dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != (UINT32)0)
+ {
+ AddDIODIR(eMCDRV_DIO_2);
+ }
+
+ if((dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != (UINT32)0)
+ {
+ AddDIODIT(eMCDRV_DIO_0);
+ }
+ if((dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != (UINT32)0)
+ {
+ AddDIODIT(eMCDRV_DIO_1);
+ }
+ if((dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != (UINT32)0)
+ {
+ AddDIODIT(eMCDRV_DIO_2);
+ }
+
+ /* unused path power down */
+ sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL;
+ sPowerUpdate.abAnalog[0] =
+ sPowerUpdate.abAnalog[1] =
+ sPowerUpdate.abAnalog[2] =
+ sPowerUpdate.abAnalog[3] =
+ sPowerUpdate.abAnalog[4] = 0;
+ sdRet = McPacket_AddPowerDown(&sPowerInfo, &sPowerUpdate);
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddDigitalIO", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * IsModifiedDIO
+ *
+ * Description:
+ * Is modified DigitalIO.
+ * Arguments:
+ * dUpdateInfo update information
+ * Return:
+ * 0:not modified/1:modified
+ *
+ ****************************************************************************/
+static UINT8 IsModifiedDIO
+(
+ UINT32 dUpdateInfo
+)
+{
+ UINT8 bModified = 0;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("IsModifiedDIO");
+#endif
+
+ if((((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != (UINT32)0) && (IsModifiedDIOCommon(eMCDRV_DIO_0) != 0))
+ || (((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != (UINT32)0) && (IsModifiedDIOCommon(eMCDRV_DIO_1) != 0))
+ || (((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != (UINT32)0) && (IsModifiedDIOCommon(eMCDRV_DIO_2) != 0)))
+ {
+ bModified = 1;
+ }
+ else if((((dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != (UINT32)0) && (IsModifiedDIODIR(eMCDRV_DIO_0) != 0))
+ || (((dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != (UINT32)0) && (IsModifiedDIODIR(eMCDRV_DIO_1) != 0))
+ || (((dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != (UINT32)0) && (IsModifiedDIODIR(eMCDRV_DIO_2) != 0)))
+ {
+ bModified = 1;
+ }
+ else if((((dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != (UINT32)0) && (IsModifiedDIODIT(eMCDRV_DIO_0) != 0))
+ || (((dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != (UINT32)0) && (IsModifiedDIODIT(eMCDRV_DIO_1) != 0))
+ || (((dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != (UINT32)0) && (IsModifiedDIODIT(eMCDRV_DIO_2) != 0)))
+ {
+ bModified = 1;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bModified;
+ McDebugLog_FuncOut("IsModifiedDIO", &sdRet);
+#endif
+ return bModified;
+}
+
+/****************************************************************************
+ * IsModifiedDIOCommon
+ *
+ * Description:
+ * Is modified DigitalIO Common.
+ * Arguments:
+ * ePort port number
+ * Return:
+ * 0:not modified/1:modified
+ *
+ ****************************************************************************/
+static UINT8 IsModifiedDIOCommon
+(
+ MCDRV_DIO_PORT_NO ePort
+)
+{
+ UINT8 bReg;
+ UINT8 bRegOffset;
+ UINT8 bModified = 0;
+ MCDRV_DIO_INFO sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("IsModifiedDIOCommon");
+#endif
+
+ if(ePort == eMCDRV_DIO_0)
+ {
+ bRegOffset = 0;
+ }
+ else if(ePort == eMCDRV_DIO_1)
+ {
+ bRegOffset = MCI_DIMODE1 - MCI_DIMODE0;
+ }
+ else if(ePort == eMCDRV_DIO_2)
+ {
+ bRegOffset = MCI_DIMODE2 - MCI_DIMODE0;
+ }
+ else
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = MCDRV_ERROR;
+ McDebugLog_FuncOut("IsModifiedDIOCommon", &sdRet);
+ #endif
+ return 0;
+ }
+
+ McResCtrl_GetDioInfo(&sDioInfo);
+
+ if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIMODE0+bRegOffset))
+ {
+ bModified = 1;
+ }
+
+ bReg = (sDioInfo.asPortInfo[ePort].sDioCommon.bAutoFs << 7)
+ | (sDioInfo.asPortInfo[ePort].sDioCommon.bBckFs << 4)
+ | sDioInfo.asPortInfo[ePort].sDioCommon.bFs;
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DI_FS0+bRegOffset))
+ {
+ bModified = 1;
+ }
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DI0_SRC+bRegOffset);
+ if((sDioInfo.asPortInfo[ePort].sDioCommon.bAutoFs == 0)
+ && (sDioInfo.asPortInfo[ePort].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE))
+ {
+ bReg |= MCB_DICOMMON_SRC_RATE_SET;
+ }
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DI0_SRC+bRegOffset))
+ {
+ bModified = 1;
+ }
+ if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_PCM)
+ {
+ bReg = (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmHizTim << 7)
+ | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmClkDown << 6)
+ | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmFrame << 5)
+ | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmHighPeriod);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_HIZ_REDGE0+bRegOffset))
+ {
+ bModified = 1;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bModified;
+ McDebugLog_FuncOut("IsModifiedDIOCommon", &sdRet);
+#endif
+ return bModified;
+}
+
+/****************************************************************************
+ * IsModifiedDIODIR
+ *
+ * Description:
+ * Is modified DigitalIO DIR.
+ * Arguments:
+ * ePort port number
+ * Return:
+ * 0:not modified/1:modified
+ *
+ ****************************************************************************/
+static UINT8 IsModifiedDIODIR
+(
+ MCDRV_DIO_PORT_NO ePort
+)
+{
+ UINT8 bReg;
+ UINT8 bRegOffset;
+ UINT8 bModified = 0;
+ MCDRV_DIO_INFO sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("IsModifiedDIODIR");
+#endif
+
+ if(ePort == eMCDRV_DIO_0)
+ {
+ bRegOffset = 0;
+ }
+ else if(ePort == eMCDRV_DIO_1)
+ {
+ bRegOffset = MCI_DIMODE1 - MCI_DIMODE0;
+ }
+ else if(ePort == eMCDRV_DIO_2)
+ {
+ bRegOffset = MCI_DIMODE2 - MCI_DIMODE0;
+ }
+ else
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = MCDRV_ERROR;
+ McDebugLog_FuncOut("IsModifiedDIODIR", &sdRet);
+ #endif
+ return 0;
+ }
+
+ McResCtrl_GetDioInfo(&sDioInfo);
+
+ bReg = (UINT8)(sDioInfo.asPortInfo[ePort].sDir.wSrcRate>>8);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIRSRC_RATE0_MSB+bRegOffset))
+ {
+ bModified = 1;
+ }
+
+ bReg = (UINT8)sDioInfo.asPortInfo[ePort].sDir.wSrcRate;
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIRSRC_RATE0_LSB+bRegOffset))
+ {
+ bModified = 1;
+ }
+
+ if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_DA)
+ {
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bMode << 6)
+ | (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bBitSel << 4)
+ | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bMode << 2)
+ | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bBitSel);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIX0_FMT+bRegOffset))
+ {
+ bModified = 1;
+ }
+ /* DIR*_CH */
+ bReg = (sDioInfo.asPortInfo[ePort].sDir.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDir.abSlot[0]);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIR0_CH+bRegOffset))
+ {
+ bModified = 1;
+ }
+ }
+ else
+ {
+ /* PCM_MONO_RX*, PCM_EXTEND_RX*, PCM_LSBON_RX*, PCM_LAW_RX*, PCM_BIT_RX* */
+ bReg = (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bMono << 7)
+ | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bOrder << 4)
+ | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bLaw << 2)
+ | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bBitSel);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PCM_RX0+bRegOffset))
+ {
+ bModified = 1;
+ }
+ /* PCM_CH1_RX*, PCM_CH0_RX* */
+ bReg = (sDioInfo.asPortInfo[ePort].sDir.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDir.abSlot[0]);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PCM_SLOT_RX0+bRegOffset))
+ {
+ bModified = 1;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bModified;
+ McDebugLog_FuncOut("IsModifiedDIODIR", &sdRet);
+#endif
+ return bModified;
+}
+
+/****************************************************************************
+ * IsModifiedDIODIT
+ *
+ * Description:
+ * Is modified DigitalIO DIT.
+ * Arguments:
+ * ePort port number
+ * Return:
+ * 0:not modified/1:modified
+ *
+ ****************************************************************************/
+static UINT8 IsModifiedDIODIT
+(
+ MCDRV_DIO_PORT_NO ePort
+)
+{
+ UINT8 bReg;
+ UINT8 bRegOffset;
+ UINT8 bModified = 0;
+ MCDRV_DIO_INFO sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("IsModifiedDIODIT");
+#endif
+
+ if(ePort == eMCDRV_DIO_0)
+ {
+ bRegOffset = 0;
+ }
+ else if(ePort == eMCDRV_DIO_1)
+ {
+ bRegOffset = MCI_DIMODE1 - MCI_DIMODE0;
+ }
+ else if(ePort == eMCDRV_DIO_2)
+ {
+ bRegOffset = MCI_DIMODE2 - MCI_DIMODE0;
+ }
+ else
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = MCDRV_ERROR;
+ McDebugLog_FuncOut("IsModifiedDIODIT", &sdRet);
+ #endif
+ return 0;
+ }
+
+ McResCtrl_GetDioInfo(&sDioInfo);
+
+ bReg = (UINT8)(sDioInfo.asPortInfo[ePort].sDit.wSrcRate>>8);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DITSRC_RATE0_MSB+bRegOffset))
+ {
+ bModified = 1;
+ }
+ bReg = (UINT8)sDioInfo.asPortInfo[ePort].sDit.wSrcRate;
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DITSRC_RATE0_LSB+bRegOffset))
+ {
+ bModified = 1;
+ }
+
+ if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_DA)
+ {
+ /* DIT*_FMT, DIT*_BIT, DIR*_FMT, DIR*_BIT */
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bMode << 6)
+ | (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bBitSel << 4)
+ | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bMode << 2)
+ | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bBitSel);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIX0_FMT+bRegOffset))
+ {
+ bModified = 1;
+ }
+
+ /* DIT*_SLOT */
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDit.abSlot[0]);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIT0_SLOT+bRegOffset))
+ {
+ bModified = 1;
+ }
+ }
+ else
+ {
+ /* PCM_MONO_TX*, PCM_EXTEND_TX*, PCM_LSBON_TX*, PCM_LAW_TX*, PCM_BIT_TX* */
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bMono << 7)
+ | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bOrder << 4)
+ | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bLaw << 2)
+ | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bBitSel);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PCM_TX0+bRegOffset))
+ {
+ bModified = 1;
+ }
+
+ /* PCM_CH1_TX*, PCM_CH0_TX* */
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDit.abSlot[0]);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PCM_SLOT_TX0+bRegOffset))
+ {
+ bModified = 1;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bModified;
+ McDebugLog_FuncOut("IsModifiedDIODIT", &sdRet);
+#endif
+ return bModified;
+}
+
+/****************************************************************************
+ * AddDIOCommon
+ *
+ * Description:
+ * Add DigitalI0 Common setup packet.
+ * Arguments:
+ * ePort port number
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void AddDIOCommon
+(
+ MCDRV_DIO_PORT_NO ePort
+)
+{
+ UINT8 bReg;
+ UINT8 bRegOffset;
+ MCDRV_DIO_INFO sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("AddDIOCommon");
+#endif
+
+ if(ePort == eMCDRV_DIO_0)
+ {
+ bRegOffset = 0;
+ }
+ else if(ePort == eMCDRV_DIO_1)
+ {
+ bRegOffset = MCI_DIMODE1 - MCI_DIMODE0;
+ }
+ else if(ePort == eMCDRV_DIO_2)
+ {
+ bRegOffset = MCI_DIMODE2 - MCI_DIMODE0;
+ }
+ else
+ {
+
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = MCDRV_ERROR;
+ McDebugLog_FuncOut("AddDIOCommon", &sdRet);
+ #endif
+ return;
+ }
+
+ McResCtrl_GetDioInfo(&sDioInfo);
+
+ /* DIMODE* */
+ if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIMODE0+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DIMODE0+bRegOffset),
+ sDioInfo.asPortInfo[ePort].sDioCommon.bInterface);
+ }
+
+ /* DIAUTO_FS*, DIBCK*, DIFS* */
+ bReg = (sDioInfo.asPortInfo[ePort].sDioCommon.bAutoFs << 7)
+ | (sDioInfo.asPortInfo[ePort].sDioCommon.bBckFs << 4)
+ | sDioInfo.asPortInfo[ePort].sDioCommon.bFs;
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DI_FS0+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DI_FS0+bRegOffset), bReg);
+ }
+
+ /* DI*_SRCRATE_SET */
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DI0_SRC+bRegOffset);
+ if((sDioInfo.asPortInfo[ePort].sDioCommon.bAutoFs == 0)
+ && (sDioInfo.asPortInfo[ePort].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE))
+ {
+ bReg |= MCB_DICOMMON_SRC_RATE_SET;
+ }
+ else
+ {
+ bReg &= (UINT8)~MCB_DICOMMON_SRC_RATE_SET;
+ }
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DI0_SRC+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DI0_SRC+bRegOffset), bReg);
+ }
+
+ /* HIZ_REDGE*, PCM_CLKDOWN*, PCM_FRAME*, PCM_HPERIOD* */
+ if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_PCM)
+ {
+ bReg = (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmHizTim << 7)
+ | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmClkDown << 6)
+ | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmFrame << 5)
+ | (sDioInfo.asPortInfo[ePort].sDioCommon.bPcmHighPeriod);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_HIZ_REDGE0+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_HIZ_REDGE0+bRegOffset), bReg);
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddDIOCommon", 0);
+#endif
+}
+
+/****************************************************************************
+ * AddDIODIR
+ *
+ * Description:
+ * Add DigitalI0 DIR setup packet.
+ * Arguments:
+ * ePort port number
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void AddDIODIR
+(
+ MCDRV_DIO_PORT_NO ePort
+)
+{
+ UINT8 bReg;
+ UINT8 bRegOffset;
+ UINT16 wSrcRate;
+ MCDRV_DIO_INFO sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("AddDIODIR");
+#endif
+
+ if(ePort == eMCDRV_DIO_0)
+ {
+ bRegOffset = 0;
+ }
+ else if(ePort == eMCDRV_DIO_1)
+ {
+ bRegOffset = MCI_DIMODE1 - MCI_DIMODE0;
+ }
+ else if(ePort == eMCDRV_DIO_2)
+ {
+ bRegOffset = MCI_DIMODE2 - MCI_DIMODE0;
+ }
+ else
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = MCDRV_ERROR;
+ McDebugLog_FuncOut("AddDIODIR", &sdRet);
+ #endif
+ return;
+ }
+
+ McResCtrl_GetDioInfo(&sDioInfo);
+
+ /* DIRSRC_RATE* */
+ wSrcRate = sDioInfo.asPortInfo[ePort].sDir.wSrcRate;
+ if(wSrcRate == 0)
+ {
+ switch(sDioInfo.asPortInfo[ePort].sDioCommon.bFs)
+ {
+ case MCDRV_FS_48000:
+ wSrcRate = MCDRV_DIR_SRCRATE_48000;
+ break;
+ case MCDRV_FS_44100:
+ wSrcRate = MCDRV_DIR_SRCRATE_44100;
+ break;
+ case MCDRV_FS_32000:
+ wSrcRate = MCDRV_DIR_SRCRATE_32000;
+ break;
+ case MCDRV_FS_24000:
+ wSrcRate = MCDRV_DIR_SRCRATE_24000;
+ break;
+ case MCDRV_FS_22050:
+ wSrcRate = MCDRV_DIR_SRCRATE_22050;
+ break;
+ case MCDRV_FS_16000:
+ wSrcRate = MCDRV_DIR_SRCRATE_16000;
+ break;
+ case MCDRV_FS_12000:
+ wSrcRate = MCDRV_DIR_SRCRATE_12000;
+ break;
+ case MCDRV_FS_11025:
+ wSrcRate = MCDRV_DIR_SRCRATE_11025;
+ break;
+ case MCDRV_FS_8000:
+ wSrcRate = MCDRV_DIR_SRCRATE_8000;
+ break;
+ default:
+ /* unreachable */
+ wSrcRate = 0;
+ break;
+ }
+ }
+ bReg = (UINT8)(wSrcRate>>8);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIRSRC_RATE0_MSB+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DIRSRC_RATE0_MSB+bRegOffset), bReg);
+ }
+ bReg = (UINT8)wSrcRate;
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIRSRC_RATE0_LSB+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DIRSRC_RATE0_LSB+bRegOffset), bReg);
+ }
+
+ /* DIT*_FMT, DIT*_BIT, DIR*_FMT, DIR*_BIT */
+ if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_DA)
+ {
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bMode << 6)
+ | (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bBitSel << 4)
+ | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bMode << 2)
+ | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bBitSel);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIX0_FMT+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DIX0_FMT+bRegOffset), bReg);
+ }
+ /* DIR*_CH */
+ bReg = (sDioInfo.asPortInfo[ePort].sDir.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDir.abSlot[0]);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIR0_CH+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DIR0_CH+bRegOffset), bReg);
+ }
+ }
+ else
+ {
+ /* PCM_MONO_RX*, PCM_EXTEND_RX*, PCM_LSBON_RX*, PCM_LAW_RX*, PCM_BIT_RX* */
+ bReg = (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bMono << 7)
+ | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bOrder << 4)
+ | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bLaw << 2)
+ | (sDioInfo.asPortInfo[ePort].sDir.sPcmFormat.bBitSel);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PCM_RX0+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_PCM_RX0+bRegOffset), bReg);
+ }
+ /* PCM_CH1_RX*, PCM_CH0_RX* */
+ bReg = (sDioInfo.asPortInfo[ePort].sDir.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDir.abSlot[0]);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PCM_SLOT_RX0+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_PCM_SLOT_RX0+bRegOffset), bReg);
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddDIODIR", 0);
+#endif
+}
+
+/****************************************************************************
+ * AddDIODIT
+ *
+ * Description:
+ * Add DigitalI0 DIT setup packet.
+ * Arguments:
+ * ePort port number
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void AddDIODIT
+(
+ MCDRV_DIO_PORT_NO ePort
+)
+{
+ UINT8 bReg;
+ UINT8 bRegOffset;
+ UINT16 wSrcRate;
+ MCDRV_DIO_INFO sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("AddDIODIT");
+#endif
+
+ if(ePort == eMCDRV_DIO_0)
+ {
+ bRegOffset = 0;
+ }
+ else if(ePort == eMCDRV_DIO_1)
+ {
+ bRegOffset = MCI_DIMODE1 - MCI_DIMODE0;
+ }
+ else if(ePort == eMCDRV_DIO_2)
+ {
+ bRegOffset = MCI_DIMODE2 - MCI_DIMODE0;
+ }
+ else
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = MCDRV_ERROR;
+ McDebugLog_FuncOut("AddDIODIT", &sdRet);
+ #endif
+ return;
+ }
+
+ McResCtrl_GetDioInfo(&sDioInfo);
+
+ wSrcRate = sDioInfo.asPortInfo[ePort].sDit.wSrcRate;
+ if(wSrcRate == 0)
+ {
+ switch(sDioInfo.asPortInfo[ePort].sDioCommon.bFs)
+ {
+ case MCDRV_FS_48000:
+ wSrcRate = MCDRV_DIT_SRCRATE_48000;
+ break;
+ case MCDRV_FS_44100:
+ wSrcRate = MCDRV_DIT_SRCRATE_44100;
+ break;
+ case MCDRV_FS_32000:
+ wSrcRate = MCDRV_DIT_SRCRATE_32000;
+ break;
+ case MCDRV_FS_24000:
+ wSrcRate = MCDRV_DIT_SRCRATE_24000;
+ break;
+ case MCDRV_FS_22050:
+ wSrcRate = MCDRV_DIT_SRCRATE_22050;
+ break;
+ case MCDRV_FS_16000:
+ wSrcRate = MCDRV_DIT_SRCRATE_16000;
+ break;
+ case MCDRV_FS_12000:
+ wSrcRate = MCDRV_DIT_SRCRATE_12000;
+ break;
+ case MCDRV_FS_11025:
+ wSrcRate = MCDRV_DIT_SRCRATE_11025;
+ break;
+ case MCDRV_FS_8000:
+ wSrcRate = MCDRV_DIT_SRCRATE_8000;
+ break;
+ default:
+ /* unreachable */
+ wSrcRate = 0;
+ break;
+ }
+ }
+ /* DITSRC_RATE* */
+ bReg = (UINT8)(wSrcRate>>8);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DITSRC_RATE0_MSB+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DITSRC_RATE0_MSB+bRegOffset), bReg);
+ }
+ bReg = (UINT8)wSrcRate;
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DITSRC_RATE0_LSB+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DITSRC_RATE0_LSB+bRegOffset), bReg);
+ }
+
+ if(sDioInfo.asPortInfo[ePort].sDioCommon.bInterface == MCDRV_DIO_DA)
+ {
+ /* DIT*_FMT, DIT*_BIT, DIR*_FMT, DIR*_BIT */
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bMode << 6)
+ | (sDioInfo.asPortInfo[ePort].sDit.sDaFormat.bBitSel << 4)
+ | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bMode << 2)
+ | (sDioInfo.asPortInfo[ePort].sDir.sDaFormat.bBitSel);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIX0_FMT+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DIX0_FMT+bRegOffset), bReg);
+ }
+
+ /* DIT*_SLOT */
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDit.abSlot[0]);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DIT0_SLOT+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_DIT0_SLOT+bRegOffset), bReg);
+ }
+ }
+ else
+ {
+ /* PCM_MONO_TX*, PCM_EXTEND_TX*, PCM_LSBON_TX*, PCM_LAW_TX*, PCM_BIT_TX* */
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bMono << 7)
+ | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bOrder << 4)
+ | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bLaw << 2)
+ | (sDioInfo.asPortInfo[ePort].sDit.sPcmFormat.bBitSel);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PCM_TX0+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_PCM_TX0+bRegOffset), bReg);
+ }
+
+ /* PCM_CH1_TX*, PCM_CH0_TX* */
+ bReg = (sDioInfo.asPortInfo[ePort].sDit.abSlot[1] << 4) | (sDioInfo.asPortInfo[ePort].sDit.abSlot[0]);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PCM_SLOT_TX0+bRegOffset))
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)(MCI_PCM_SLOT_TX0+bRegOffset), bReg);
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("AddDIODIT", 0);
+#endif
+}
+
+/****************************************************************************
+ * McPacket_AddDAC
+ *
+ * Description:
+ * Add DAC setup packet.
+ * Arguments:
+ * dUpdateInfo update information
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddDAC
+(
+ UINT32 dUpdateInfo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ MCDRV_POWER_INFO sPowerInfo;
+ MCDRV_POWER_UPDATE sPowerUpdate;
+ MCDRV_DAC_INFO sDacInfo;
+ UINT8 bReg;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddDAC");
+#endif
+
+ McResCtrl_GetDacInfo(&sDacInfo);
+
+ if(((dUpdateInfo & MCDRV_DAC_MSWP_UPDATE_FLAG) != (UINT32)0) || ((dUpdateInfo & MCDRV_DAC_VSWP_UPDATE_FLAG) != (UINT32)0))
+ {
+ bReg = (sDacInfo.bMasterSwap<<4)|sDacInfo.bVoiceSwap;
+ if(bReg == McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_SWP))
+ {
+ dUpdateInfo &= ~(MCDRV_DAC_MSWP_UPDATE_FLAG|MCDRV_DAC_VSWP_UPDATE_FLAG);
+ }
+ }
+ if((dUpdateInfo & MCDRV_DAC_HPF_UPDATE_FLAG) != (UINT32)0)
+ {
+ if(sDacInfo.bDcCut == McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_DCCUTOFF))
+ {
+ dUpdateInfo &= ~(MCDRV_DAC_HPF_UPDATE_FLAG);
+ }
+ }
+
+ if(dUpdateInfo != (UINT32)0)
+ {
+ McResCtrl_GetCurPowerInfo(&sPowerInfo);
+ sdRet = PowerUpDig(MCDRV_DPB_UP);
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ if(((dUpdateInfo & MCDRV_DAC_MSWP_UPDATE_FLAG) != (UINT32)0) || ((dUpdateInfo & MCDRV_DAC_VSWP_UPDATE_FLAG) != (UINT32)0))
+ {
+ bReg = (sDacInfo.bMasterSwap<<4)|sDacInfo.bVoiceSwap;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_SWP, bReg);
+ }
+ if((dUpdateInfo & MCDRV_DAC_HPF_UPDATE_FLAG) != (UINT32)0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DCCUTOFF, sDacInfo.bDcCut);
+ }
+
+ /* unused path power down */
+ sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL;
+ sPowerUpdate.abAnalog[0] =
+ sPowerUpdate.abAnalog[1] =
+ sPowerUpdate.abAnalog[2] =
+ sPowerUpdate.abAnalog[3] =
+ sPowerUpdate.abAnalog[4] = 0;
+ sdRet = McPacket_AddPowerDown(&sPowerInfo, &sPowerUpdate);
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddDAC", &sdRet);
+#endif
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddADC
+ *
+ * Description:
+ * Add ADC setup packet.
+ * Arguments:
+ * dUpdateInfo update information
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddADC
+(
+ UINT32 dUpdateInfo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ MCDRV_POWER_INFO sPowerInfo;
+ MCDRV_POWER_UPDATE sPowerUpdate;
+ MCDRV_ADC_INFO sAdcInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddADC");
+#endif
+
+ McResCtrl_GetAdcInfo(&sAdcInfo);
+
+ if(((dUpdateInfo & MCDRV_ADCADJ_UPDATE_FLAG) != (UINT32)0) || ((dUpdateInfo & MCDRV_ADCAGC_UPDATE_FLAG) != (UINT32)0))
+ {
+ bReg = (sAdcInfo.bAgcOn<<2)|sAdcInfo.bAgcAdjust;
+ if(bReg == McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_AD_AGC))
+ {
+ dUpdateInfo &= ~(MCDRV_ADCADJ_UPDATE_FLAG|MCDRV_ADCAGC_UPDATE_FLAG);
+ }
+ }
+ if((dUpdateInfo & MCDRV_ADCMONO_UPDATE_FLAG) != (UINT32)0)
+ {
+ bReg = (UINT8)((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_AD_START) & MCB_AD_START) | (sAdcInfo.bMono << 1));
+ if(bReg == McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_AD_START))
+ {
+ dUpdateInfo &= ~(MCDRV_ADCMONO_UPDATE_FLAG);
+ }
+ }
+
+ if(dUpdateInfo != (UINT32)0)
+ {
+ McResCtrl_GetCurPowerInfo(&sPowerInfo);
+ sdRet = PowerUpDig(MCDRV_DPB_UP);
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ if(((dUpdateInfo & MCDRV_ADCADJ_UPDATE_FLAG) != (UINT32)0) || ((dUpdateInfo & MCDRV_ADCAGC_UPDATE_FLAG) != (UINT32)0))
+ {
+ bReg = (sAdcInfo.bAgcOn<<2)|sAdcInfo.bAgcAdjust;
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_AD_AGC))
+ {
+ AddStopADC();
+ sdRet = McDevIf_ExecutePacket();
+ }
+ if(MCDRV_SUCCESS == sdRet)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_AD_AGC, bReg);
+ }
+ }
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ if((dUpdateInfo & MCDRV_ADCMONO_UPDATE_FLAG) != (UINT32)0)
+ {
+ bReg = (UINT8)((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_AD_START) & MCB_AD_START) | (sAdcInfo.bMono << 1));
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_AD_START))
+ {
+ AddStopADC();
+ sdRet = McDevIf_ExecutePacket();
+ }
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_AD_START, (sAdcInfo.bMono << 1));
+ }
+ }
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ /* unused path power down */
+ sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL;
+ sPowerUpdate.abAnalog[0] =
+ sPowerUpdate.abAnalog[1] =
+ sPowerUpdate.abAnalog[2] =
+ sPowerUpdate.abAnalog[3] =
+ sPowerUpdate.abAnalog[4] = 0;
+ sdRet = McPacket_AddPowerDown(&sPowerInfo, &sPowerUpdate);
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ sdRet = McPacket_AddStart();
+ }
+ }
+ }
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddADC", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddSP
+ *
+ * Description:
+ * Add SP setup packet.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddSP
+(
+ void
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ MCDRV_SP_INFO sSpInfo;
+ UINT8 bReg;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddSP");
+#endif
+
+ bReg = (UINT8)(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_SP_MODE) & (UINT8)~MCB_SP_SWAP);
+
+ McResCtrl_GetSpInfo(&sSpInfo);
+
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)MCI_SP_MODE, bReg|sSpInfo.bSwap);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddSP", &sdRet);
+#endif
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddDNG
+ *
+ * Description:
+ * Add Digital Noise Gate setup packet.
+ * Arguments:
+ * dUpdateInfo update information
+ * Return:
+ * MCDRV_SUCCESS
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddDNG
+(
+ UINT32 dUpdateInfo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ MCDRV_DNG_INFO sDngInfo;
+ UINT8 bReg;
+ UINT8 bRegDNGON;
+ UINT8 bItem;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddDNG");
+#endif
+
+ McResCtrl_GetDngInfo(&sDngInfo);
+
+ for(bItem = MCDRV_DNG_ITEM_HP; bItem <= MCDRV_DNG_ITEM_RC; bItem++)
+ {
+ bRegDNGON = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_DNGON_HP+(bItem*3));
+
+ /* ReleseTime, Attack Time */
+ if(((dUpdateInfo & (MCDRV_DNGREL_HP_UPDATE_FLAG<<(8*bItem))) != 0UL) || ((dUpdateInfo & (MCDRV_DNGATK_HP_UPDATE_FLAG<<(8*bItem))) != 0UL))
+ {
+ bReg = (sDngInfo.abRelease[bItem]<<4)|sDngInfo.abAttack[bItem];
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_DNGATRT_HP+(bItem*3)))
+ {
+ if((bRegDNGON&0x01) != 0)
+ {/* DNG on */
+ /* DNG off */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)(MCI_DNGON_HP+(bItem*3)), bRegDNGON&0xFE);
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)(MCI_DNGATRT_HP+(bItem*3)), bReg);
+ }
+ }
+
+ /* Target */
+ if((dUpdateInfo & (MCDRV_DNGTARGET_HP_UPDATE_FLAG<<(8*bItem))) != 0UL)
+ {
+ bReg = sDngInfo.abTarget[bItem]<<4;
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_DNGTARGET_HP+(bItem*3)))
+ {
+ if((bRegDNGON&0x01) != 0)
+ {/* DNG on */
+ /* DNG off */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)(MCI_DNGON_HP+(bItem*3)), bRegDNGON&0xFE);
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)(MCI_DNGTARGET_HP+(bItem*3)), bReg);
+ }
+ }
+
+ /* Threshold, HoldTime */
+ if(((dUpdateInfo & (MCDRV_DNGTHRES_HP_UPDATE_FLAG<<(8*bItem))) != 0UL)
+ || ((dUpdateInfo & (MCDRV_DNGHOLD_HP_UPDATE_FLAG<<(8*bItem))) != 0UL))
+ {
+ bReg = (sDngInfo.abThreshold[bItem]<<4)|(sDngInfo.abHold[bItem]<<1);
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_DNGON_HP+(bItem*3)))
+ {
+ if((bRegDNGON&0x01) != 0)
+ {/* DNG on */
+ /* DNG off */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)(MCI_DNGON_HP+(bItem*3)), bRegDNGON&0xFE);
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)(MCI_DNGON_HP+(bItem*3)), bReg);
+ }
+ bRegDNGON = bReg | (bRegDNGON&0x01);
+ }
+
+ /* DNGON */
+ if((dUpdateInfo & (MCDRV_DNGSW_HP_UPDATE_FLAG<<(8*bItem))) != 0UL)
+ {
+ bRegDNGON = (bRegDNGON&0xFE) | sDngInfo.abOnOff[bItem];
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_ANA | (UINT32)(MCI_DNGON_HP+(bItem*3)), bRegDNGON);
+ }
+
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddDNG", &sdRet);
+#endif
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddAE
+ *
+ * Description:
+ * Add Audio Engine setup packet.
+ * Arguments:
+ * dUpdateInfo update information
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddAE
+(
+ UINT32 dUpdateInfo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ UINT8 i;
+ UINT32 dXFadeParam = 0;
+ MCDRV_AE_INFO sAeInfo;
+ MCDRV_PATH_INFO sPathInfo;
+ MCDRV_POWER_INFO sPowerInfo;
+ MCDRV_POWER_UPDATE sPowerUpdate;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddAE");
+#endif
+
+ McResCtrl_GetPathInfo(&sPathInfo);
+ McResCtrl_GetAeInfo(&sAeInfo);
+
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_AE, eMCDRV_DST_CH0) == 1)
+ {/* AE is used */
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_A, MCI_BDSP_ST);
+ if(McDevProf_IsValid(eMCDRV_FUNC_DBEX) == 1)
+ {
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEXWIDE_ONOFF) != (UINT32)0)
+ {
+ if((((sAeInfo.bOnOff & MCDRV_BEXWIDE_ON) != 0) && ((bReg & MCB_DBEXON) != 0))
+ || (((sAeInfo.bOnOff & MCDRV_BEXWIDE_ON) == 0) && ((bReg & MCB_DBEXON) == 0)))
+ {
+ dUpdateInfo &= ~MCDRV_AEUPDATE_FLAG_BEXWIDE_ONOFF;
+ }
+ }
+ }
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC_ONOFF) != (UINT32)0)
+ {
+ if((((sAeInfo.bOnOff & MCDRV_DRC_ON) != 0) && ((bReg & MCB_DRCON) != 0))
+ || (((sAeInfo.bOnOff & MCDRV_DRC_ON) == 0) && ((bReg & MCB_DRCON) == 0)))
+ {
+ dUpdateInfo &= ~MCDRV_AEUPDATE_FLAG_DRC_ONOFF;
+ }
+ }
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5_ONOFF) != (UINT32)0)
+ {
+ if((((sAeInfo.bOnOff & MCDRV_EQ5_ON) != 0) && ((bReg & MCB_EQ5ON) != 0))
+ || (((sAeInfo.bOnOff & MCDRV_EQ5_ON) == 0) && ((bReg & MCB_EQ5ON) == 0)))
+ {
+ dUpdateInfo &= ~MCDRV_AEUPDATE_FLAG_EQ5_ONOFF;
+ }
+ }
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3_ONOFF) != (UINT32)0)
+ {
+ if((((sAeInfo.bOnOff & MCDRV_EQ3_ON) != 0) && ((bReg & MCB_EQ3ON) != 0))
+ || (((sAeInfo.bOnOff & MCDRV_EQ3_ON) == 0) && ((bReg & MCB_EQ3ON) == 0)))
+ {
+ dUpdateInfo &= ~MCDRV_AEUPDATE_FLAG_EQ3_ONOFF;
+ }
+ }
+ if(dUpdateInfo != (UINT32)0)
+ {
+ /* on/off setting or param changed */
+ if(((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEX) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_AEUPDATE_FLAG_WIDE) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEXWIDE_ONOFF) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC_ONOFF) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5_ONOFF) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3_ONOFF) != (UINT32)0))
+ {
+ dXFadeParam = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_DAC_INS);
+ dXFadeParam <<= 8;
+ dXFadeParam |= McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_INS);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_DAC_INS, 0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_INS, 0);
+ }
+ sdRet = McDevIf_ExecutePacket();
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ /* wait xfade complete */
+ if(dXFadeParam != (UINT32)0)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_INSFLG | dXFadeParam, 0);
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_A, MCI_BDSP_ST);
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5) != (UINT32)0)
+ {
+ bReg &= (UINT8)~MCB_EQ5ON;
+ }
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3) != (UINT32)0)
+ {
+ bReg &= (UINT8)~MCB_EQ3ON;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_ST, bReg);
+ }
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_A, MCI_BDSP_ST);
+ if((bReg & MCB_BDSP_ST) == MCB_BDSP_ST)
+ {
+ /* Stop BDSP */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_ST, 0);
+ /* Reset TRAM */
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_RST, MCB_TRAM_RST);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_RST, 0);
+ }
+ }
+ }
+ }
+
+ if((dUpdateInfo != (UINT32)0) && (sdRet == MCDRV_SUCCESS))
+ {
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC) != (UINT32)0)
+ {
+ McResCtrl_GetPowerInfo(&sPowerInfo);
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP0;
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP1;
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP2;
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPBDSP;
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_PLLRST0;
+ sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL;
+ sPowerUpdate.abAnalog[0] =
+ sPowerUpdate.abAnalog[1] =
+ sPowerUpdate.abAnalog[2] =
+ sPowerUpdate.abAnalog[3] =
+ sPowerUpdate.abAnalog[4] = 0;
+ sdRet = McPacket_AddPowerUp(&sPowerInfo, &sPowerUpdate);
+ if(MCDRV_SUCCESS == sdRet)
+ {
+ sdRet = McDevIf_ExecutePacket();
+ }
+ if(MCDRV_SUCCESS == sdRet)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_ADR, 0);
+ sdRet = McDevIf_ExecutePacket();
+ if(MCDRV_SUCCESS == sdRet)
+ {
+ McDevIf_AddPacketRepeat(MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_A | (UINT32)MCI_BDSP_WINDOW, sAeInfo.abDrc, DRC_PARAM_SIZE);
+ }
+ }
+ }
+
+ if(MCDRV_SUCCESS == sdRet)
+ {
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5) != (UINT32)0)
+ {
+ for(i = 0; i < EQ5_PARAM_SIZE; i++)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_AE | (UINT32)(MCI_BAND0_CEQ0+i), sAeInfo.abEq5[i]);
+ }
+ }
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3) != (UINT32)0)
+ {
+ for(i = 0; i < EQ3_PARAM_SIZE; i++)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_AE | (UINT32)(MCI_BAND5_CEQ0+i), sAeInfo.abEq3[i]);
+ }
+ }
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddAE", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddPDM
+ *
+ * Description:
+ * Add PDM setup packet.
+ * Arguments:
+ * dUpdateInfo update information
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddPDM
+(
+ UINT32 dUpdateInfo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ MCDRV_POWER_INFO sPowerInfo;
+ MCDRV_POWER_UPDATE sPowerUpdate;
+ MCDRV_PDM_INFO sPdmInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddPDM");
+#endif
+
+ McResCtrl_GetPdmInfo(&sPdmInfo);
+ if(((dUpdateInfo & MCDRV_PDMADJ_UPDATE_FLAG) != (UINT32)0) || ((dUpdateInfo & MCDRV_PDMAGC_UPDATE_FLAG) != (UINT32)0))
+ {
+ bReg = (sPdmInfo.bAgcOn<<2)|sPdmInfo.bAgcAdjust;
+ if(bReg == McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PDM_AGC))
+ {
+ dUpdateInfo &= ~(MCDRV_PDMADJ_UPDATE_FLAG|MCDRV_PDMAGC_UPDATE_FLAG);
+ }
+ }
+ if((dUpdateInfo & MCDRV_PDMMONO_UPDATE_FLAG) != (UINT32)0)
+ {
+ bReg = (UINT8)(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PDM_START) & (UINT8)MCB_PDM_MN);
+ if((sPdmInfo.bMono<<1) == bReg)
+ {
+ dUpdateInfo &= ~(MCDRV_PDMMONO_UPDATE_FLAG);
+ }
+ }
+ if(((dUpdateInfo & MCDRV_PDMCLK_UPDATE_FLAG) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_PDMEDGE_UPDATE_FLAG) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_PDMWAIT_UPDATE_FLAG) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_PDMSEL_UPDATE_FLAG) != (UINT32)0))
+ {
+ bReg = (sPdmInfo.bPdmWait<<5) | (sPdmInfo.bPdmEdge<<4) | (sPdmInfo.bPdmSel<<2) | sPdmInfo.bClk;
+ if(bReg == McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PDM_STWAIT))
+ {
+ dUpdateInfo &= ~(MCDRV_PDMCLK_UPDATE_FLAG|MCDRV_PDMEDGE_UPDATE_FLAG|MCDRV_PDMWAIT_UPDATE_FLAG|MCDRV_PDMSEL_UPDATE_FLAG);
+ }
+ }
+ if(dUpdateInfo != (UINT32)0)
+ {
+ McResCtrl_GetCurPowerInfo(&sPowerInfo);
+ sdRet = PowerUpDig(MCDRV_DPB_UP);
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ if(((dUpdateInfo & MCDRV_PDMADJ_UPDATE_FLAG) != (UINT32)0) || ((dUpdateInfo & MCDRV_PDMAGC_UPDATE_FLAG) != (UINT32)0))
+ {
+ bReg = (sPdmInfo.bAgcOn<<2)|sPdmInfo.bAgcAdjust;
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PDM_AGC))
+ {
+ AddStopPDM();
+ sdRet = McDevIf_ExecutePacket();
+ }
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_PDM_AGC, bReg);
+ }
+ }
+ }
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ if((dUpdateInfo & MCDRV_PDMMONO_UPDATE_FLAG) != (UINT32)0)
+ {
+ bReg = (UINT8)((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PDM_START) & (UINT8)~MCB_PDM_MN) | (sPdmInfo.bMono<<1));
+ if(bReg != McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_MIXER, MCI_PDM_START))
+ {
+ AddStopPDM();
+ sdRet = McDevIf_ExecutePacket();
+ if(MCDRV_SUCCESS == sdRet)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_PDM_START, (sPdmInfo.bMono<<1));
+ }
+ }
+ }
+ }
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ if(((dUpdateInfo & MCDRV_PDMCLK_UPDATE_FLAG) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_PDMEDGE_UPDATE_FLAG) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_PDMWAIT_UPDATE_FLAG) != (UINT32)0)
+ || ((dUpdateInfo & MCDRV_PDMSEL_UPDATE_FLAG) != (UINT32)0))
+ {
+ bReg = (sPdmInfo.bPdmWait<<5) | (sPdmInfo.bPdmEdge<<4) | (sPdmInfo.bPdmSel<<2) | sPdmInfo.bClk;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_MIXER | (UINT32)MCI_PDM_STWAIT, bReg);
+ }
+
+ /* unused path power down */
+ sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL;
+ sPowerUpdate.abAnalog[0] =
+ sPowerUpdate.abAnalog[1] =
+ sPowerUpdate.abAnalog[2] =
+ sPowerUpdate.abAnalog[3] =
+ sPowerUpdate.abAnalog[4] = 0;
+ sdRet = McPacket_AddPowerDown(&sPowerInfo, &sPowerUpdate);
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ sdRet = McPacket_AddStart();
+ }
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddPDM", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddGPMode
+ *
+ * Description:
+ * Add GP mode setup packet.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddGPMode
+(
+ void
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ MCDRV_INIT_INFO sInitInfo;
+ MCDRV_GP_MODE sGPMode;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddGPMode");
+#endif
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+ McResCtrl_GetGPMode(&sGPMode);
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_PA_MSK);
+
+ if(sInitInfo.bPad0Func == MCDRV_PAD_GPIO)
+ {
+ if(sGPMode.abGpDdr[0] == MCDRV_GPDDR_IN)
+ {
+ bReg &= (UINT8)~MCB_PA0_DDR;
+ }
+ else
+ {
+ bReg |= MCB_PA0_DDR;
+ }
+ }
+ if(sInitInfo.bPad1Func == MCDRV_PAD_GPIO)
+ {
+ if(sGPMode.abGpDdr[1] == MCDRV_GPDDR_IN)
+ {
+ bReg &= (UINT8)~MCB_PA1_DDR;
+ }
+ else
+ {
+ bReg |= MCB_PA1_DDR;
+ }
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PA_MSK, bReg);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddGPMode", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddGPMask
+ *
+ * Description:
+ * Add GP mask setup packet.
+ * Arguments:
+ * dPadNo PAD number
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddGPMask
+(
+ UINT32 dPadNo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ MCDRV_INIT_INFO sInitInfo;
+ MCDRV_GP_MODE sGPMode;
+ UINT8 abMask[GPIO_PAD_NUM];
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddGPMask");
+#endif
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+ McResCtrl_GetGPMode(&sGPMode);
+ McResCtrl_GetGPMask(abMask);
+
+ if(dPadNo == MCDRV_GP_PAD0)
+ {
+ if((sInitInfo.bPad0Func == MCDRV_PAD_GPIO) && (sGPMode.abGpDdr[0] == MCDRV_GPDDR_IN))
+ {
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_PA_MSK);
+ if(abMask[0] == MCDRV_GPMASK_OFF)
+ {
+ bReg &= (UINT8)~MCB_PA0_MSK;
+ }
+ else
+ {
+ bReg |= MCB_PA0_MSK;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PA_MSK, bReg);
+ }
+ }
+ else if(dPadNo == MCDRV_GP_PAD1)
+ {
+ if((sInitInfo.bPad1Func == MCDRV_PAD_GPIO) && (sGPMode.abGpDdr[1] == MCDRV_GPDDR_IN))
+ {
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_PA_MSK);
+ if(abMask[1] == MCDRV_GPMASK_OFF)
+ {
+ bReg &= (UINT8)~MCB_PA1_MSK;
+ }
+ else
+ {
+ bReg |= MCB_PA1_MSK;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PA_MSK, bReg);
+ }
+ }
+ else
+ {
+ sdRet = MCDRV_ERROR;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddGPMask", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddGPSet
+ *
+ * Description:
+ * Add GPIO output packet.
+ * Arguments:
+ * bGpio pin state setting
+ * dPadNo PAD number
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddGPSet
+(
+ UINT8 bGpio,
+ UINT32 dPadNo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddGPSet");
+#endif
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_BASE, MCI_PA_SCU_PA);
+
+ if(dPadNo == MCDRV_GP_PAD0)
+ {
+ if(bGpio == MCDRV_GP_LOW)
+ {
+ bReg &= (UINT8)~MCB_PA_SCU_PA0;
+ }
+ else if(bGpio == MCDRV_GP_HIGH)
+ {
+ bReg |= MCB_PA_SCU_PA0;
+ }
+ else
+ {
+ }
+ }
+ else if(dPadNo == MCDRV_GP_PAD1)
+ {
+ if(bGpio == MCDRV_GP_LOW)
+ {
+ bReg &= (UINT8)~MCB_PA_SCU_PA1;
+ }
+ else if(bGpio == MCDRV_GP_HIGH)
+ {
+ bReg |= MCB_PA_SCU_PA1;
+ }
+ else
+ {
+ }
+ }
+ else
+ {
+ sdRet = MCDRV_ERROR;
+ }
+
+ if(sdRet == MCDRV_SUCCESS)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_BASE | (UINT32)MCI_PA_SCU_PA, bReg);
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddGPSet", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddSysEq
+ *
+ * Description:
+ * Add GPIO output packet.
+ * Arguments:
+ * dUpdateInfo update information
+ * Return:
+ * MCDRV_SUCCESS
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddSysEq
+(
+ UINT32 dUpdateInfo
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bRegEQOn;
+ UINT8 bReg;
+ MCDRV_SYSEQ_INFO sSysEq;
+ UINT8 i;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddSysEq");
+#endif
+
+ bRegEQOn = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_SYSTEM_EQON);
+
+ McResCtrl_GetSysEq(&sSysEq);
+
+ if((dUpdateInfo & MCDRV_SYSEQ_PARAM_UPDATE_FLAG) != 0UL)
+ {
+ if((bRegEQOn & MCB_SYSTEM_EQON) != 0)
+ {/* EQ on */
+ /* EQ off */
+ bReg = bRegEQOn;
+ bReg &= (UINT8)~MCB_SYSTEM_EQON;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_SYSTEM_EQON, bReg);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_SYSEQ_FLAG_RESET, 0);
+ }
+ /* EQ coef */
+ for(i = 0; i < sizeof(sSysEq.abParam); i++)
+ {
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_FORCE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)(MCI_SYS_CEQ0_19_12+i), sSysEq.abParam[i]);
+ }
+ }
+
+ if((dUpdateInfo & MCDRV_SYSEQ_ONOFF_UPDATE_FLAG) != 0UL)
+ {
+ bRegEQOn &= (UINT8)~MCB_SYSTEM_EQON;
+ bRegEQOn |= sSysEq.bOnOff;
+ }
+
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_SYSTEM_EQON, bRegEQOn);
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddSysEq", &sdRet);
+#endif
+ return sdRet;
+}
+
+/****************************************************************************
+ * McPacket_AddClockSwitch
+ *
+ * Description:
+ * Add switch clock packet.
+ * Arguments:
+ * none
+ * Return:
+ * MCDRV_SUCCESS
+ *
+ ****************************************************************************/
+SINT32 McPacket_AddClockSwitch
+(
+ void
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT8 bReg;
+ MCDRV_CLKSW_INFO sClockInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McPacket_AddClockSwitch");
+#endif
+
+ bReg = McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_CODEC, MCI_DPADIF);
+
+ McResCtrl_GetClockSwitch(&sClockInfo);
+
+ if((bReg & (MCB_DP0_CLKI1 | MCB_DP0_CLKI0)) != (MCB_DP0_CLKI1 | MCB_DP0_CLKI0))
+ {
+ if(sClockInfo.bClkSrc == MCDRV_CLKSW_CLKI0)
+ {
+ if((bReg & MCB_DP0_CLKI1) == 0)
+ {/* CLKI1->CLKI0 */
+ bReg &= (UINT8)~MCB_DP0_CLKI0;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bReg);
+ if((bReg & MCB_CLKINPUT) != 0)
+ {
+ bReg |= MCB_CLKSRC;
+ }
+ else
+ {
+ bReg &= (UINT8)~MCB_CLKSRC;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bReg);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_CLKBUSY_RESET, 0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_CLKSRC_RESET, 0);
+ bReg |= MCB_DP0_CLKI1;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bReg);
+ }
+ }
+ else
+ {
+ if((bReg & MCB_DP0_CLKI0) == 0)
+ {/* CLKI0->CLKI1 */
+ bReg &= (UINT8)~MCB_DP0_CLKI1;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bReg);
+ if((bReg & MCB_CLKINPUT) == 0)
+ {
+ bReg |= MCB_CLKSRC;
+ }
+ else
+ {
+ bReg &= (UINT8)~MCB_CLKSRC;
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bReg);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_CLKBUSY_RESET, 0);
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_EVTWAIT | MCDRV_EVT_CLKSRC_SET, 0);
+ bReg |= MCB_DP0_CLKI0;
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bReg);
+ }
+ }
+ }
+ else
+ {
+ if(sClockInfo.bClkSrc == MCDRV_CLKSW_CLKI0)
+ {
+ if((bReg & MCB_CLKSRC) != 0)
+ {
+ bReg |= MCB_CLKINPUT;
+ }
+ else
+ {
+ bReg &= (UINT8)~MCB_CLKINPUT;
+ }
+ }
+ else
+ {
+ if((bReg & MCB_CLKSRC) == 0)
+ {
+ bReg |= MCB_CLKINPUT;
+ }
+ else
+ {
+ bReg &= (UINT8)~MCB_CLKINPUT;
+ }
+ }
+ McDevIf_AddPacket(MCDRV_PACKET_TYPE_WRITE | MCDRV_PACKET_REGTYPE_B_CODEC | (UINT32)MCI_DPADIF, bReg);
+ sdRet = McDevIf_ExecutePacket();
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McPacket_AddClockSwitch", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+
+/****************************************************************************
+ * PowerUpDig
+ *
+ * Description:
+ * Digital power up.
+ * Arguments:
+ * bDPBUp 1:DPB power up
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_RESOURCEOVER
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+static SINT32 PowerUpDig
+(
+ UINT8 bDPBUp
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ MCDRV_POWER_INFO sPowerInfo;
+ MCDRV_POWER_UPDATE sPowerUpdate;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("PowerUpDig");
+#endif
+
+ McResCtrl_GetCurPowerInfo(&sPowerInfo);
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP0;
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP1;
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DP2;
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_PLLRST0;
+ if(bDPBUp == MCDRV_DPB_UP)
+ {
+ sPowerInfo.dDigital &= ~MCDRV_POWINFO_DIGITAL_DPB;
+ }
+ sPowerUpdate.dDigital = MCDRV_POWUPDATE_DIGITAL_ALL;
+ sdRet = McPacket_AddPowerUp(&sPowerInfo, &sPowerUpdate);
+ if(MCDRV_SUCCESS == sdRet)
+ {
+ sdRet = McDevIf_ExecutePacket();
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("PowerUpDig", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * GetMaxWait
+ *
+ * Description:
+ * Get maximum wait time.
+ * Arguments:
+ * bRegChange analog power management register update information
+ * Return:
+ * wait time
+ *
+ ****************************************************************************/
+static UINT32 GetMaxWait
+(
+ UINT8 bRegChange
+)
+{
+ UINT32 dWaitTimeMax = 0;
+ MCDRV_INIT_INFO sInitInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetMaxWait");
+#endif
+
+ McResCtrl_GetInitInfo(&sInitInfo);
+
+ if((bRegChange & MCB_PWM_LI) != 0)
+ {
+ if(sInitInfo.sWaitTime.dLine1Cin > dWaitTimeMax)
+ {
+ dWaitTimeMax = sInitInfo.sWaitTime.dLine1Cin;
+ }
+ }
+ if(((bRegChange & MCB_PWM_MB1) != 0) || ((bRegChange & MCB_PWM_MC1) != 0))
+ {
+ if(sInitInfo.sWaitTime.dMic1Cin > dWaitTimeMax)
+ {
+ dWaitTimeMax = sInitInfo.sWaitTime.dMic1Cin;
+ }
+ }
+ if(((bRegChange & MCB_PWM_MB2) != 0) || ((bRegChange & MCB_PWM_MC2) != 0))
+ {
+ if(sInitInfo.sWaitTime.dMic2Cin > dWaitTimeMax)
+ {
+ dWaitTimeMax = sInitInfo.sWaitTime.dMic2Cin;
+ }
+ }
+ if(((bRegChange & MCB_PWM_MB3) != 0) || ((bRegChange & MCB_PWM_MC3) != 0))
+ {
+ if(sInitInfo.sWaitTime.dMic3Cin > dWaitTimeMax)
+ {
+ dWaitTimeMax = sInitInfo.sWaitTime.dMic3Cin;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)dWaitTimeMax;
+ McDebugLog_FuncOut("GetMaxWait", &sdRet);
+#endif
+
+ return dWaitTimeMax;
+}
+
diff --git a/sound/soc/codecs/mc1n2/mcpacking.h b/sound/soc/codecs/mc1n2/mcpacking.h new file mode 100644 index 0000000..2d814cf --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcpacking.h @@ -0,0 +1,91 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcpacking.h
+ *
+ * Description : MC Driver Packet packing header
+ *
+ * Version : 1.0.0 2010.08.24
+ *
+ ****************************************************************************/
+
+#ifndef _MCPACKING_H_
+#define _MCPACKING_H_
+
+#include "mctypedef.h"
+#include "mcdriver.h"
+
+/* volume update */
+typedef enum
+{
+ eMCDRV_VOLUPDATE_MUTE,
+ eMCDRV_VOLUPDATE_ALL
+} MCDRV_VOLUPDATE_MODE;
+
+/* power setting */
+#define MCDRV_POWINFO_DIGITAL_DP0 ((UINT32)0x0001)
+#define MCDRV_POWINFO_DIGITAL_DP1 ((UINT32)0x0002)
+#define MCDRV_POWINFO_DIGITAL_DP2 ((UINT32)0x0004)
+#define MCDRV_POWINFO_DIGITAL_DPB ((UINT32)0x0008)
+#define MCDRV_POWINFO_DIGITAL_DPDI0 ((UINT32)0x0010)
+#define MCDRV_POWINFO_DIGITAL_DPDI1 ((UINT32)0x0020)
+#define MCDRV_POWINFO_DIGITAL_DPDI2 ((UINT32)0x0040)
+#define MCDRV_POWINFO_DIGITAL_DPPDM ((UINT32)0x0080)
+#define MCDRV_POWINFO_DIGITAL_DPBDSP ((UINT32)0x0100)
+#define MCDRV_POWINFO_DIGITAL_DPADIF ((UINT32)0x0200)
+#define MCDRV_POWINFO_DIGITAL_PLLRST0 ((UINT32)0x0400)
+typedef struct
+{
+ UINT32 dDigital;
+ UINT8 abAnalog[5];
+} MCDRV_POWER_INFO;
+
+/* power update */
+typedef struct
+{
+ UINT32 dDigital;
+ UINT8 abAnalog[5];
+} MCDRV_POWER_UPDATE;
+
+#define MCDRV_POWUPDATE_DIGITAL_ALL (0xFFFFFFFFUL)
+#define MCDRV_POWUPDATE_ANALOG0_ALL (0x0F)
+#define MCDRV_POWUPDATE_ANALOG1_ALL (0xFF)
+#define MCDRV_POWUPDATE_ANALOG2_ALL (0x3F)
+#define MCDRV_POWUPDATE_ANALOG3_ALL (0x1F)
+#define MCDRV_POWUPDATE_ANALOG4_ALL (0xF0)
+#define MCDRV_POWUPDATE_ANALOG0_IN (0x0D)
+#define MCDRV_POWUPDATE_ANALOG1_IN (0xC0)
+#define MCDRV_POWUPDATE_ANALOG2_IN (0x00)
+#define MCDRV_POWUPDATE_ANALOG3_IN (0x1F)
+#define MCDRV_POWUPDATE_ANALOG4_IN (0xF0)
+#define MCDRV_POWUPDATE_ANALOG0_OUT (0x02)
+#define MCDRV_POWUPDATE_ANALOG1_OUT (0x3F)
+#define MCDRV_POWUPDATE_ANALOG2_OUT (0x3F)
+#define MCDRV_POWUPDATE_ANALOG3_OUT (0x00)
+#define MCDRV_POWUPDATE_ANALOG4_OUT (0x00)
+
+
+SINT32 McPacket_AddInit (const MCDRV_INIT_INFO* psInitInfo);
+SINT32 McPacket_AddVol (UINT32 dUpdate, MCDRV_VOLUPDATE_MODE eMode, UINT32* pdSVolDoneParam);
+SINT32 McPacket_AddPowerUp (const MCDRV_POWER_INFO* psPowerInfo, const MCDRV_POWER_UPDATE* psPowerUpdate);
+SINT32 McPacket_AddPowerDown (const MCDRV_POWER_INFO* psPowerInfo, const MCDRV_POWER_UPDATE* psPowerUpdate);
+SINT32 McPacket_AddPathSet (void);
+SINT32 McPacket_AddMixSet (void);
+SINT32 McPacket_AddStart (void);
+SINT32 McPacket_AddStop (void);
+SINT32 McPacket_AddDigitalIO (UINT32 dUpdateInfo);
+SINT32 McPacket_AddDAC (UINT32 dUpdateInfo);
+SINT32 McPacket_AddADC (UINT32 dUpdateInfo);
+SINT32 McPacket_AddSP (void);
+SINT32 McPacket_AddDNG (UINT32 dUpdateInfo);
+SINT32 McPacket_AddAE (UINT32 dUpdateInfo);
+SINT32 McPacket_AddPDM (UINT32 dUpdateInfo);
+SINT32 McPacket_AddGPMode (void);
+SINT32 McPacket_AddGPMask (UINT32 dPadNo);
+SINT32 McPacket_AddGPSet (UINT8 bGpio, UINT32 dPadNo);
+SINT32 McPacket_AddSysEq (UINT32 dUpdateInfo);
+SINT32 McPacket_AddClockSwitch (void);
+
+
+#endif /* _MCPACKING_H_ */
diff --git a/sound/soc/codecs/mc1n2/mcresctrl.c b/sound/soc/codecs/mc1n2/mcresctrl.c new file mode 100644 index 0000000..5519738 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcresctrl.c @@ -0,0 +1,9419 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcresctrl.c
+ *
+ * Description : MC Driver resource control
+ *
+ * Version : 1.0.0 2010.09.10
+ *
+ ****************************************************************************/
+
+
+#include "mcresctrl.h"
+#include "mcdevif.h"
+#include "mcservice.h"
+#include "mcdriver.h"
+#include "mcdefs.h"
+#include "mcdevprof.h"
+#include "mcmachdep.h"
+#if MCDRV_DEBUG_LEVEL
+#include "mcdebuglog.h"
+#endif
+
+
+
+/* wait time */
+#define MCDRV_INTERVAL_MUTE (1000)
+#define MCDRV_TIME_OUT_MUTE (1000)
+
+
+static MCDRV_STATE geState = eMCDRV_STATE_NOTINIT;
+
+static MCDRV_GLOBAL_INFO gsGlobalInfo;
+static MCDRV_PACKET gasPacket[MCDRV_MAX_PACKETS+1];
+
+/* register next address */
+static const UINT16 gawNextAddressA[MCDRV_A_REG_NUM] =
+{
+ 0, 1, 2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 8, 0xFFFF, 0xFFFF, 0xFFFF, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+};
+
+static const UINT16 gawNextAddressB_BASE[MCDRV_B_BASE_REG_NUM] =
+{
+ 1, 2, 3, 4, 5, 6, 7, 0xFFFF, 9, 10, 11, 12, 13, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 26, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 31, 0xFFFF
+};
+
+static const UINT16 gawNextAddressB_MIXER[MCDRV_B_MIXER_REG_NUM] =
+{
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+};
+
+static const UINT16 gawNextAddressB_AE[MCDRV_B_AE_REG_NUM] =
+{
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 0xFFFF
+};
+
+static const UINT16 gawNextAddressB_CDSP[MCDRV_B_CDSP_REG_NUM] =
+{
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 0xFFFF
+};
+
+static const UINT16 gawNextAddressB_CODEC[MCDRV_B_CODEC_REG_NUM] =
+{
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0xFFFF
+};
+
+static const UINT16 gawNextAddressB_Ana[MCDRV_B_ANA_REG_NUM] =
+{
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 0xFFFF, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0xFFFF
+};
+
+/* register access available */
+static const MCDRV_REG_ACCSESS gawRegAccessAvailableA[256] =
+{
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_ONLY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_WRITE_ONLY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+};
+static const MCDRV_REG_ACCSESS gawRegAccessAvailableB_BASE[256] =
+{
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+};
+static const MCDRV_REG_ACCSESS gawRegAccessAvailableB_ANA[256] =
+{
+ eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_ONLY,
+ eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_ONLY, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_ONLY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+};
+static const MCDRV_REG_ACCSESS gawRegAccessAvailableB_CODEC[256] =
+{
+ eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_ONLY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_READ_WRITE,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+};
+static const MCDRV_REG_ACCSESS gawRegAccessAvailableB_MIX[256] =
+{
+ eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_READ_ONLY,
+ eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_READ_ONLY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE,
+ eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_READ_WRITE, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+};
+static const MCDRV_REG_ACCSESS gawRegAccessAvailableB_AE[256] =
+{
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY,
+ eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_WRITE_ONLY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+ eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY, eMCDRV_ACCESS_DENY,
+};
+
+
+static void SetRegDefault(void);
+static void InitPathInfo(void);
+static void InitVolInfo(void);
+static void InitDioInfo(void);
+static void InitDacInfo(void);
+static void InitAdcInfo(void);
+static void InitSpInfo(void);
+static void InitDngInfo(void);
+static void InitAeInfo(void);
+static void InitPdmInfo(void);
+static void InitGpMode(void);
+static void InitGpMask(void);
+static void InitSysEq(void);
+static void InitClockSwitch(void);
+
+static void ValidateADC(void);
+static void ValidateDAC(void);
+static void ValidateAE(void);
+static void ValidateMix(void);
+
+static void SetHPSourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetSPSourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetRCVSourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetLO1SourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetLO2SourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetPMSourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetDIT0SourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetDIT1SourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetDIT2SourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetDACSourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetAESourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetCDSPSourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetADC0SourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetADC1SourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetMixSourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+static void SetBiasSourceOnOff(const MCDRV_PATH_INFO* psPathInfo);
+
+static void SetDIOCommon(const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort);
+static void SetDIODIR(const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort);
+static void SetDIODIT(const MCDRV_DIO_INFO* psDioInfo, UINT8 bPort);
+
+static SINT16 GetDigitalVolReg(SINT16 swVol);
+static SINT16 GetADVolReg(SINT16 swVol);
+static SINT16 GetLIVolReg(SINT16 swVol);
+static SINT16 GetMcVolReg(SINT16 swVol);
+static SINT16 GetMcGainReg(SINT16 swVol);
+static SINT16 GetHpVolReg(SINT16 swVol);
+static SINT16 GetHpGainReg(SINT16 swVol);
+static SINT16 GetSpVolReg(SINT16 swVol);
+static SINT16 GetRcVolReg(SINT16 swVol);
+static SINT16 GetLoVolReg(SINT16 swVol);
+
+static SINT32 WaitBitSet(UINT8 bSlaveAddr, UINT16 wRegAddr, UINT8 bBit, UINT32 dCycleTime, UINT32 dTimeOut);
+static SINT32 WaitBitRelease(UINT8 bSlaveAddr, UINT16 wRegAddr, UINT8 bBit, UINT32 dCycleTime, UINT32 dTimeOut);
+
+/****************************************************************************
+ * McResCtrl_SetHwId
+ *
+ * Description:
+ * Set hardware ID.
+ * Arguments:
+ * bHwId hardware ID
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_INIT
+ *
+ ****************************************************************************/
+SINT32 McResCtrl_SetHwId
+(
+ UINT8 bHwId
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetHwId");
+#endif
+
+ gsGlobalInfo.bHwId = bHwId;
+
+ switch (bHwId)
+ {
+ case MCDRV_HWID_AA:
+ McDevProf_SetDevId(eMCDRV_DEV_ID_1N2);
+ break;
+ case MCDRV_HWID_AB:
+ McDevProf_SetDevId(eMCDRV_DEV_ID_1N2);
+ break;
+ default:
+ sdRet = MCDRV_ERROR_INIT;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetHwId", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * McResCtrl_GetHwId
+ *
+ * Description:
+ * Get hardware ID.
+ * Arguments:
+ * none
+ * Return:
+ * hardware ID
+ *
+ ****************************************************************************/
+UINT8 McResCtrl_GetHwId
+(
+ void
+)
+{
+ SINT32 sdRet = gsGlobalInfo.bHwId;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetHwId");
+#endif
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetHwId", &sdRet);
+#endif
+
+ return (UINT8)sdRet;
+}
+
+/****************************************************************************
+ * McResCtrl_Init
+ *
+ * Description:
+ * initialize the resource controller.
+ * Arguments:
+ * psInitInfo pointer to the initialize information struct
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_Init
+(
+ const MCDRV_INIT_INFO* psInitInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_Init");
+#endif
+
+ gsGlobalInfo.ePacketBufAlloc = eMCDRV_PACKETBUF_FREE;
+ SetRegDefault();
+
+ gsGlobalInfo.sInitInfo.bCkSel = psInitInfo->bCkSel;
+ gsGlobalInfo.sInitInfo.bDivR0 = psInitInfo->bDivR0;
+ gsGlobalInfo.sInitInfo.bDivF0 = psInitInfo->bDivF0;
+ gsGlobalInfo.sInitInfo.bDivR1 = psInitInfo->bDivR1;
+ gsGlobalInfo.sInitInfo.bDivF1 = psInitInfo->bDivF1;
+ if(McDevProf_IsValid(eMCDRV_FUNC_RANGE) == 1)
+ {
+ gsGlobalInfo.sInitInfo.bRange0 = psInitInfo->bRange0;
+ gsGlobalInfo.sInitInfo.bRange1 = psInitInfo->bRange1;
+ }
+ else
+ {
+ gsGlobalInfo.sInitInfo.bRange0 = 0;
+ gsGlobalInfo.sInitInfo.bRange1 = 0;
+ }
+ if(McDevProf_IsValid(eMCDRV_FUNC_BYPASS) == 1)
+ {
+ gsGlobalInfo.sInitInfo.bBypass = psInitInfo->bBypass;
+ }
+ else
+ {
+ gsGlobalInfo.sInitInfo.bBypass = 0;
+ }
+ gsGlobalInfo.sInitInfo.bDioSdo0Hiz = psInitInfo->bDioSdo0Hiz;
+ gsGlobalInfo.sInitInfo.bDioSdo1Hiz = psInitInfo->bDioSdo1Hiz;
+ gsGlobalInfo.sInitInfo.bDioSdo2Hiz = psInitInfo->bDioSdo2Hiz;
+ gsGlobalInfo.sInitInfo.bDioClk0Hiz = psInitInfo->bDioClk0Hiz;
+ gsGlobalInfo.sInitInfo.bDioClk1Hiz = psInitInfo->bDioClk1Hiz;
+ gsGlobalInfo.sInitInfo.bDioClk2Hiz = psInitInfo->bDioClk2Hiz;
+ gsGlobalInfo.sInitInfo.bPcmHiz = psInitInfo->bPcmHiz;
+ gsGlobalInfo.sInitInfo.bLineIn1Dif = psInitInfo->bLineIn1Dif;
+ if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1)
+ {
+ gsGlobalInfo.sInitInfo.bLineIn2Dif = psInitInfo->bLineIn2Dif;
+ }
+ else
+ {
+ gsGlobalInfo.sInitInfo.bLineIn2Dif = MCDRV_LINE_STEREO;
+ }
+ gsGlobalInfo.sInitInfo.bLineOut1Dif = psInitInfo->bLineOut1Dif;
+ gsGlobalInfo.sInitInfo.bLineOut2Dif = psInitInfo->bLineOut2Dif;
+ gsGlobalInfo.sInitInfo.bSpmn = psInitInfo->bSpmn;
+ gsGlobalInfo.sInitInfo.bMic1Sng = psInitInfo->bMic1Sng;
+ gsGlobalInfo.sInitInfo.bMic2Sng = psInitInfo->bMic2Sng;
+ gsGlobalInfo.sInitInfo.bMic3Sng = psInitInfo->bMic3Sng;
+ gsGlobalInfo.sInitInfo.bPowerMode = psInitInfo->bPowerMode;
+ gsGlobalInfo.sInitInfo.bSpHiz = psInitInfo->bSpHiz;
+ gsGlobalInfo.sInitInfo.bLdo = psInitInfo->bLdo;
+ gsGlobalInfo.sInitInfo.bPad0Func = psInitInfo->bPad0Func;
+ gsGlobalInfo.sInitInfo.bPad1Func = psInitInfo->bPad1Func;
+ if(McDevProf_IsValid(eMCDRV_FUNC_PAD2) == 1)
+ {
+ gsGlobalInfo.sInitInfo.bPad2Func = psInitInfo->bPad2Func;
+ }
+ else
+ {
+ gsGlobalInfo.sInitInfo.bPad2Func = MCDRV_PAD_GPIO;
+ }
+ gsGlobalInfo.sInitInfo.bAvddLev = psInitInfo->bAvddLev;
+ gsGlobalInfo.sInitInfo.bVrefLev = psInitInfo->bVrefLev;
+ gsGlobalInfo.sInitInfo.bDclGain = psInitInfo->bDclGain;
+ gsGlobalInfo.sInitInfo.bDclLimit = psInitInfo->bDclLimit;
+ gsGlobalInfo.sInitInfo.bCpMod = psInitInfo->bCpMod;
+ gsGlobalInfo.sInitInfo.bReserved1 = psInitInfo->bReserved1;
+ gsGlobalInfo.sInitInfo.bReserved2 = psInitInfo->bReserved2;
+ gsGlobalInfo.sInitInfo.bReserved3 = psInitInfo->bReserved3;
+ gsGlobalInfo.sInitInfo.bReserved4 = psInitInfo->bReserved4;
+ gsGlobalInfo.sInitInfo.bReserved5 = psInitInfo->bReserved5;
+ gsGlobalInfo.sInitInfo.sWaitTime = psInitInfo->sWaitTime;
+
+ InitPathInfo();
+ InitVolInfo();
+ InitDioInfo();
+ InitDacInfo();
+ InitAdcInfo();
+ InitSpInfo();
+ InitDngInfo();
+ InitAeInfo();
+ InitPdmInfo();
+ InitGpMode();
+ InitGpMask();
+ InitSysEq();
+ InitClockSwitch();
+
+ McResCtrl_InitRegUpdate();
+
+ gsGlobalInfo.eAPMode = eMCDRV_APM_OFF;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_Init", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetRegDefault
+ *
+ * Description:
+ * Initialize the virtual registers.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetRegDefault
+(
+ void
+)
+{
+ UINT16 i;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetRegDefault");
+#endif
+
+ for(i = 0; i < MCDRV_A_REG_NUM; i++)
+ {
+ gsGlobalInfo.abRegValA[i] = 0;
+ }
+ gsGlobalInfo.abRegValA[MCI_RST] = MCI_RST_DEF;
+ gsGlobalInfo.abRegValA[MCI_HW_ID] = MCI_HW_ID_DEF;
+
+ for(i = 0; i < MCDRV_B_BASE_REG_NUM; i++)
+ {
+ gsGlobalInfo.abRegValB_BASE[i] = 0;
+ }
+ gsGlobalInfo.abRegValB_BASE[MCI_RSTB] = MCI_RSTB_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_PWM_DIGITAL] = MCI_PWM_DIGITAL_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_PWM_DIGITAL_1] = MCI_PWM_DIGITAL_1_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_PWM_DIGITAL_CDSP] = MCI_PWM_DIGITAL_CDSP_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_PWM_DIGITAL_BDSP] = MCI_PWM_DIGITAL_BDSP_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_SD_MSK] = MCI_SD_MSK_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_SD_MSK_1] = MCI_SD_MSK_1_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_BCLK_MSK] = MCI_BCLK_MSK_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_BCLK_MSK_1] = MCI_BCLK_MSK_1_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_BCKP] = MCI_BCKP_DEF;
+ gsGlobalInfo.abRegValB_BASE[MCI_PA_MSK] = MCI_PA_MSK_DEF;
+
+ for(i = 0; i < MCDRV_B_MIXER_REG_NUM; i++)
+ {
+ gsGlobalInfo.abRegValB_MIXER[i] = 0;
+ }
+ gsGlobalInfo.abRegValB_MIXER[MCI_DIT_ININTP] = MCI_DIT_ININTP_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_DIR_INTP] = MCI_DIR_INTP_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_ADC_INTP] = MCI_ADC_INTP_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_AINTP] = MCI_AINTP_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_IINTP] = MCI_IINTP_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_DAC_INTP] = MCI_DAC_INTP_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_DIR0_CH] = MCI_DIR0_CH_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_DIT0_SLOT] = MCI_DIT0_SLOT_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PCM_RX0] = MCI_PCM_RX0_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PCM_TX0] = MCI_PCM_TX0_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PCM_SLOT_TX0] = MCI_PCM_SLOT_TX0_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_DIR1_CH] = MCI_DIR1_CH_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_DIT1_SLOT] = MCI_DIT1_SLOT_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PCM_RX1] = MCI_PCM_RX1_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PCM_TX1] = MCI_PCM_TX1_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PCM_SLOT_TX1] = MCI_PCM_SLOT_TX1_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_DIR2_CH] = MCI_DIR2_CH_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_DIT2_SLOT] = MCI_DIT2_SLOT_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PCM_RX2] = MCI_PCM_RX2_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PCM_TX2] = MCI_PCM_TX2_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PCM_SLOT_TX2] = MCI_PCM_SLOT_TX2_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_CDI_CH] = MCI_CDI_CH_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_CDO_SLOT] = MCI_CDO_SLOT_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PDM_AGC] = MCI_PDM_AGC_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_PDM_STWAIT] = MCI_PDM_STWAIT_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_CHP_H] = MCI_CHP_H_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_CHP_M] = MCI_CHP_M_DEF;
+ gsGlobalInfo.abRegValB_MIXER[MCI_CHP_L] = MCI_CHP_L_DEF;
+
+ for(i = 0; i < MCDRV_B_AE_REG_NUM; i++)
+ {
+ gsGlobalInfo.abRegValB_AE[i] = 0;
+ }
+ gsGlobalInfo.abRegValB_AE[MCI_BAND0_CEQ0] = MCI_BAND0_CEQ0_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_BAND1_CEQ0] = MCI_BAND1_CEQ0_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_BAND2_CEQ0] = MCI_BAND2_CEQ0_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_BAND3H_CEQ0] = MCI_BAND3H_CEQ0_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_BAND4H_CEQ0] = MCI_BAND4H_CEQ0_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_BAND5_CEQ0] = MCI_BAND5_CEQ0_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_BAND6H_CEQ0] = MCI_BAND6H_CEQ0_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_BAND7H_CEQ0] = MCI_BAND7H_CEQ0_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_PDM_CHP0_H] = MCI_PDM_CHP0_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_PDM_CHP0_M] = MCI_PDM_CHP0_M_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_PDM_CHP0_L] = MCI_PDM_CHP0_L_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_PDM_CHP1_H] = MCI_PDM_CHP1_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_PDM_CHP1_M] = MCI_PDM_CHP1_M_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_PDM_CHP1_L] = MCI_PDM_CHP1_L_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_PDM_CHP3_H] = MCI_PDM_CHP3_H_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_PDM_CHP3_M] = MCI_PDM_CHP3_M_DEF;
+ gsGlobalInfo.abRegValB_AE[MCI_PDM_CHP3_L] = MCI_PDM_CHP3_L_DEF;
+
+ for(i = 0; i < MCDRV_B_CDSP_REG_NUM; i++)
+ {
+ gsGlobalInfo.abRegValB_CDSP[i] = 0;
+ }
+ gsGlobalInfo.abRegValB_CDSP[MCI_JOEMP] = MCI_JOEMP_DEF;
+ gsGlobalInfo.abRegValB_CDSP[MCI_JEEMP] = MCI_JEEMP_DEF;
+ gsGlobalInfo.abRegValB_CDSP[MCI_CDSP_SRST] = MCI_CDSP_SRST_DEF;
+
+ for(i = 0; i < MCDRV_B_ANA_REG_NUM; i++)
+ {
+ gsGlobalInfo.abRegValB_ANA[i] = 0;
+ }
+ gsGlobalInfo.abRegValB_ANA[MCI_ANA_RST] = MCI_ANA_RST_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_0] = MCI_PWM_ANALOG_0_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_1] = MCI_PWM_ANALOG_1_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_2] = MCI_PWM_ANALOG_2_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_3] = MCI_PWM_ANALOG_3_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_4] = MCI_PWM_ANALOG_4_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_HPVOL_L] = MCI_HPVOL_L_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_SPVOL_L] = MCI_SPVOL_L_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_RCVOL] = MCI_RCVOL_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_LEV] = MCI_LEV_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_DNGATRT_HP] = MCI_DNGATRT_HP_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_DNGTARGET_HP] = MCI_DNGTARGET_HP_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_DNGON_HP] = MCI_DNGON_HP_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_DNGATRT_SP] = MCI_DNGATRT_SP_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_DNGTARGET_SP] = MCI_DNGTARGET_SP_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_DNGON_SP] = MCI_DNGON_SP_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_DNGATRT_RC] = MCI_DNGATRT_RC_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_DNGTARGET_RC] = MCI_DNGTARGET_RC_DEF;
+ gsGlobalInfo.abRegValB_ANA[MCI_DNGON_RC] = MCI_DNGON_RC_DEF;
+
+ for(i = 0; i < MCDRV_B_CODEC_REG_NUM; i++)
+ {
+ gsGlobalInfo.abRegValB_CODEC[i] = 0;
+ }
+ gsGlobalInfo.abRegValB_CODEC[MCI_DPADIF] = MCI_DPADIF_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_PLL_RST] = MCI_PLL_RST_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_DIVR0] = MCI_DIVR0_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_DIVF0] = MCI_DIVF0_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_DIVR1] = MCI_DIVR1_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_DIVF1] = MCI_DIVF1_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_AD_AGC] = MCI_AD_AGC_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_DAC_CONFIG] = MCI_DAC_CONFIG_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ0_19_12]= MCI_SYS_CEQ0_19_12_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ0_11_4] = MCI_SYS_CEQ0_11_4_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ0_3_0] = MCI_SYS_CEQ0_3_0_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ1_19_12]= MCI_SYS_CEQ1_19_12_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ1_11_4] = MCI_SYS_CEQ1_11_4_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ1_3_0] = MCI_SYS_CEQ1_3_0_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ2_19_12]= MCI_SYS_CEQ2_19_12_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ2_11_4] = MCI_SYS_CEQ2_11_4_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ2_3_0] = MCI_SYS_CEQ2_3_0_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ3_19_12]= MCI_SYS_CEQ3_19_12_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ3_11_4] = MCI_SYS_CEQ3_11_4_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ3_3_0] = MCI_SYS_CEQ3_3_0_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ4_19_12]= MCI_SYS_CEQ4_19_12_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ4_11_4] = MCI_SYS_CEQ4_11_4_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYS_CEQ4_3_0] = MCI_SYS_CEQ4_3_0_DEF;
+ gsGlobalInfo.abRegValB_CODEC[MCI_SYSTEM_EQON] = MCI_SYSTEM_EQON_DEF;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetRegDefault", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitPathInfo
+ *
+ * Description:
+ * Initialize path info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitPathInfo
+(
+ void
+)
+{
+ UINT8 bCh, bBlockIdx;
+ UINT8 abOnOff[SOURCE_BLOCK_NUM];
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitPathInfo");
+#endif
+
+ abOnOff[0] = (MCDRV_SRC0_MIC1_OFF|MCDRV_SRC0_MIC2_OFF|MCDRV_SRC0_MIC3_OFF);
+ abOnOff[1] = (MCDRV_SRC1_LINE1_L_OFF|MCDRV_SRC1_LINE1_R_OFF|MCDRV_SRC1_LINE1_M_OFF);
+ abOnOff[2] = (MCDRV_SRC2_LINE2_L_OFF|MCDRV_SRC2_LINE2_R_OFF|MCDRV_SRC2_LINE2_M_OFF);
+ abOnOff[3] = (MCDRV_SRC3_DIR0_OFF|MCDRV_SRC3_DIR1_OFF|MCDRV_SRC3_DIR2_OFF|MCDRV_SRC3_DIR2_DIRECT_OFF);
+ abOnOff[4] = (MCDRV_SRC4_DTMF_OFF|MCDRV_SRC4_PDM_OFF|MCDRV_SRC4_ADC0_OFF|MCDRV_SRC4_ADC1_OFF);
+ abOnOff[5] = (MCDRV_SRC5_DAC_L_OFF|MCDRV_SRC5_DAC_R_OFF|MCDRV_SRC5_DAC_M_OFF);
+ abOnOff[6] = (MCDRV_SRC6_MIX_OFF|MCDRV_SRC6_AE_OFF|MCDRV_SRC6_CDSP_OFF|MCDRV_SRC6_CDSP_DIRECT_OFF);
+
+ for(bCh = 0; bCh < HP_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < SP_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < RC_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < LOUT1_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < LOUT2_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < PEAK_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asPeak[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < DIT0_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < DIT1_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < DIT2_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < AE_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asAe[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < CDSP_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asCdsp[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < ADC0_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < ADC1_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asAdc1[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < MIX_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asMix[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ for(bCh = 0; bCh < BIAS_PATH_CHANNELS; bCh++)
+ {
+ for(bBlockIdx = 0; bBlockIdx < SOURCE_BLOCK_NUM; bBlockIdx++)
+ {
+ gsGlobalInfo.sPathInfo.asBias[bCh].abSrcOnOff[bBlockIdx] = abOnOff[bBlockIdx];
+ }
+ }
+ gsGlobalInfo.sPathInfoVirtual = gsGlobalInfo.sPathInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitPathInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitVolInfo
+ *
+ * Description:
+ * Initialize volume info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitVolInfo
+(
+ void
+)
+{
+ UINT8 bCh;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitVolInfo");
+#endif
+
+ for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Ad0[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Ad1[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < AENG6_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Aeng6[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Pdm[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DTMF_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dtmfb[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir0[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir1[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir2[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Ad0Att[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Ad1Att[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir0Att[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir1Att[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir2Att[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_SideTone[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DTFM_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_DtmfAtt[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_DacMaster[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_DacVoice[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_DacAtt[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dit0[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dit1[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dit2[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Ad0[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Ad1[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < LIN1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Lin1[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < LIN2_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Lin2[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic1[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic2[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic3[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < HP_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Hp[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < SP_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Sp[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < RC_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Rc[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < LOUT1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Lout1[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < LOUT2_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Lout2[bCh] = MCDRV_LOGICAL_VOL_MUTE;
+ }
+ for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic1Gain[bCh] = MCDRV_LOGICAL_MICGAIN_DEF;
+ }
+ for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic2Gain[bCh] = MCDRV_LOGICAL_MICGAIN_DEF;
+ }
+ for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic3Gain[bCh] = MCDRV_LOGICAL_MICGAIN_DEF;
+ }
+ for(bCh = 0; bCh < HPGAIN_VOL_CHANNELS; bCh++)
+ {
+ gsGlobalInfo.sVolInfo.aswA_HpGain[bCh] = MCDRV_LOGICAL_HPGAIN_DEF;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitVolInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitDioInfo
+ *
+ * Description:
+ * Initialize Digital I/O info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitDioInfo
+(
+ void
+)
+{
+ UINT8 bDioIdx, bDioCh;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitDioInfo");
+#endif
+
+ for(bDioIdx = 0; bDioIdx < 3; bDioIdx++)
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bMasterSlave = MCDRV_DIO_SLAVE;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bAutoFs = MCDRV_AUTOFS_ON;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bFs = MCDRV_FS_48000;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bBckFs = MCDRV_BCKFS_64;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bInterface = MCDRV_DIO_DA;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bBckInvert = MCDRV_BCLK_NORMAL;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bPcmHizTim = MCDRV_PCMHIZTIM_FALLING;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bPcmClkDown = MCDRV_PCM_CLKDOWN_OFF;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bPcmFrame = MCDRV_PCM_SHORTFRAME;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDioCommon.bPcmHighPeriod = 0;
+
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDir.wSrcRate = 0x0000;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDir.sDaFormat.bBitSel = MCDRV_BITSEL_16;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDir.sDaFormat.bMode = MCDRV_DAMODE_HEADALIGN;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDir.sPcmFormat.bMono = MCDRV_PCM_MONO;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDir.sPcmFormat.bOrder = MCDRV_PCM_MSB_FIRST;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDir.sPcmFormat.bLaw = MCDRV_PCM_LINEAR;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDir.sPcmFormat.bBitSel = MCDRV_PCM_BITSEL_8;
+ for(bDioCh = 0; bDioCh < DIO_CHANNELS; bDioCh++)
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDir.abSlot[bDioCh] = bDioCh;
+ }
+
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDit.wSrcRate = 0x0000;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDit.sDaFormat.bBitSel = MCDRV_BITSEL_16;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDit.sDaFormat.bMode = MCDRV_DAMODE_HEADALIGN;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDit.sPcmFormat.bMono = MCDRV_PCM_MONO;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDit.sPcmFormat.bOrder = MCDRV_PCM_MSB_FIRST;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDit.sPcmFormat.bLaw = MCDRV_PCM_LINEAR;
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDit.sPcmFormat.bBitSel = MCDRV_PCM_BITSEL_8;
+ for(bDioCh = 0; bDioCh < DIO_CHANNELS; bDioCh++)
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bDioIdx].sDit.abSlot[bDioCh] = bDioCh;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitDioInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitDacInfo
+ *
+ * Description:
+ * Initialize Dac info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitDacInfo
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitDacInfo");
+#endif
+
+ gsGlobalInfo.sDacInfo.bMasterSwap = MCDRV_DSWAP_OFF;
+ gsGlobalInfo.sDacInfo.bVoiceSwap = MCDRV_DSWAP_OFF;
+ gsGlobalInfo.sDacInfo.bDcCut = MCDRV_DCCUT_ON;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitDacInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitAdcInfo
+ *
+ * Description:
+ * Initialize Adc info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitAdcInfo
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitAdcInfo");
+#endif
+
+ gsGlobalInfo.sAdcInfo.bAgcAdjust = MCDRV_AGCADJ_0;
+ gsGlobalInfo.sAdcInfo.bAgcOn = MCDRV_AGC_OFF;
+ gsGlobalInfo.sAdcInfo.bMono = MCDRV_ADC_STEREO;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitAdcInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitSpInfo
+ *
+ * Description:
+ * Initialize SP info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitSpInfo
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitSpInfo");
+#endif
+
+ gsGlobalInfo.sSpInfo.bSwap = MCDRV_SPSWAP_OFF;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitSpInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitDngInfo
+ *
+ * Description:
+ * Initialize DNG info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitDngInfo
+(
+ void
+)
+{
+ UINT8 bItem;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitDngInfo");
+#endif
+
+ for(bItem = MCDRV_DNG_ITEM_HP; bItem <= MCDRV_DNG_ITEM_RC; bItem++)
+ {
+ gsGlobalInfo.sDngInfo.abOnOff[bItem] = MCDRV_DNG_OFF;
+ gsGlobalInfo.sDngInfo.abThreshold[bItem] = MCDRV_DNG_THRES_60;
+ gsGlobalInfo.sDngInfo.abHold[bItem] = MCDRV_DNG_HOLD_500;
+ gsGlobalInfo.sDngInfo.abAttack[bItem] = MCDRV_DNG_ATTACK_800;
+ gsGlobalInfo.sDngInfo.abRelease[bItem] = MCDRV_DNG_RELEASE_940;
+ gsGlobalInfo.sDngInfo.abTarget[bItem] = MCDRV_DNG_TARGET_MUTE;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitDngInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitAeInfo
+ *
+ * Description:
+ * Initialize Audio Engine info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitAeInfo
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitAeInfo");
+#endif
+
+ gsGlobalInfo.sAeInfo.bOnOff = 0;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitAeInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitPdmInfo
+ *
+ * Description:
+ * Initialize Pdm info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitPdmInfo
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitPdmInfo");
+#endif
+
+ gsGlobalInfo.sPdmInfo.bClk = MCDRV_PDM_CLK_64;
+ gsGlobalInfo.sPdmInfo.bAgcAdjust = MCDRV_AGCADJ_0;
+ gsGlobalInfo.sPdmInfo.bAgcOn = MCDRV_AGC_OFF;
+ gsGlobalInfo.sPdmInfo.bPdmEdge = MCDRV_PDMEDGE_LH;
+ gsGlobalInfo.sPdmInfo.bPdmWait = MCDRV_PDMWAIT_10;
+ gsGlobalInfo.sPdmInfo.bPdmSel = MCDRV_PDMSEL_L1R2;
+ gsGlobalInfo.sPdmInfo.bMono = MCDRV_PDM_STEREO;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitPdmInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitGpMode
+ *
+ * Description:
+ * Initialize Gp mode.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitGpMode
+(
+ void
+)
+{
+ UINT8 bGpioIdx;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitGpMode");
+#endif
+
+ for(bGpioIdx = 0; bGpioIdx < GPIO_PAD_NUM; bGpioIdx++)
+ {
+ gsGlobalInfo.sGpMode.abGpDdr[bGpioIdx] = MCDRV_GPDDR_IN;
+ gsGlobalInfo.sGpMode.abGpMode[bGpioIdx] = MCDRV_GPMODE_RISING;
+ gsGlobalInfo.sGpMode.abGpHost[bGpioIdx] = MCDRV_GPHOST_SCU;
+ gsGlobalInfo.sGpMode.abGpInvert[bGpioIdx] = MCDRV_GPINV_NORMAL;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitGpMode", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitGpMask
+ *
+ * Description:
+ * Initialize Gp mask.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitGpMask
+(
+ void
+)
+{
+ UINT8 bGpioIdx;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitGpMask");
+#endif
+
+ for(bGpioIdx = 0; bGpioIdx < GPIO_PAD_NUM; bGpioIdx++)
+ {
+ gsGlobalInfo.abGpMask[bGpioIdx] = MCDRV_GPMASK_ON;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitGpMask", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitSysEq
+ *
+ * Description:
+ * Initialize System EQ.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitSysEq
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitSysEq");
+#endif
+
+ gsGlobalInfo.sSysEq.bOnOff = MCDRV_SYSEQ_ON;
+ gsGlobalInfo.sSysEq.abParam[0] = 0x10;
+ gsGlobalInfo.sSysEq.abParam[1] = 0xC4;
+ gsGlobalInfo.sSysEq.abParam[2] = 0x50;
+ gsGlobalInfo.sSysEq.abParam[3] = 0x12;
+ gsGlobalInfo.sSysEq.abParam[4] = 0xC4;
+ gsGlobalInfo.sSysEq.abParam[5] = 0x40;
+ gsGlobalInfo.sSysEq.abParam[6] = 0x02;
+ gsGlobalInfo.sSysEq.abParam[7] = 0xA9;
+ gsGlobalInfo.sSysEq.abParam[8] = 0x60;
+ gsGlobalInfo.sSysEq.abParam[9] = 0xED;
+ gsGlobalInfo.sSysEq.abParam[10] = 0x3B;
+ gsGlobalInfo.sSysEq.abParam[11] = 0xC0;
+ gsGlobalInfo.sSysEq.abParam[12] = 0xFC;
+ gsGlobalInfo.sSysEq.abParam[13] = 0x92;
+ gsGlobalInfo.sSysEq.abParam[14] = 0x40;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitSysEq", 0);
+#endif
+}
+
+/****************************************************************************
+ * InitClockSwitch
+ *
+ * Description:
+ * Initialize switch clock info.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void InitClockSwitch
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("InitClockSwitch");
+#endif
+
+ gsGlobalInfo.sClockSwitch.bClkSrc = MCDRV_CLKSW_CLKI0;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("InitClockSwitch", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_UpdateState
+ *
+ * Description:
+ * update state.
+ * Arguments:
+ * eState state
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_UpdateState
+(
+ MCDRV_STATE eState
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_UpdateState");
+#endif
+
+ geState = eState;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_UpdateState", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetState
+ *
+ * Description:
+ * Get state.
+ * Arguments:
+ * none
+ * Return:
+ * current state
+ *
+ ****************************************************************************/
+MCDRV_STATE McResCtrl_GetState
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet = geState;
+ McDebugLog_FuncIn("McResCtrl_GetState");
+#endif
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetState", &sdRet);
+#endif
+
+ return geState;
+}
+
+/****************************************************************************
+ * McResCtrl_GetRegVal
+ *
+ * Description:
+ * Get register value.
+ * Arguments:
+ * wRegType register type
+ * wRegAddr address
+ * Return:
+ * register value
+ *
+ ****************************************************************************/
+UINT8 McResCtrl_GetRegVal
+(
+ UINT16 wRegType,
+ UINT16 wRegAddr
+)
+{
+ UINT8 bVal = 0;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McResCtrl_GetRegVal");
+#endif
+
+ switch(wRegType)
+ {
+ case MCDRV_PACKET_REGTYPE_A:
+ bVal = gsGlobalInfo.abRegValA[wRegAddr];
+ break;
+ case MCDRV_PACKET_REGTYPE_B_BASE:
+ bVal = gsGlobalInfo.abRegValB_BASE[wRegAddr];
+ break;
+ case MCDRV_PACKET_REGTYPE_B_MIXER:
+ bVal = gsGlobalInfo.abRegValB_MIXER[wRegAddr];
+ break;
+ case MCDRV_PACKET_REGTYPE_B_AE:
+ bVal = gsGlobalInfo.abRegValB_AE[wRegAddr];
+ break;
+ case MCDRV_PACKET_REGTYPE_B_CDSP:
+ bVal = gsGlobalInfo.abRegValB_CDSP[wRegAddr];
+ break;
+ case MCDRV_PACKET_REGTYPE_B_CODEC:
+ bVal = gsGlobalInfo.abRegValB_CODEC[wRegAddr];
+ break;
+ case MCDRV_PACKET_REGTYPE_B_ANA:
+ bVal = gsGlobalInfo.abRegValB_ANA[wRegAddr];
+ break;
+ default:
+ break;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bVal;
+ McDebugLog_FuncOut("McResCtrl_GetRegVal", &sdRet);
+#endif
+
+ return bVal;
+}
+
+/****************************************************************************
+ * McResCtrl_SetRegVal
+ *
+ * Description:
+ * Set register value.
+ * Arguments:
+ * wRegType register type
+ * wRegAddr address
+ * bRegVal register value
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetRegVal
+(
+ UINT16 wRegType,
+ UINT16 wRegAddr,
+ UINT8 bRegVal
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetRegVal");
+#endif
+
+ switch(wRegType)
+ {
+ case MCDRV_PACKET_REGTYPE_A:
+ gsGlobalInfo.abRegValA[wRegAddr] = bRegVal;
+ break;
+ case MCDRV_PACKET_REGTYPE_B_BASE:
+ gsGlobalInfo.abRegValB_BASE[wRegAddr] = bRegVal;
+ break;
+ case MCDRV_PACKET_REGTYPE_B_MIXER:
+ gsGlobalInfo.abRegValB_MIXER[wRegAddr] = bRegVal;
+ break;
+ case MCDRV_PACKET_REGTYPE_B_AE:
+ gsGlobalInfo.abRegValB_AE[wRegAddr] = bRegVal;
+ break;
+ case MCDRV_PACKET_REGTYPE_B_CDSP:
+ gsGlobalInfo.abRegValB_CDSP[wRegAddr] = bRegVal;
+ break;
+ case MCDRV_PACKET_REGTYPE_B_CODEC:
+ gsGlobalInfo.abRegValB_CODEC[wRegAddr] = bRegVal;
+ break;
+ case MCDRV_PACKET_REGTYPE_B_ANA:
+ gsGlobalInfo.abRegValB_ANA[wRegAddr] = bRegVal;
+ break;
+ default:
+ break;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetRegVal", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetInitInfo
+ *
+ * Description:
+ * Get Initialize information.
+ * Arguments:
+ * psInitInfo Initialize information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetInitInfo
+(
+ MCDRV_INIT_INFO* psInitInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetInitInfo");
+#endif
+
+ *psInitInfo = gsGlobalInfo.sInitInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetInitInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetClockInfo
+ *
+ * Description:
+ * Set clock information.
+ * Arguments:
+ * psClockInfo clock information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetClockInfo
+(
+ const MCDRV_CLOCK_INFO* psClockInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetClockInfo");
+#endif
+
+
+ gsGlobalInfo.sInitInfo.bCkSel = psClockInfo->bCkSel;
+ gsGlobalInfo.sInitInfo.bDivR0 = psClockInfo->bDivR0;
+ gsGlobalInfo.sInitInfo.bDivF0 = psClockInfo->bDivF0;
+ gsGlobalInfo.sInitInfo.bDivR1 = psClockInfo->bDivR1;
+ gsGlobalInfo.sInitInfo.bDivF1 = psClockInfo->bDivF1;
+ if(McDevProf_IsValid(eMCDRV_FUNC_RANGE) == 1)
+ {
+ gsGlobalInfo.sInitInfo.bRange0 = psClockInfo->bRange0;
+ gsGlobalInfo.sInitInfo.bRange1 = psClockInfo->bRange1;
+ }
+ if(McDevProf_IsValid(eMCDRV_FUNC_BYPASS) == 1)
+ {
+ gsGlobalInfo.sInitInfo.bBypass = psClockInfo->bBypass;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetClockInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetPathInfo
+ *
+ * Description:
+ * Set path information.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetPathInfo
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetPathInfo");
+#endif
+
+
+ gsGlobalInfo.sPathInfo = gsGlobalInfo.sPathInfoVirtual;
+
+ /* HP source on/off */
+ SetHPSourceOnOff(psPathInfo);
+
+ /* SP source on/off */
+ SetSPSourceOnOff(psPathInfo);
+
+ /* RCV source on/off */
+ SetRCVSourceOnOff(psPathInfo);
+
+ /* LOut1 source on/off */
+ SetLO1SourceOnOff(psPathInfo);
+
+ /* LOut2 source on/off */
+ SetLO2SourceOnOff(psPathInfo);
+
+ /* Peak source on/off */
+ SetPMSourceOnOff(psPathInfo);
+
+ /* DIT0 source on/off */
+ SetDIT0SourceOnOff(psPathInfo);
+
+ /* DIT1 source on/off */
+ SetDIT1SourceOnOff(psPathInfo);
+
+ /* DIT2 source on/off */
+ SetDIT2SourceOnOff(psPathInfo);
+
+ /* DAC source on/off */
+ SetDACSourceOnOff(psPathInfo);
+
+ /* AE source on/off */
+ SetAESourceOnOff(psPathInfo);
+
+ /* CDSP source on/off */
+ SetCDSPSourceOnOff(psPathInfo);
+
+ /* ADC0 source on/off */
+ SetADC0SourceOnOff(psPathInfo);
+
+ /* ADC1 source on/off */
+ SetADC1SourceOnOff(psPathInfo);
+
+ /* Mix source on/off */
+ SetMixSourceOnOff(psPathInfo);
+
+ /* Bias source on/off */
+ SetBiasSourceOnOff(psPathInfo);
+
+ gsGlobalInfo.sPathInfoVirtual = gsGlobalInfo.sPathInfo;
+
+ ValidateADC();
+ ValidateDAC();
+
+ ValidateAE();
+ ValidateMix();
+ ValidateAE();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetPathInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * ValidateADC
+ *
+ * Description:
+ * Validate ADC setting.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void ValidateADC
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("ValidateADC");
+#endif
+
+ if((McResCtrl_IsDstUsed(eMCDRV_DST_ADC0, eMCDRV_DST_CH0) == 0)
+ && (McResCtrl_IsDstUsed(eMCDRV_DST_ADC0, eMCDRV_DST_CH1) == 0))
+ {/* ADC0 source all off */
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ }
+
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_ADC0) == 0)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("ValidateADC", 0);
+#endif
+}
+
+/****************************************************************************
+ * ValidateDAC
+ *
+ * Description:
+ * Validate DAC setting.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void ValidateDAC
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("ValidateDAC");
+#endif
+
+ if((McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_L) == 0)
+ && (McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_M) == 0)
+ && (McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_R) == 0))
+ {/* DAC is unused */
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+
+ ValidateADC();
+ }
+
+ if((McResCtrl_GetDACSource(eMCDRV_DAC_MASTER) == eMCDRV_SRC_NONE)
+ && (McResCtrl_GetDACSource(eMCDRV_DAC_VOICE) == eMCDRV_SRC_NONE))
+ {/* DAC source all off */
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("ValidateDAC", 0);
+#endif
+}
+
+/****************************************************************************
+ * VlidateAE
+ *
+ * Description:
+ * Validate AE path setting.
+ * Arguments:
+ * eCh AE path channel
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void ValidateAE
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("ValidateAE");
+#endif
+
+ if(McResCtrl_GetAESource() == eMCDRV_SRC_NONE)
+ {/* AE source all off */
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+
+ ValidateDAC();
+ }
+ else if(McResCtrl_IsSrcUsed(eMCDRV_SRC_AE) == 0)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else
+ {
+ }
+
+ ValidateMix();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("ValidateAE", 0);
+#endif
+}
+
+/****************************************************************************
+ * ValidateMix
+ *
+ * Description:
+ * Validate Mix path setting.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void ValidateMix
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("ValidateMix");
+#endif
+
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_MIX, eMCDRV_DST_CH0) == 0)
+ {/* MIX source all off */
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+
+ ValidateDAC();
+ }
+ else if(McResCtrl_IsSrcUsed(eMCDRV_SRC_MIX) == 0)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("ValidateMix", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetHPSourceOnOff
+ *
+ * Description:
+ * Set HP source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetHPSourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetHPSourceOnOff");
+#endif
+
+ if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON;
+ }
+ else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON;
+ }
+ else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON;
+ }
+ else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON;
+ }
+ else if((psPathInfo->asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON;
+ }
+ else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON;
+ }
+ else if((psPathInfo->asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetHPSourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetSPSourceOnOff
+ *
+ * Description:
+ * Set SP source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetSPSourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetSPSourceOnOff");
+#endif
+
+ if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON;
+ }
+ else if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON;
+ }
+ else if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON;
+ }
+ else if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON;
+ }
+ else if((psPathInfo->asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON;
+ }
+ else if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON;
+ }
+ else if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON;
+ }
+ else if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON;
+ }
+ else if((psPathInfo->asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetSPSourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetRCVSourceOnOff
+ *
+ * Description:
+ * Set RCV source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetRCVSourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetRCVSourceOnOff");
+#endif
+
+ if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON;
+ }
+ else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON;
+ }
+ else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON;
+ }
+ else if((psPathInfo->asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetRCVSourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetLO1SourceOnOff
+ *
+ * Description:
+ * Set LOut1 source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetLO1SourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetLO1SourceOnOff");
+#endif
+
+ if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON;
+ }
+ else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON;
+ }
+ else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON;
+ }
+ else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON;
+ }
+ else if((psPathInfo->asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON;
+ }
+ else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON;
+ }
+ else if((psPathInfo->asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetLO1SourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetLO2SourceOnOff
+ *
+ * Description:
+ * Set LOut2 source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetLO2SourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetLO2SourceOnOff");
+#endif
+
+ if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON;
+ }
+ else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON;
+ }
+ else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_ON;
+ }
+ else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & (MCDRV_SRC5_DAC_L_ON|MCDRV_SRC5_DAC_L_OFF)) == MCDRV_SRC5_DAC_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_L_ON;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] |= MCDRV_SRC5_DAC_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_ON;
+ }
+ else if((psPathInfo->asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & (MCDRV_SRC5_DAC_M_ON|MCDRV_SRC5_DAC_M_OFF)) == MCDRV_SRC5_DAC_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_M_ON;
+ gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] |= MCDRV_SRC5_DAC_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON;
+ }
+ else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_OFF;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_ON;
+ }
+ else if((psPathInfo->asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & (MCDRV_SRC5_DAC_R_ON|MCDRV_SRC5_DAC_R_OFF)) == MCDRV_SRC5_DAC_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] &= (UINT8)~MCDRV_SRC5_DAC_R_ON;
+ gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] |= MCDRV_SRC5_DAC_R_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetLO2SourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetPMSourceOnOff
+ *
+ * Description:
+ * Set PeakMeter source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetPMSourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetPMSourceOnOff");
+#endif
+
+ (void)psPathInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetPMSourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetDIT0SourceOnOff
+ *
+ * Description:
+ * Set DIT0 source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetDIT0SourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetDIT0SourceOnOff");
+#endif
+
+ if(((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)
+ && (gsGlobalInfo.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK))
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON;
+ }
+ else if((psPathInfo->asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetDIT0SourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetDIT1SourceOnOff
+ *
+ * Description:
+ * Set DIT1 source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetDIT1SourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetDIT1SourceOnOff");
+#endif
+
+ if(((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)
+ && (gsGlobalInfo.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK))
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON;
+ }
+ else if((psPathInfo->asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetDIT1SourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetDIT2SourceOnOff
+ *
+ * Description:
+ * Set DIT2 source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetDIT2SourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetDIT2SourceOnOff");
+#endif
+
+ if(((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)
+ && (gsGlobalInfo.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK))
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON;
+ }
+ else if((psPathInfo->asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetDIT2SourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetDACSourceOnOff
+ *
+ * Description:
+ * Set DAC source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetDACSourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+ UINT8 bCh;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetDACSourceOnOff");
+#endif
+
+ for(bCh = 0; bCh < DAC_PATH_CHANNELS; bCh++)
+ {
+ if(((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)
+ && (gsGlobalInfo.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK))
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON;
+ }
+ else if((psPathInfo->asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asDac[bCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else
+ {
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetDACSourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetAESourceOnOff
+ *
+ * Description:
+ * Set AE source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetAESourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetAESourceOnOff");
+#endif
+
+ if(((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)
+ && (gsGlobalInfo.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK))
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_OFF;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_ON;
+ }
+ else if((psPathInfo->asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & (MCDRV_SRC6_MIX_ON|MCDRV_SRC6_MIX_OFF)) == MCDRV_SRC6_MIX_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] &= (UINT8)~MCDRV_SRC6_MIX_ON;
+ gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] |= MCDRV_SRC6_MIX_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetAESourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetCDSPSourceOnOff
+ *
+ * Description:
+ * Set CDSP source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetCDSPSourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetCDSPSourceOnOff");
+#endif
+
+ (void)psPathInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetCDSPSourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetADC0SourceOnOff
+ *
+ * Description:
+ * Set ADC0 source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetADC0SourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetADC0SourceOnOff");
+#endif
+
+ if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_ON;
+ }
+ else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & (MCDRV_SRC1_LINE1_L_ON|MCDRV_SRC1_LINE1_L_OFF)) == MCDRV_SRC1_LINE1_L_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_L_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] |= MCDRV_SRC1_LINE1_L_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON;
+ }
+ else if((psPathInfo->asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_ON;
+ }
+ else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & (MCDRV_SRC1_LINE1_R_ON|MCDRV_SRC1_LINE1_R_OFF)) == MCDRV_SRC1_LINE1_R_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_R_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] |= MCDRV_SRC1_LINE1_R_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_ON)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_OFF;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_ON;
+ }
+ else if((psPathInfo->asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & (MCDRV_SRC1_LINE1_M_ON|MCDRV_SRC1_LINE1_M_OFF)) == MCDRV_SRC1_LINE1_M_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] &= (UINT8)~MCDRV_SRC1_LINE1_M_ON;
+ gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] |= MCDRV_SRC1_LINE1_M_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetADC0SourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetADC1SourceOnOff
+ *
+ * Description:
+ * Set ADC1 source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetADC1SourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetADC1SourceOnOff");
+#endif
+
+ (void)psPathInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetADC1SourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetMixSourceOnOff
+ *
+ * Description:
+ * Set Mix source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetMixSourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetMixSourceOnOff");
+#endif
+
+ if(((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_ON)
+ && (gsGlobalInfo.sInitInfo.bPad0Func == MCDRV_PAD_PDMCK))
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_ON;
+ }
+ else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & (MCDRV_SRC4_PDM_ON|MCDRV_SRC4_PDM_OFF)) == MCDRV_SRC4_PDM_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] &= (UINT8)~MCDRV_SRC4_PDM_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] |= MCDRV_SRC4_PDM_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_ON;
+ }
+ else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & (MCDRV_SRC4_ADC0_ON|MCDRV_SRC4_ADC0_OFF)) == MCDRV_SRC4_ADC0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] &= (UINT8)~MCDRV_SRC4_ADC0_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] |= MCDRV_SRC4_ADC0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_ON)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_ON;
+ }
+ else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & (MCDRV_SRC3_DIR0_ON|MCDRV_SRC3_DIR0_OFF)) == MCDRV_SRC3_DIR0_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR0_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] |= MCDRV_SRC3_DIR0_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_ON;
+ }
+ else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & (MCDRV_SRC3_DIR1_ON|MCDRV_SRC3_DIR1_OFF)) == MCDRV_SRC3_DIR1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR1_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] |= MCDRV_SRC3_DIR1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_ON;
+ }
+ else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & (MCDRV_SRC3_DIR2_ON|MCDRV_SRC3_DIR2_OFF)) == MCDRV_SRC3_DIR2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] &= (UINT8)~MCDRV_SRC3_DIR2_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] |= MCDRV_SRC3_DIR2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_ON)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_OFF;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_ON;
+ }
+ else if((psPathInfo->asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & (MCDRV_SRC6_AE_ON|MCDRV_SRC6_AE_OFF)) == MCDRV_SRC6_AE_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] &= (UINT8)~MCDRV_SRC6_AE_ON;
+ gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] |= MCDRV_SRC6_AE_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetMixSourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetExtBiasOnOff
+ *
+ * Description:
+ * Set Bias source On/Off.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetBiasSourceOnOff
+(
+ const MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetBiasSourceOnOff");
+#endif
+
+ if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_ON)
+ {
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_OFF;
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_ON;
+ }
+ else if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & (MCDRV_SRC0_MIC1_ON|MCDRV_SRC0_MIC1_OFF)) == MCDRV_SRC0_MIC1_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC1_ON;
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] |= MCDRV_SRC0_MIC1_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_ON)
+ {
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_OFF;
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_ON;
+ }
+ else if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & (MCDRV_SRC0_MIC2_ON|MCDRV_SRC0_MIC2_OFF)) == MCDRV_SRC0_MIC2_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC2_ON;
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] |= MCDRV_SRC0_MIC2_OFF;
+ }
+ else
+ {
+ }
+
+ if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_ON)
+ {
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_OFF;
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_ON;
+ }
+ else if((psPathInfo->asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & (MCDRV_SRC0_MIC3_ON|MCDRV_SRC0_MIC3_OFF)) == MCDRV_SRC0_MIC3_OFF)
+ {
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] &= (UINT8)~MCDRV_SRC0_MIC3_ON;
+ gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] |= MCDRV_SRC0_MIC3_OFF;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetBiasSourceOnOff", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetPathInfo
+ *
+ * Description:
+ * Get path information.
+ * Arguments:
+ * psPathInfo path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetPathInfo
+(
+ MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetPathInfo");
+#endif
+
+ *psPathInfo = gsGlobalInfo.sPathInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetPathInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetPathInfoVirtual
+ *
+ * Description:
+ * Get virtaul path information.
+ * Arguments:
+ * psPathInfo virtaul path information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetPathInfoVirtual
+(
+ MCDRV_PATH_INFO* psPathInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetPathInfoVirtual");
+#endif
+
+ *psPathInfo = gsGlobalInfo.sPathInfoVirtual;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetPathInfoVirtual", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetDioInfo
+ *
+ * Description:
+ * Set digital io information.
+ * Arguments:
+ * psDioInfo digital io information
+ * dUpdateInfo update information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetDioInfo
+(
+ const MCDRV_DIO_INFO* psDioInfo,
+ UINT32 dUpdateInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetDioInfo");
+#endif
+
+
+ if((dUpdateInfo & MCDRV_DIO0_COM_UPDATE_FLAG) != 0UL)
+ {
+ SetDIOCommon(psDioInfo, 0);
+ }
+ if((dUpdateInfo & MCDRV_DIO1_COM_UPDATE_FLAG) != 0UL)
+ {
+ SetDIOCommon(psDioInfo, 1);
+ }
+ if((dUpdateInfo & MCDRV_DIO2_COM_UPDATE_FLAG) != 0UL)
+ {
+ SetDIOCommon(psDioInfo, 2);
+ }
+
+ if((dUpdateInfo & MCDRV_DIO0_DIR_UPDATE_FLAG) != 0UL)
+ {
+ SetDIODIR(psDioInfo, 0);
+ }
+ if((dUpdateInfo & MCDRV_DIO1_DIR_UPDATE_FLAG) != 0UL)
+ {
+ SetDIODIR(psDioInfo, 1);
+ }
+ if((dUpdateInfo & MCDRV_DIO2_DIR_UPDATE_FLAG) != 0UL)
+ {
+ SetDIODIR(psDioInfo, 2);
+ }
+
+ if((dUpdateInfo & MCDRV_DIO0_DIT_UPDATE_FLAG) != 0UL)
+ {
+ SetDIODIT(psDioInfo, 0);
+ }
+ if((dUpdateInfo & MCDRV_DIO1_DIT_UPDATE_FLAG) != 0UL)
+ {
+ SetDIODIT(psDioInfo, 1);
+ }
+ if((dUpdateInfo & MCDRV_DIO2_DIT_UPDATE_FLAG) != 0UL)
+ {
+ SetDIODIT(psDioInfo, 2);
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetDioInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetDIOCommon
+ *
+ * Description:
+ * Set digital io common information.
+ * Arguments:
+ * psDioInfo digital io information
+ * bPort port number
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetDIOCommon
+(
+ const MCDRV_DIO_INFO* psDioInfo,
+ UINT8 bPort
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetDIOCommon");
+#endif
+
+ if((psDioInfo->asPortInfo[bPort].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bMasterSlave == MCDRV_DIO_MASTER))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bMasterSlave = psDioInfo->asPortInfo[bPort].sDioCommon.bMasterSlave;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDioCommon.bAutoFs == MCDRV_AUTOFS_OFF)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bAutoFs == MCDRV_AUTOFS_ON))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bAutoFs = psDioInfo->asPortInfo[bPort].sDioCommon.bAutoFs;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_48000)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_44100)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_32000)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_24000)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_22050)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_16000)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_12000)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_11025)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bFs == MCDRV_FS_8000))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bFs = psDioInfo->asPortInfo[bPort].sDioCommon.bFs;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_64)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_48)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_32)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_512)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_256)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_128)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs == MCDRV_BCKFS_16))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bBckFs = psDioInfo->asPortInfo[bPort].sDioCommon.bBckFs;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_DA)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface = psDioInfo->asPortInfo[bPort].sDioCommon.bInterface;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDioCommon.bBckInvert == MCDRV_BCLK_NORMAL)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bBckInvert == MCDRV_BCLK_INVERT))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bBckInvert = psDioInfo->asPortInfo[bPort].sDioCommon.bBckInvert;
+ }
+ if(psDioInfo->asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM)
+ {
+ if((psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHizTim == MCDRV_PCMHIZTIM_FALLING)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHizTim == MCDRV_PCMHIZTIM_RISING))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bPcmHizTim = psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHizTim;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDioCommon.bPcmClkDown == MCDRV_PCM_CLKDOWN_OFF)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bPcmClkDown == MCDRV_PCM_CLKDOWN_HALF))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bPcmClkDown = psDioInfo->asPortInfo[bPort].sDioCommon.bPcmClkDown;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDioCommon.bPcmFrame == MCDRV_PCM_SHORTFRAME)
+ || (psDioInfo->asPortInfo[bPort].sDioCommon.bPcmFrame == MCDRV_PCM_LONGFRAME))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bPcmFrame = psDioInfo->asPortInfo[bPort].sDioCommon.bPcmFrame;
+ }
+ if(psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHighPeriod <= 31)
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bPcmHighPeriod = psDioInfo->asPortInfo[bPort].sDioCommon.bPcmHighPeriod;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetDIOCommon", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetDIODIR
+ *
+ * Description:
+ * Set digital io dir information.
+ * Arguments:
+ * psDioInfo digital io information
+ * bPort port number
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetDIODIR
+(
+ const MCDRV_DIO_INFO* psDioInfo,
+ UINT8 bPort
+)
+{
+ UINT8 bDIOCh;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetDIODIR");
+#endif
+
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDir.wSrcRate = psDioInfo->asPortInfo[bPort].sDir.wSrcRate;
+ if(gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_DA)
+ {
+ if((psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bBitSel == MCDRV_BITSEL_16)
+ || (psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bBitSel == MCDRV_BITSEL_20)
+ || (psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bBitSel == MCDRV_BITSEL_24))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDir.sDaFormat.bBitSel = psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bBitSel;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bMode == MCDRV_DAMODE_HEADALIGN)
+ || (psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bMode == MCDRV_DAMODE_I2S)
+ || (psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bMode == MCDRV_DAMODE_TAILALIGN))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDir.sDaFormat.bMode = psDioInfo->asPortInfo[bPort].sDir.sDaFormat.bMode;
+ }
+ }
+ else if(gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM)
+ {
+ if((psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bMono == MCDRV_PCM_STEREO)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bMono == MCDRV_PCM_MONO))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDir.sPcmFormat.bMono = psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bMono;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST_SIGN)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST_SIGN)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST_ZERO)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST_ZERO))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDir.sPcmFormat.bOrder = psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bOrder;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_LINEAR)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_ALAW)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw == MCDRV_PCM_MULAW))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDir.sPcmFormat.bLaw = psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bLaw;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_8)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_13)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_14)
+ || (psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_16))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDir.sPcmFormat.bBitSel = psDioInfo->asPortInfo[bPort].sDir.sPcmFormat.bBitSel;
+ }
+ }
+ else
+ {
+ }
+
+ for(bDIOCh = 0; bDIOCh < DIO_CHANNELS; bDIOCh++)
+ {
+ if(psDioInfo->asPortInfo[bPort].sDir.abSlot[bDIOCh] < 2)
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDir.abSlot[bDIOCh] = psDioInfo->asPortInfo[bPort].sDir.abSlot[bDIOCh];
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetDIODIR", 0);
+#endif
+}
+
+/****************************************************************************
+ * SetDIODIT
+ *
+ * Description:
+ * Set digital io dit information.
+ * Arguments:
+ * psDioInfo digital io information
+ * bPort port number
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+static void SetDIODIT
+(
+ const MCDRV_DIO_INFO* psDioInfo,
+ UINT8 bPort
+)
+{
+ UINT8 bDIOCh;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("SetDIODIT");
+#endif
+
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDit.wSrcRate = psDioInfo->asPortInfo[bPort].sDit.wSrcRate;
+ if(gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_DA)
+ {
+ if((psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bBitSel == MCDRV_BITSEL_16)
+ || (psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bBitSel == MCDRV_BITSEL_20)
+ || (psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bBitSel == MCDRV_BITSEL_24))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDit.sDaFormat.bBitSel = psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bBitSel;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bMode == MCDRV_DAMODE_HEADALIGN)
+ || (psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bMode == MCDRV_DAMODE_I2S)
+ || (psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bMode == MCDRV_DAMODE_TAILALIGN))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDit.sDaFormat.bMode = psDioInfo->asPortInfo[bPort].sDit.sDaFormat.bMode;
+ }
+ }
+ else if(gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDioCommon.bInterface == MCDRV_DIO_PCM)
+ {
+ if((psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bMono == MCDRV_PCM_STEREO)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bMono == MCDRV_PCM_MONO))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDit.sPcmFormat.bMono = psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bMono;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST_SIGN)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST_SIGN)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_MSB_FIRST_ZERO)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder == MCDRV_PCM_LSB_FIRST_ZERO))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDit.sPcmFormat.bOrder = psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bOrder;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_LINEAR)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_ALAW)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw == MCDRV_PCM_MULAW))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDit.sPcmFormat.bLaw = psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bLaw;
+ }
+ if((psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_8)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_13)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_14)
+ || (psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel == MCDRV_PCM_BITSEL_16))
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDit.sPcmFormat.bBitSel = psDioInfo->asPortInfo[bPort].sDit.sPcmFormat.bBitSel;
+ }
+ }
+ else
+ {
+ }
+
+ for(bDIOCh = 0; bDIOCh < DIO_CHANNELS; bDIOCh++)
+ {
+ if(psDioInfo->asPortInfo[bPort].sDit.abSlot[bDIOCh] < 2)
+ {
+ gsGlobalInfo.sDioInfo.asPortInfo[bPort].sDit.abSlot[bDIOCh] = psDioInfo->asPortInfo[bPort].sDit.abSlot[bDIOCh];
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("SetDIODIT", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetDioInfo
+ *
+ * Description:
+ * Get digital io information.
+ * Arguments:
+ * psDioInfo digital io information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetDioInfo
+(
+ MCDRV_DIO_INFO* psDioInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetDioInfo");
+#endif
+
+ *psDioInfo = gsGlobalInfo.sDioInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetDioInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetVolInfo
+ *
+ * Description:
+ * Update volume.
+ * Arguments:
+ * psVolInfo volume setting
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetVolInfo
+(
+ const MCDRV_VOL_INFO* psVolInfo
+)
+{
+ UINT8 bCh;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetVolInfo");
+#endif
+
+
+ for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswD_Ad0[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Ad0[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Ad0[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_Ad0Att[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Ad0Att[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Ad0Att[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswA_Ad0[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Ad0[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Ad0[bCh] & 0xFFFE);
+ }
+ }
+ for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswD_Ad1[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Ad1[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Ad1[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_Ad1Att[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Ad1Att[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Ad1Att[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswA_Ad1[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Ad1[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Ad1[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < AENG6_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswD_Aeng6[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Aeng6[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Aeng6[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswD_Pdm[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Pdm[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Pdm[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_SideTone[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_SideTone[bCh] = (SINT16)((UINT16)psVolInfo->aswD_SideTone[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < DTMF_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswD_Dtmfb[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dtmfb[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dtmfb[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_DtmfAtt[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_DtmfAtt[bCh] = (SINT16)((UINT16)psVolInfo->aswD_DtmfAtt[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswD_Dir0[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir0[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dir0[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_Dir0Att[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir0Att[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dir0Att[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_Dit0[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dit0[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dit0[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswD_Dir1[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir1[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dir1[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_Dir1Att[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir1Att[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dir1Att[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_Dit1[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dit1[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dit1[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswD_Dir2[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir2[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dir2[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_Dir2Att[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dir2Att[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dir2Att[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_Dit2[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_Dit2[bCh] = (SINT16)((UINT16)psVolInfo->aswD_Dit2[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswD_DacMaster[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_DacMaster[bCh] = (SINT16)((UINT16)psVolInfo->aswD_DacMaster[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_DacVoice[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_DacVoice[bCh] = (SINT16)((UINT16)psVolInfo->aswD_DacVoice[bCh] & 0xFFFE);
+ }
+ if(((UINT16)psVolInfo->aswD_DacAtt[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswD_DacAtt[bCh] = (SINT16)((UINT16)psVolInfo->aswD_DacAtt[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < LIN1_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Lin1[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Lin1[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Lin1[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < LIN2_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Lin2[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Lin2[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Lin2[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Mic1[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic1[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Mic1[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Mic2[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic2[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Mic2[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Mic3[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic3[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Mic3[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < HP_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Hp[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Hp[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Hp[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < SP_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Sp[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Sp[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Sp[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < RC_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Rc[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Rc[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Rc[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < LOUT1_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Lout1[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Lout1[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Lout1[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < LOUT2_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Lout2[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Lout2[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Lout2[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Mic1Gain[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic1Gain[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Mic1Gain[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Mic2Gain[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic2Gain[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Mic2Gain[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_Mic3Gain[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_Mic3Gain[bCh] = (SINT16)((UINT16)psVolInfo->aswA_Mic3Gain[bCh] & 0xFFFE);
+ }
+ }
+
+ for(bCh = 0; bCh < HPGAIN_VOL_CHANNELS; bCh++)
+ {
+ if(((UINT16)psVolInfo->aswA_HpGain[bCh] & 0x01) != 0)
+ {
+ gsGlobalInfo.sVolInfo.aswA_HpGain[bCh] = (SINT16)((UINT16)psVolInfo->aswA_HpGain[bCh] & 0xFFFE);
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetVolInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetVolInfo
+ *
+ * Description:
+ * Get volume setting.
+ * Arguments:
+ * psVolInfo volume setting
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetVolInfo
+(
+ MCDRV_VOL_INFO* psVolInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetVolInfo");
+#endif
+
+ *psVolInfo = gsGlobalInfo.sVolInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetVolInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetDacInfo
+ *
+ * Description:
+ * Set DAC information.
+ * Arguments:
+ * psDacInfo DAC information
+ * dUpdateInfo update information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetDacInfo
+(
+ const MCDRV_DAC_INFO* psDacInfo,
+ UINT32 dUpdateInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetDacInfo");
+#endif
+
+
+ if((dUpdateInfo & MCDRV_DAC_MSWP_UPDATE_FLAG) != 0UL)
+ {
+ switch(psDacInfo->bMasterSwap)
+ {
+ case MCDRV_DSWAP_OFF:
+ case MCDRV_DSWAP_SWAP:
+ case MCDRV_DSWAP_MUTE:
+ case MCDRV_DSWAP_RMVCENTER:
+ case MCDRV_DSWAP_MONO:
+ case MCDRV_DSWAP_MONOHALF:
+ case MCDRV_DSWAP_BOTHL:
+ case MCDRV_DSWAP_BOTHR:
+ gsGlobalInfo.sDacInfo.bMasterSwap = psDacInfo->bMasterSwap;
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & MCDRV_DAC_VSWP_UPDATE_FLAG) != 0UL)
+ {
+ switch(psDacInfo->bVoiceSwap)
+ {
+ case MCDRV_DSWAP_OFF:
+ case MCDRV_DSWAP_SWAP:
+ case MCDRV_DSWAP_MUTE:
+ case MCDRV_DSWAP_RMVCENTER:
+ case MCDRV_DSWAP_MONO:
+ case MCDRV_DSWAP_MONOHALF:
+ case MCDRV_DSWAP_BOTHL:
+ case MCDRV_DSWAP_BOTHR:
+ gsGlobalInfo.sDacInfo.bVoiceSwap = psDacInfo->bVoiceSwap;
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & MCDRV_DAC_HPF_UPDATE_FLAG) != 0UL)
+ {
+ if((psDacInfo->bDcCut == MCDRV_DCCUT_ON) || (psDacInfo->bDcCut == MCDRV_DCCUT_OFF))
+ {
+ gsGlobalInfo.sDacInfo.bDcCut = psDacInfo->bDcCut;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetDacInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetDacInfo
+ *
+ * Description:
+ * Get DAC information.
+ * Arguments:
+ * psDacInfo DAC information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetDacInfo
+(
+ MCDRV_DAC_INFO* psDacInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetDacInfo");
+#endif
+
+ *psDacInfo = gsGlobalInfo.sDacInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetDacInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetAdcInfo
+ *
+ * Description:
+ * Set ADC information.
+ * Arguments:
+ * psAdcInfo ADC information
+ * dUpdateInfo update information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetAdcInfo
+(
+ const MCDRV_ADC_INFO* psAdcInfo,
+ UINT32 dUpdateInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetAdcInfo");
+#endif
+
+
+ if((dUpdateInfo & MCDRV_ADCADJ_UPDATE_FLAG) != 0UL)
+ {
+ switch(psAdcInfo->bAgcAdjust)
+ {
+ case MCDRV_AGCADJ_24:
+ case MCDRV_AGCADJ_18:
+ case MCDRV_AGCADJ_12:
+ case MCDRV_AGCADJ_0:
+ gsGlobalInfo.sAdcInfo.bAgcAdjust = psAdcInfo->bAgcAdjust;
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & MCDRV_ADCAGC_UPDATE_FLAG) != 0UL)
+ {
+ if((psAdcInfo->bAgcOn == MCDRV_AGC_OFF) || (psAdcInfo->bAgcOn == MCDRV_AGC_ON))
+ {
+ gsGlobalInfo.sAdcInfo.bAgcOn = psAdcInfo->bAgcOn;
+ }
+ }
+ if((dUpdateInfo & MCDRV_ADCMONO_UPDATE_FLAG) != 0UL)
+ {
+ if((psAdcInfo->bMono == MCDRV_ADC_STEREO) || (psAdcInfo->bMono == MCDRV_ADC_MONO))
+ {
+ gsGlobalInfo.sAdcInfo.bMono = psAdcInfo->bMono;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetAdcInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetAdcInfo
+ *
+ * Description:
+ * Get ADC information.
+ * Arguments:
+ * psAdcInfo ADC information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetAdcInfo
+(
+ MCDRV_ADC_INFO* psAdcInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetAdcInfo");
+#endif
+
+ *psAdcInfo = gsGlobalInfo.sAdcInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetAdcInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetSpInfo
+ *
+ * Description:
+ * Set SP information.
+ * Arguments:
+ * psSpInfo SP information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetSpInfo
+(
+ const MCDRV_SP_INFO* psSpInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetSpInfo");
+#endif
+
+
+ if((psSpInfo->bSwap == MCDRV_SPSWAP_OFF) || (psSpInfo->bSwap == MCDRV_SPSWAP_SWAP))
+ {
+ gsGlobalInfo.sSpInfo.bSwap = psSpInfo->bSwap;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetSpInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetSpInfo
+ *
+ * Description:
+ * Get SP information.
+ * Arguments:
+ * psSpInfo SP information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetSpInfo
+(
+ MCDRV_SP_INFO* psSpInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetSpInfo");
+#endif
+
+ *psSpInfo = gsGlobalInfo.sSpInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetSpInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetDngInfo
+ *
+ * Description:
+ * Set Digital Noise Gate information.
+ * Arguments:
+ * psDngInfo DNG information
+ * dUpdateInfo update information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetDngInfo
+(
+ const MCDRV_DNG_INFO* psDngInfo,
+ UINT32 dUpdateInfo
+)
+{
+ UINT8 bItem;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetDngInfo");
+#endif
+
+
+ for(bItem = MCDRV_DNG_ITEM_HP; bItem <= MCDRV_DNG_ITEM_RC; bItem++)
+ {
+ if((dUpdateInfo & (MCDRV_DNGSW_HP_UPDATE_FLAG<<(8*bItem))) != 0UL)
+ {
+ if((psDngInfo->abOnOff[bItem] == MCDRV_DNG_OFF) || (psDngInfo->abOnOff[bItem] == MCDRV_DNG_ON))
+ {
+ gsGlobalInfo.sDngInfo.abOnOff[bItem] = psDngInfo->abOnOff[bItem];
+ }
+ }
+ if((dUpdateInfo & (MCDRV_DNGTHRES_HP_UPDATE_FLAG<<(8*bItem))) != 0UL)
+ {
+ switch(psDngInfo->abThreshold[bItem])
+ {
+ case MCDRV_DNG_THRES_30:
+ case MCDRV_DNG_THRES_36:
+ case MCDRV_DNG_THRES_42:
+ case MCDRV_DNG_THRES_48:
+ case MCDRV_DNG_THRES_54:
+ case MCDRV_DNG_THRES_60:
+ case MCDRV_DNG_THRES_66:
+ case MCDRV_DNG_THRES_72:
+ case MCDRV_DNG_THRES_78:
+ case MCDRV_DNG_THRES_84:
+ gsGlobalInfo.sDngInfo.abThreshold[bItem] = psDngInfo->abThreshold[bItem];
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & (MCDRV_DNGHOLD_HP_UPDATE_FLAG<<(8*bItem))) != 0UL)
+ {
+ switch(psDngInfo->abHold[bItem])
+ {
+ case MCDRV_DNG_HOLD_30:
+ case MCDRV_DNG_HOLD_120:
+ case MCDRV_DNG_HOLD_500:
+ gsGlobalInfo.sDngInfo.abHold[bItem] = psDngInfo->abHold[bItem];
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & (MCDRV_DNGATK_HP_UPDATE_FLAG<<(8*bItem))) != 0UL)
+ {
+ switch(psDngInfo->abAttack[bItem])
+ {
+ case MCDRV_DNG_ATTACK_25:
+ case MCDRV_DNG_ATTACK_100:
+ case MCDRV_DNG_ATTACK_400:
+ case MCDRV_DNG_ATTACK_800:
+ gsGlobalInfo.sDngInfo.abAttack[bItem] = psDngInfo->abAttack[bItem];
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & (MCDRV_DNGREL_HP_UPDATE_FLAG<<(8*bItem))) != 0UL)
+ {
+ switch(psDngInfo->abRelease[bItem])
+ {
+ case MCDRV_DNG_RELEASE_7950:
+ case MCDRV_DNG_RELEASE_470:
+ case MCDRV_DNG_RELEASE_940:
+ gsGlobalInfo.sDngInfo.abRelease[bItem] = psDngInfo->abRelease[bItem];
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & (MCDRV_DNGTARGET_HP_UPDATE_FLAG<<(8*bItem))) != 0UL)
+ {
+ switch(psDngInfo->abTarget[bItem])
+ {
+ case MCDRV_DNG_TARGET_6:
+ case MCDRV_DNG_TARGET_9:
+ case MCDRV_DNG_TARGET_12:
+ case MCDRV_DNG_TARGET_15:
+ case MCDRV_DNG_TARGET_18:
+ case MCDRV_DNG_TARGET_MUTE:
+ gsGlobalInfo.sDngInfo.abTarget[bItem] = psDngInfo->abTarget[bItem];
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetDngInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetDngInfo
+ *
+ * Description:
+ * Get Digital Noise Gate information.
+ * Arguments:
+ * psDngInfo DNG information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetDngInfo
+(
+ MCDRV_DNG_INFO* psDngInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetDngInfo");
+#endif
+
+ *psDngInfo = gsGlobalInfo.sDngInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetDngInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetAeInfo
+ *
+ * Description:
+ * Set Audio Engine information.
+ * Arguments:
+ * psAeInfo AE information
+ * dUpdateInfo update information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetAeInfo
+(
+ const MCDRV_AE_INFO* psAeInfo,
+ UINT32 dUpdateInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetAeInfo");
+#endif
+
+
+ if((McDevProf_IsValid(eMCDRV_FUNC_DBEX) == 1)
+ && ((dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEXWIDE_ONOFF) != 0UL))
+ {
+ if((psAeInfo->bOnOff & MCDRV_BEXWIDE_ON) != 0)
+ {
+ gsGlobalInfo.sAeInfo.bOnOff |= MCDRV_BEXWIDE_ON;
+ }
+ else
+ {
+ gsGlobalInfo.sAeInfo.bOnOff &= (UINT8)~MCDRV_BEXWIDE_ON;
+ }
+ }
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC_ONOFF) != 0UL)
+ {
+ if((psAeInfo->bOnOff & MCDRV_DRC_ON) != 0)
+ {
+ gsGlobalInfo.sAeInfo.bOnOff |= MCDRV_DRC_ON;
+ }
+ else
+ {
+ gsGlobalInfo.sAeInfo.bOnOff &= (UINT8)~MCDRV_DRC_ON;
+ }
+ }
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5_ONOFF) != 0UL)
+ {
+ if((psAeInfo->bOnOff & MCDRV_EQ5_ON) != 0)
+ {
+ gsGlobalInfo.sAeInfo.bOnOff |= MCDRV_EQ5_ON;
+ }
+ else
+ {
+ gsGlobalInfo.sAeInfo.bOnOff &= (UINT8)~MCDRV_EQ5_ON;
+ }
+ }
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3_ONOFF) != 0UL)
+ {
+ if((psAeInfo->bOnOff & MCDRV_EQ3_ON) != 0)
+ {
+ gsGlobalInfo.sAeInfo.bOnOff |= MCDRV_EQ3_ON;
+ }
+ else
+ {
+ gsGlobalInfo.sAeInfo.bOnOff &= (UINT8)~MCDRV_EQ3_ON;
+ }
+ }
+
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_BEX) != 0UL)
+ {
+ McSrv_MemCopy(psAeInfo->abBex, gsGlobalInfo.sAeInfo.abBex, BEX_PARAM_SIZE);
+ }
+
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_WIDE) != 0UL)
+ {
+ McSrv_MemCopy(psAeInfo->abWide, gsGlobalInfo.sAeInfo.abWide, WIDE_PARAM_SIZE);
+ }
+
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_DRC) != 0UL)
+ {
+ McSrv_MemCopy(psAeInfo->abDrc, gsGlobalInfo.sAeInfo.abDrc, DRC_PARAM_SIZE);
+ }
+
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ5) != 0UL)
+ {
+ McSrv_MemCopy(psAeInfo->abEq5, gsGlobalInfo.sAeInfo.abEq5, EQ5_PARAM_SIZE);
+ }
+
+ if((dUpdateInfo & MCDRV_AEUPDATE_FLAG_EQ3) != 0UL)
+ {
+ McSrv_MemCopy(psAeInfo->abEq3, gsGlobalInfo.sAeInfo.abEq3, EQ3_PARAM_SIZE);
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetAeInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetAeInfo
+ *
+ * Description:
+ * Get Audio Engine information.
+ * Arguments:
+ * psAeInfo AE information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetAeInfo
+(
+ MCDRV_AE_INFO* psAeInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetAeInfo");
+#endif
+
+ *psAeInfo = gsGlobalInfo.sAeInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetAeInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetPdmInfo
+ *
+ * Description:
+ * Set PDM information.
+ * Arguments:
+ * psPdmInfo PDM information
+ * dUpdateInfo update information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetPdmInfo
+(
+ const MCDRV_PDM_INFO* psPdmInfo,
+ UINT32 dUpdateInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetPdmInfo");
+#endif
+
+
+ if((dUpdateInfo & MCDRV_PDMCLK_UPDATE_FLAG) != 0UL)
+ {
+ switch(psPdmInfo->bClk)
+ {
+ case MCDRV_PDM_CLK_128:
+ case MCDRV_PDM_CLK_64:
+ case MCDRV_PDM_CLK_32:
+ gsGlobalInfo.sPdmInfo.bClk = psPdmInfo->bClk;
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & MCDRV_PDMADJ_UPDATE_FLAG) != 0UL)
+ {
+ switch(psPdmInfo->bAgcAdjust)
+ {
+ case MCDRV_AGCADJ_24:
+ case MCDRV_AGCADJ_18:
+ case MCDRV_AGCADJ_12:
+ case MCDRV_AGCADJ_0:
+ gsGlobalInfo.sPdmInfo.bAgcAdjust = psPdmInfo->bAgcAdjust;
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & MCDRV_PDMAGC_UPDATE_FLAG) != 0UL)
+ {
+ switch(psPdmInfo->bAgcOn)
+ {
+ case MCDRV_AGC_OFF:
+ case MCDRV_AGC_ON:
+ gsGlobalInfo.sPdmInfo.bAgcOn = psPdmInfo->bAgcOn;
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & MCDRV_PDMEDGE_UPDATE_FLAG) != 0UL)
+ {
+ switch(psPdmInfo->bPdmEdge)
+ {
+ case MCDRV_PDMEDGE_LH:
+ case MCDRV_PDMEDGE_HL:
+ gsGlobalInfo.sPdmInfo.bPdmEdge = psPdmInfo->bPdmEdge;
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & MCDRV_PDMWAIT_UPDATE_FLAG) != 0UL)
+ {
+ switch(psPdmInfo->bPdmWait)
+ {
+ case MCDRV_PDMWAIT_0:
+ case MCDRV_PDMWAIT_1:
+ case MCDRV_PDMWAIT_10:
+ case MCDRV_PDMWAIT_20:
+ gsGlobalInfo.sPdmInfo.bPdmWait = psPdmInfo->bPdmWait;
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & MCDRV_PDMSEL_UPDATE_FLAG) != 0UL)
+ {
+ switch(psPdmInfo->bPdmSel)
+ {
+ case MCDRV_PDMSEL_L1R2:
+ case MCDRV_PDMSEL_L2R1:
+ case MCDRV_PDMSEL_L1R1:
+ case MCDRV_PDMSEL_L2R2:
+ gsGlobalInfo.sPdmInfo.bPdmSel = psPdmInfo->bPdmSel;
+ break;
+ default:
+ break;
+ }
+ }
+ if((dUpdateInfo & MCDRV_PDMMONO_UPDATE_FLAG) != 0UL)
+ {
+ switch(psPdmInfo->bMono)
+ {
+ case MCDRV_PDM_STEREO:
+ case MCDRV_PDM_MONO:
+ gsGlobalInfo.sPdmInfo.bMono = psPdmInfo->bMono;
+ break;
+ default:
+ break;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetPdmInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetPdmInfo
+ *
+ * Description:
+ * Get PDM information.
+ * Arguments:
+ * psPdmInfo PDM information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetPdmInfo
+(
+ MCDRV_PDM_INFO* psPdmInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetPdmInfo");
+#endif
+
+ *psPdmInfo = gsGlobalInfo.sPdmInfo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetPdmInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetGPMode
+ *
+ * Description:
+ * Set GP mode.
+ * Arguments:
+ * psGpMode GP mode
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetGPMode
+(
+ const MCDRV_GP_MODE* psGpMode
+)
+{
+ UINT8 bPad;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetGPMode");
+#endif
+
+
+ for(bPad = 0; bPad < GPIO_PAD_NUM; bPad++)
+ {
+ if((psGpMode->abGpDdr[bPad] == MCDRV_GPDDR_IN)
+ || (psGpMode->abGpDdr[bPad] == MCDRV_GPDDR_OUT))
+ {
+ gsGlobalInfo.sGpMode.abGpDdr[bPad] = psGpMode->abGpDdr[bPad];
+ }
+ if(McDevProf_IsValid(eMCDRV_FUNC_GPMODE) == 1)
+ {
+ if((psGpMode->abGpMode[bPad] == MCDRV_GPMODE_RISING)
+ || (psGpMode->abGpMode[bPad] == MCDRV_GPMODE_FALLING)
+ || (psGpMode->abGpMode[bPad] == MCDRV_GPMODE_BOTH))
+ {
+ gsGlobalInfo.sGpMode.abGpMode[bPad] = psGpMode->abGpMode[bPad];
+ }
+ if((psGpMode->abGpHost[bPad] == MCDRV_GPHOST_SCU)
+ || (psGpMode->abGpHost[bPad] == MCDRV_GPHOST_CDSP))
+ {
+ gsGlobalInfo.sGpMode.abGpHost[bPad] = psGpMode->abGpHost[bPad];
+ }
+ if((psGpMode->abGpInvert[bPad] == MCDRV_GPINV_NORMAL)
+ || (psGpMode->abGpInvert[bPad] == MCDRV_GPINV_INVERT))
+ {
+ gsGlobalInfo.sGpMode.abGpInvert[bPad] = psGpMode->abGpInvert[bPad];
+ }
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetGPMode", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetGPMode
+ *
+ * Description:
+ * Get GP mode.
+ * Arguments:
+ * psGpMode GP mode
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetGPMode
+(
+ MCDRV_GP_MODE* psGpMode
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetGPMode");
+#endif
+
+ *psGpMode = gsGlobalInfo.sGpMode;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetGPMode", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetGPMask
+ *
+ * Description:
+ * Set GP mask.
+ * Arguments:
+ * bMask GP mask
+ * dPadNo PAD Number
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetGPMask
+(
+ UINT8 bMask,
+ UINT32 dPadNo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetGPMask");
+#endif
+
+ if(dPadNo == MCDRV_GP_PAD0)
+ {
+ if((gsGlobalInfo.sInitInfo.bPad0Func == MCDRV_PAD_GPIO)
+ && (gsGlobalInfo.sGpMode.abGpDdr[dPadNo] == MCDRV_GPDDR_IN))
+ {
+ if((bMask == MCDRV_GPMASK_ON) || (bMask == MCDRV_GPMASK_OFF))
+ {
+ gsGlobalInfo.abGpMask[dPadNo] = bMask;
+ }
+ }
+ }
+ else if(dPadNo == MCDRV_GP_PAD1)
+ {
+ if((gsGlobalInfo.sInitInfo.bPad1Func == MCDRV_PAD_GPIO)
+ && (gsGlobalInfo.sGpMode.abGpDdr[dPadNo] == MCDRV_GPDDR_IN))
+ {
+ if((bMask == MCDRV_GPMASK_ON) || (bMask == MCDRV_GPMASK_OFF))
+ {
+ gsGlobalInfo.abGpMask[dPadNo] = bMask;
+ }
+ }
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetGPMask", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetGPMask
+ *
+ * Description:
+ * Get GP mask.
+ * Arguments:
+ * pabMask GP mask
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetGPMask
+(
+ UINT8* pabMask
+)
+{
+ UINT8 bPadNo;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetGPMask");
+#endif
+
+ for(bPadNo = 0; bPadNo < GPIO_PAD_NUM; bPadNo++)
+ {
+ pabMask[bPadNo] = gsGlobalInfo.abGpMask[bPadNo];
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetGPMask", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetSysEq
+ *
+ * Description:
+ * Get System EQ.
+ * Arguments:
+ * psSysEq pointer to MCDRV_SYSEQ_INFO struct
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetSysEq
+(
+ MCDRV_SYSEQ_INFO* psSysEq
+)
+{
+ UINT8 i;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetSysEq");
+#endif
+
+ psSysEq->bOnOff = gsGlobalInfo.sSysEq.bOnOff;
+ for(i = 0; i < sizeof(gsGlobalInfo.sSysEq.abParam); i++)
+ {
+ psSysEq->abParam[i] = gsGlobalInfo.sSysEq.abParam[i];
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetSysEq", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetSysEq
+ *
+ * Description:
+ * Set System EQ.
+ * Arguments:
+ * psSysEq pointer to MCDRV_SYSEQ_INFO struct
+ * dUpdateInfo update information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetSysEq
+(
+ const MCDRV_SYSEQ_INFO* psSysEq,
+ UINT32 dUpdateInfo
+)
+{
+ UINT8 i;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetSysEq");
+#endif
+
+ if((dUpdateInfo & MCDRV_SYSEQ_ONOFF_UPDATE_FLAG) != 0UL)
+ {
+ if((psSysEq->bOnOff == MCDRV_SYSEQ_OFF) || (psSysEq->bOnOff == MCDRV_SYSEQ_ON))
+ {
+ gsGlobalInfo.sSysEq.bOnOff = psSysEq->bOnOff;
+ }
+ }
+
+ if((dUpdateInfo & MCDRV_SYSEQ_PARAM_UPDATE_FLAG) != 0UL)
+ {
+ for(i = 0; i < sizeof(gsGlobalInfo.sSysEq.abParam); i++)
+ {
+ gsGlobalInfo.sSysEq.abParam[i] = psSysEq->abParam[i];
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetSysEq", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetClockSwitch
+ *
+ * Description:
+ * Get switch clock info.
+ * Arguments:
+ * psClockInfo pointer to MCDRV_CLKSW_INFO struct
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetClockSwitch
+(
+ MCDRV_CLKSW_INFO* psClockInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetClockSwitch");
+#endif
+
+ psClockInfo->bClkSrc = gsGlobalInfo.sClockSwitch.bClkSrc;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetClockSwitch", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_SetClockSwitch
+ *
+ * Description:
+ * Get switch clock info.
+ * Arguments:
+ * psClockInfo pointer to MCDRV_CLKSW_INFO struct
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_SetClockSwitch
+(
+ const MCDRV_CLKSW_INFO* psClockInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_SetClockSwitch");
+#endif
+
+ gsGlobalInfo.sClockSwitch.bClkSrc = psClockInfo->bClkSrc;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_SetClockSwitch", 0);
+#endif
+}
+
+
+/****************************************************************************
+ * McResCtrl_GetVolReg
+ *
+ * Description:
+ * Get value of volume registers.
+ * Arguments:
+ * psVolInfo volume information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetVolReg
+(
+ MCDRV_VOL_INFO* psVolInfo
+)
+{
+ UINT8 bCh;
+ MCDRV_DST_CH abDSTCh[] = {eMCDRV_DST_CH0, eMCDRV_DST_CH1};
+ SINT16 swGainUp;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetVolReg");
+#endif
+
+
+ *psVolInfo = gsGlobalInfo.sVolInfo;
+
+ if(gsGlobalInfo.sInitInfo.bDclGain == MCDRV_DCLGAIN_6)
+ {
+ swGainUp = 6 * 256;
+ }
+ else if(gsGlobalInfo.sInitInfo.bDclGain == MCDRV_DCLGAIN_12)
+ {
+ swGainUp = 12 * 256;
+ }
+ else if(gsGlobalInfo.sInitInfo.bDclGain == MCDRV_DCLGAIN_18)
+ {
+ swGainUp = 18 * 256;
+ }
+ else
+ {
+ swGainUp = 0;
+ }
+
+ psVolInfo->aswA_HpGain[0] = MCDRV_REG_MUTE;
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_HP, eMCDRV_DST_CH0) == 0)
+ {
+ psVolInfo->aswA_Hp[0] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Hp[0] = GetHpVolReg(gsGlobalInfo.sVolInfo.aswA_Hp[0]);
+ psVolInfo->aswA_HpGain[0] = GetHpGainReg(gsGlobalInfo.sVolInfo.aswA_HpGain[0]);
+ }
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_HP, eMCDRV_DST_CH1) == 0)
+ {
+ psVolInfo->aswA_Hp[1] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Hp[1] = GetHpVolReg(gsGlobalInfo.sVolInfo.aswA_Hp[1]);
+ psVolInfo->aswA_HpGain[0] = GetHpGainReg(gsGlobalInfo.sVolInfo.aswA_HpGain[0]);
+ }
+
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_SP, eMCDRV_DST_CH0) == 0)
+ {
+ psVolInfo->aswA_Sp[0] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Sp[0] = GetSpVolReg(gsGlobalInfo.sVolInfo.aswA_Sp[0]);
+ }
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_SP, eMCDRV_DST_CH1) == 0)
+ {
+ psVolInfo->aswA_Sp[1] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Sp[1] = GetSpVolReg(gsGlobalInfo.sVolInfo.aswA_Sp[1]);
+ }
+
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_RCV, eMCDRV_DST_CH0) == 0)
+ {
+ psVolInfo->aswA_Rc[0] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Rc[0] = GetRcVolReg(gsGlobalInfo.sVolInfo.aswA_Rc[0]);
+ }
+
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_LOUT1, eMCDRV_DST_CH0) == 0)
+ {
+ psVolInfo->aswA_Lout1[0] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Lout1[0] = GetLoVolReg(gsGlobalInfo.sVolInfo.aswA_Lout1[0]);
+ }
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_LOUT1, eMCDRV_DST_CH1) == 0)
+ {
+ psVolInfo->aswA_Lout1[1] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Lout1[1] = GetLoVolReg(gsGlobalInfo.sVolInfo.aswA_Lout1[1]);
+ }
+
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_LOUT2, eMCDRV_DST_CH0) == 0)
+ {
+ psVolInfo->aswA_Lout2[0] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Lout2[0] = GetLoVolReg(gsGlobalInfo.sVolInfo.aswA_Lout2[0]);
+ }
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_LOUT2, eMCDRV_DST_CH1) == 0)
+ {
+ psVolInfo->aswA_Lout2[1] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Lout2[1] = GetLoVolReg(gsGlobalInfo.sVolInfo.aswA_Lout2[1]);
+ }
+
+ for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++)
+ {
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_ADC0, abDSTCh[bCh]) == 0)
+ {/* ADC0 source all off */
+ psVolInfo->aswA_Ad0[bCh] = MCDRV_REG_MUTE;
+ psVolInfo->aswD_Ad0[bCh] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Ad0[bCh] = GetADVolReg(gsGlobalInfo.sVolInfo.aswA_Ad0[bCh]);
+ psVolInfo->aswD_Ad0[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Ad0[bCh] - swGainUp);
+ }
+ }
+ if(((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ || (((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ && ((McResCtrl_GetAESource() == eMCDRV_SRC_PDM) || (McResCtrl_GetAESource() == eMCDRV_SRC_ADC0))))
+ {
+ for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Ad0Att[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Ad0Att[bCh]);
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < AD0_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Ad0Att[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+
+ if(McDevProf_IsValid(eMCDRV_FUNC_ADC1) == 1)
+ {
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_ADC1, eMCDRV_DST_CH0) == 0)
+ {/* ADC1 source all off */
+ for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswA_Ad1[bCh] = MCDRV_REG_MUTE;
+ psVolInfo->aswD_Ad1[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswA_Ad1[bCh] = GetADVolReg(gsGlobalInfo.sVolInfo.aswA_Ad1[bCh]);
+ psVolInfo->aswD_Ad1[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Ad1[bCh] - swGainUp);
+ }
+ }
+ if((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC1_BLOCK] & MCDRV_SRC4_ADC1_ON) == MCDRV_SRC4_ADC1_ON)
+ {
+ for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Ad1Att[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Ad1Att[bCh]);
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < AD1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Ad1Att[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ }
+
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ psVolInfo->aswA_Lin1[0] = GetLIVolReg(gsGlobalInfo.sVolInfo.aswA_Lin1[0]);
+ }
+ else
+ {
+ psVolInfo->aswA_Lin1[0] = MCDRV_REG_MUTE;
+ }
+
+ if(((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ psVolInfo->aswA_Lin1[1] = GetLIVolReg(gsGlobalInfo.sVolInfo.aswA_Lin1[1]);
+ }
+ else
+ {
+ psVolInfo->aswA_Lin1[1] = MCDRV_REG_MUTE;
+ }
+
+ if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1)
+ {
+ psVolInfo->aswA_Lin2[0] = MCDRV_REG_MUTE;
+ psVolInfo->aswA_Lin2[1] = MCDRV_REG_MUTE;
+ }
+
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_MIC1) == 0)
+ {/* MIC1 is unused */
+ for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswA_Mic1[bCh] = MCDRV_REG_MUTE;
+ psVolInfo->aswA_Mic1Gain[bCh] = (SINT16)(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_MC_GAIN) & MCB_MC1GAIN);
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < MIC1_VOL_CHANNELS; bCh++)
+ {
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON)
+ && ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON)
+ && ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON))
+ {
+ psVolInfo->aswA_Mic1[bCh] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Mic1[bCh] = GetMcVolReg(gsGlobalInfo.sVolInfo.aswA_Mic1[bCh]);
+ }
+ psVolInfo->aswA_Mic1Gain[bCh] = GetMcGainReg(gsGlobalInfo.sVolInfo.aswA_Mic1Gain[bCh]);
+ }
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_MIC2) == 0)
+ {/* MIC2 is unused */
+ for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswA_Mic2[bCh] = MCDRV_REG_MUTE;
+ psVolInfo->aswA_Mic2Gain[bCh] = (SINT16)((McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_MC_GAIN) & MCB_MC2GAIN) >> 4);
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < MIC2_VOL_CHANNELS; bCh++)
+ {
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON)
+ && ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON)
+ && ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON))
+ {
+ psVolInfo->aswA_Mic2[bCh] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Mic2[bCh] = GetMcVolReg(gsGlobalInfo.sVolInfo.aswA_Mic2[bCh]);
+ }
+ psVolInfo->aswA_Mic2Gain[bCh] = GetMcGainReg(gsGlobalInfo.sVolInfo.aswA_Mic2Gain[bCh]);
+ }
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_MIC3) == 0)
+ {/* MIC3 is unused */
+ for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswA_Mic3[bCh] = MCDRV_REG_MUTE;
+ psVolInfo->aswA_Mic3Gain[bCh] = (SINT16)(McResCtrl_GetRegVal(MCDRV_PACKET_REGTYPE_B_ANA, MCI_MC3_GAIN) & MCB_MC3GAIN);
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < MIC3_VOL_CHANNELS; bCh++)
+ {
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON)
+ && ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON)
+ && ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON)
+ && ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON))
+ {
+ psVolInfo->aswA_Mic3[bCh] = MCDRV_REG_MUTE;
+ }
+ else
+ {
+ psVolInfo->aswA_Mic3[bCh] = GetMcVolReg(gsGlobalInfo.sVolInfo.aswA_Mic3[bCh]);
+ }
+ psVolInfo->aswA_Mic3Gain[bCh] = GetMcGainReg(gsGlobalInfo.sVolInfo.aswA_Mic3Gain[bCh]);
+ }
+ }
+
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR0) == 0)
+ {/* DIR0 is unused */
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir0[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir0[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dir0[bCh] - swGainUp);
+ }
+ }
+ if(((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ || (((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ && (McResCtrl_GetAESource() == eMCDRV_SRC_DIR0)))
+ {
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir0Att[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dir0Att[bCh]);
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir0Att[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR1) == 0)
+ {/* DIR1 is unused */
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir1[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir1[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dir1[bCh] - swGainUp);
+ }
+ }
+ if(((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ || (((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ && (McResCtrl_GetAESource() == eMCDRV_SRC_DIR1)))
+ {
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir1Att[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dir1Att[bCh]);
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir1Att[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR2) == 0)
+ {/* DIR2 is unused */
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir2[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir2[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dir2[bCh] - swGainUp);
+ }
+ }
+ if(((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ || (((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ && (McResCtrl_GetAESource() == eMCDRV_SRC_DIR2)))
+ {
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir2Att[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dir2Att[bCh]);
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dir2Att[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_0) == eMCDRV_SRC_NONE)
+ {/* DIT0 source all off */
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dit0[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DIO0_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dit0[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dit0[bCh] + swGainUp);
+ }
+ }
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_1) == eMCDRV_SRC_NONE)
+ {/* DIT1 source all off */
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dit1[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DIO1_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dit1[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dit1[bCh] + swGainUp);
+ }
+ }
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_2) == eMCDRV_SRC_NONE)
+ {/* DIT2 source all off */
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dit2[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DIO2_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dit2[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dit2[bCh] + swGainUp);
+ }
+ }
+
+ if((McResCtrl_GetDACSource(eMCDRV_DAC_MASTER) == eMCDRV_SRC_NONE)
+ && (McResCtrl_GetDACSource(eMCDRV_DAC_VOICE) == eMCDRV_SRC_NONE))
+ {
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_DacAtt[bCh] = MCDRV_REG_MUTE;
+ psVolInfo->aswD_DacMaster[bCh] = MCDRV_REG_MUTE;
+ psVolInfo->aswD_DacVoice[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ if(McResCtrl_GetDACSource(eMCDRV_DAC_MASTER) == eMCDRV_SRC_NONE)
+ {
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_DacMaster[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_DacMaster[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_DacMaster[bCh]);
+ }
+ }
+ if(McResCtrl_GetDACSource(eMCDRV_DAC_VOICE) == eMCDRV_SRC_NONE)
+ {
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_DacVoice[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_DacVoice[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_DacVoice[bCh]);
+ }
+ }
+ for(bCh = 0; bCh < DAC_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_DacAtt[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_DacAtt[bCh]);
+ }
+ }
+
+ if((McResCtrl_IsSrcUsed(eMCDRV_SRC_PDM) == 0)
+ && (McResCtrl_IsSrcUsed(eMCDRV_SRC_ADC0) == 0))
+ {/* PDM&ADC0 is unused */
+ for(bCh = 0; bCh < AENG6_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Aeng6[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < AENG6_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Aeng6[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Aeng6[bCh]);
+ }
+ }
+
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_PDM) == 0)
+ {/* PDM is unused */
+ for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Pdm[bCh] = MCDRV_REG_MUTE;
+ psVolInfo->aswD_SideTone[bCh] = MCDRV_REG_MUTE;
+ }
+ }
+ else
+ {
+ for(bCh = 0; bCh < PDM_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Pdm[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Pdm[bCh] - swGainUp);
+ psVolInfo->aswD_SideTone[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_SideTone[bCh] - swGainUp);
+ }
+ }
+
+ if(McDevProf_IsValid(eMCDRV_FUNC_DTMF) == 1)
+ {
+ /* DTMF */
+ for(bCh = 0; bCh < DTMF_VOL_CHANNELS; bCh++)
+ {
+ psVolInfo->aswD_Dtmfb[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_Dtmfb[bCh] - swGainUp);
+ psVolInfo->aswD_DtmfAtt[bCh] = GetDigitalVolReg(gsGlobalInfo.sVolInfo.aswD_DtmfAtt[bCh] - swGainUp);
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetVolReg", 0);
+#endif
+}
+
+/****************************************************************************
+ * GetDigitalVolReg
+ *
+ * Description:
+ * Get value of digital volume registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetDigitalVolReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetDigitalVolReg");
+#endif
+
+ if(swVol < (-74*256))
+ {
+ swRet = 0;
+ }
+ else if(swVol < 0)
+ {
+ swRet = 96 + (swVol-128)/256;
+ }
+ else
+ {
+ swRet = 96 + (swVol+128)/256;
+ }
+
+ if(swRet < 22)
+ {
+ swRet = 0;
+ }
+
+ if(swRet > 114)
+ {
+ swRet = 114;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetDigitalVolReg", &sdRet);
+#endif
+
+ return swRet;
+}
+
+/****************************************************************************
+ * GetADVolReg
+ *
+ * Description:
+ * Get update value of analog AD volume registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetADVolReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetADVolReg");
+#endif
+
+ if(swVol < (-27*256))
+ {
+ swRet = 0;
+ }
+ else if(swVol < 0)
+ {
+ swRet = 19 + (swVol-192) * 2 / (256*3);
+ }
+ else
+ {
+ swRet = 19 + (swVol+192) * 2 / (256*3);
+ }
+
+ if(swRet < 0)
+ {
+ swRet = 0;
+ }
+
+ if(swRet > 31)
+ {
+ swRet = 31;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetADVolReg", &sdRet);
+#endif
+
+ return swRet;
+}
+
+/****************************************************************************
+ * GetLIVolReg
+ *
+ * Description:
+ * Get update value of analog LIN volume registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetLIVolReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetLIVolReg");
+#endif
+
+ if(swVol < (-30*256))
+ {
+ swRet = 0;
+ }
+ else if(swVol < 0)
+ {
+ swRet = 21 + (swVol-192) * 2 / (256*3);
+ }
+ else
+ {
+ swRet = 21 + (swVol+192) * 2 / (256*3);
+ }
+
+ if(swRet < 0)
+ {
+ swRet = 0;
+ }
+ if(swRet > 31)
+ {
+ swRet = 31;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetLIVolReg", &sdRet);
+#endif
+ return swRet;
+}
+
+/****************************************************************************
+ * GetMcVolReg
+ *
+ * Description:
+ * Get update value of analog Mic volume registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetMcVolReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetMcVolReg");
+#endif
+
+ if(swVol < (-30*256))
+ {
+ swRet = 0;
+ }
+ else if(swVol < 0)
+ {
+ swRet = 21 + (swVol-192) * 2 / (256*3);
+ }
+ else
+ {
+ swRet = 21 + (swVol+192) * 2 / (256*3);
+ }
+
+ if(swRet < 0)
+ {
+ swRet = 0;
+ }
+ if(swRet > 31)
+ {
+ swRet = 31;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetMcVolReg", &sdRet);
+#endif
+ return swRet;
+}
+
+/****************************************************************************
+ * GetMcGainReg
+ *
+ * Description:
+ * Get update value of analog Mic gain registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetMcGainReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swGain = (swVol+128)/256;
+ SINT16 swRet = 3;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetMcGainReg");
+#endif
+
+ if(swGain < 18)
+ {
+ swRet = 0;
+ }
+ else if(swGain < 23)
+ {
+ swRet = 1;
+ }
+ else if(swGain < 28)
+ {
+ swRet = 2;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetMcGainReg", &sdRet);
+#endif
+
+ return swRet;
+}
+
+/****************************************************************************
+ * GetHpVolReg
+ *
+ * Description:
+ * Get update value of analog Hp volume registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetHpVolReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swDB = swVol/256;
+ SINT16 swRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetHpVolReg");
+#endif
+
+ if(swVol >= 0)
+ {
+ swRet = 31;
+ }
+ else if(swDB <= -8)
+ {
+ if(swVol < (-36*256))
+ {
+ swRet = 0;
+ }
+ else if(swDB <= -32)
+ {
+ swRet = 1;
+ }
+ else if(swDB <= -26)
+ {
+ swRet = 2;
+ }
+ else if(swDB <= -23)
+ {
+ swRet = 3;
+ }
+ else if(swDB <= -21)
+ {
+ swRet = 4;
+ }
+ else if(swDB <= -19)
+ {
+ swRet = 5;
+ }
+ else if(swDB <= -17)
+ {
+ swRet = 6;
+ }
+ else
+ {
+ swRet = 23+(swVol-128)/256;
+ }
+ }
+ else
+ {
+ swRet = 31 + (swVol-64)*2/256;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetHpVolReg", &sdRet);
+#endif
+
+ return swRet;
+}
+
+/****************************************************************************
+ * GetHpGainReg
+ *
+ * Description:
+ * Get update value of analog Hp gain registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetHpGainReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swDB = swVol/(256/4);
+ SINT16 swRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetHpGainReg");
+#endif
+
+ if(swDB < 3)
+ {
+ swRet = 0;
+ }
+ else if(swDB < 9)
+ {
+ swRet = 1;
+ }
+ else if(swDB < 18)
+ {
+ swRet = 2;
+ }
+ else
+ {
+ swRet = 3;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetHpGainReg", &sdRet);
+#endif
+
+ return swRet;
+}
+
+/****************************************************************************
+ * GetSpVolReg
+ *
+ * Description:
+ * Get update value of analog Sp volume registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetSpVolReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swDB = swVol/256;
+ SINT16 swRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetSpVolReg");
+#endif
+
+ if(swVol >= 0)
+ {
+ swRet = 31;
+ }
+ else if(swDB <= -8)
+ {
+ if(swVol < (-36*256))
+ {
+ swRet = 0;
+ }
+ else if(swDB <= -32)
+ {
+ swRet = 1;
+ }
+ else if(swDB <= -26)
+ {
+ swRet = 2;
+ }
+ else if(swDB <= -23)
+ {
+ swRet = 3;
+ }
+ else if(swDB <= -21)
+ {
+ swRet = 4;
+ }
+ else if(swDB <= -19)
+ {
+ swRet = 5;
+ }
+ else if(swDB <= -17)
+ {
+ swRet = 6;
+ }
+ else
+ {
+ swRet = 23+(swVol-128)/256;
+ }
+ }
+ else
+ {
+ swRet = 31 + (swVol-64)*2/256;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetSpVolReg", &sdRet);
+#endif
+
+ return swRet;
+}
+
+/****************************************************************************
+ * GetRcVolReg
+ *
+ * Description:
+ * Get update value of analog Rcv volume registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetRcVolReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swDB = swVol/256;
+ SINT16 swRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetRcVolReg");
+#endif
+
+ if(swVol >= 0)
+ {
+ swRet = 31;
+ }
+ else if(swDB <= -8)
+ {
+ if(swVol < (-36*256))
+ {
+ swRet = 0;
+ }
+ else if(swDB <= -32)
+ {
+ swRet = 1;
+ }
+ else if(swDB <= -26)
+ {
+ swRet = 2;
+ }
+ else if(swDB <= -23)
+ {
+ swRet = 3;
+ }
+ else if(swDB <= -21)
+ {
+ swRet = 4;
+ }
+ else if(swDB <= -19)
+ {
+ swRet = 5;
+ }
+ else if(swDB <= -17)
+ {
+ swRet = 6;
+ }
+ else
+ {
+ swRet = 23+(swVol-128)/256;
+ }
+ }
+ else
+ {
+ swRet = 31 + (swVol-64)*2/256;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetRcVolReg", &sdRet);
+#endif
+
+ return swRet;
+}
+
+/****************************************************************************
+ * GetLoVolReg
+ *
+ * Description:
+ * Get update value of analog Lout volume registers.
+ * Arguments:
+ * swVol volume(dB value*256)
+ * Return:
+ * value of registers
+ *
+ ****************************************************************************/
+static SINT16 GetLoVolReg
+(
+ SINT16 swVol
+)
+{
+ SINT16 swRet = 31 + (swVol-128)/256;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("GetLoVolReg");
+#endif
+
+ if(swVol < (-30*256))
+ {
+ swRet = 0;
+ }
+ if(swRet < 0)
+ {
+ swRet = 0;
+ }
+ if(swRet > 31)
+ {
+ swRet = 31;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = swRet;
+ McDebugLog_FuncOut("GetLoVolReg", &sdRet);
+#endif
+ return swRet;
+}
+
+/****************************************************************************
+ * McResCtrl_GetPowerInfo
+ *
+ * Description:
+ * Get power information.
+ * Arguments:
+ * psPowerInfo power information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetPowerInfo
+(
+ MCDRV_POWER_INFO* psPowerInfo
+)
+{
+ UINT8 i;
+ UINT8 bAnalogOn = 0;
+ UINT8 bPowerMode = gsGlobalInfo.sInitInfo.bPowerMode;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetPowerInfo");
+#endif
+
+ /* Digital power */
+ psPowerInfo->dDigital = 0;
+ if((bPowerMode & MCDRV_POWMODE_CLKON) == 0)
+ {
+ psPowerInfo->dDigital |= (MCDRV_POWINFO_DIGITAL_DP0 | MCDRV_POWINFO_DIGITAL_DP1 | MCDRV_POWINFO_DIGITAL_DP2 | MCDRV_POWINFO_DIGITAL_PLLRST0);
+ }
+ if((McResCtrl_GetDITSource(eMCDRV_DIO_0) != eMCDRV_SRC_NONE)
+ || (McResCtrl_GetDITSource(eMCDRV_DIO_1) != eMCDRV_SRC_NONE)
+ || (McResCtrl_GetDITSource(eMCDRV_DIO_2) != eMCDRV_SRC_NONE)
+ || (McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_L) != 0)
+ || (McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_M) != 0)
+ || (McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_R) != 0)
+ || (McResCtrl_IsSrcUsed(eMCDRV_SRC_ADC0) != 0)
+ || (McResCtrl_IsSrcUsed(eMCDRV_SRC_AE) != 0)
+ || (McResCtrl_IsSrcUsed(eMCDRV_SRC_MIX) != 0))
+ {
+ /* DP0-2, PLLRST0 on */
+ psPowerInfo->dDigital &= ~(MCDRV_POWINFO_DIGITAL_DP0 | MCDRV_POWINFO_DIGITAL_DP1 | MCDRV_POWINFO_DIGITAL_DP2 | MCDRV_POWINFO_DIGITAL_PLLRST0);
+ }
+ else
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPB;
+ }
+
+ /* DPBDSP */
+ if((McResCtrl_IsSrcUsed(eMCDRV_SRC_AE) == 0)
+ || ((gsGlobalInfo.sAeInfo.bOnOff&(MCDRV_BEXWIDE_ON|MCDRV_DRC_ON)) == 0))
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPBDSP;
+ }
+
+ /* DPADIF */
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_ADC0) == 0)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPADIF;
+ }
+
+ /* DPPDM */
+ if((gsGlobalInfo.sInitInfo.bPad0Func != MCDRV_PAD_PDMCK) || (McResCtrl_IsSrcUsed(eMCDRV_SRC_PDM) == 0))
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPPDM;
+ }
+
+ /* DPDI* */
+ if((gsGlobalInfo.sDioInfo.asPortInfo[0].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE)
+ || (((McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR0) == 0) && (McResCtrl_GetDITSource(eMCDRV_DIO_0) == eMCDRV_SRC_NONE))))
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI0;
+ }
+ if((gsGlobalInfo.sDioInfo.asPortInfo[1].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE)
+ || (((McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR1) == 0) && (McResCtrl_GetDITSource(eMCDRV_DIO_1) == eMCDRV_SRC_NONE))))
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI1;
+ }
+ if((gsGlobalInfo.sDioInfo.asPortInfo[2].sDioCommon.bMasterSlave == MCDRV_DIO_SLAVE)
+ || (((McResCtrl_IsSrcUsed(eMCDRV_SRC_DIR2) == 0) && (McResCtrl_GetDITSource(eMCDRV_DIO_2) == eMCDRV_SRC_NONE))))
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI2;
+ }
+
+ /* Analog power */
+ for(i = 0; i < 5; i++)
+ {
+ psPowerInfo->abAnalog[i] = 0;
+ }
+
+ /* SPL* */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_SP, eMCDRV_DST_CH0) == 0)
+ {
+ psPowerInfo->abAnalog[1] |= MCB_PWM_SPL1;
+ psPowerInfo->abAnalog[1] |= MCB_PWM_SPL2;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* SPR* */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_SP, eMCDRV_DST_CH1) == 0)
+ {
+ psPowerInfo->abAnalog[1] |= MCB_PWM_SPR1;
+ psPowerInfo->abAnalog[1] |= MCB_PWM_SPR2;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+
+ /* HPL */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_HP, eMCDRV_DST_CH0) == 0)
+ {
+ psPowerInfo->abAnalog[1] |= MCB_PWM_HPL;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* HPR */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_HP, eMCDRV_DST_CH1) == 0)
+ {
+ psPowerInfo->abAnalog[1] |= MCB_PWM_HPR;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* CP */
+ if(((psPowerInfo->abAnalog[1] & MCB_PWM_HPL) != 0) && ((psPowerInfo->abAnalog[1] & MCB_PWM_HPR) != 0))
+ {
+ psPowerInfo->abAnalog[0] |= MCB_PWM_CP;
+ }
+
+ /* LOUT1L */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_LOUT1, eMCDRV_DST_CH0) == 0)
+ {
+ psPowerInfo->abAnalog[2] |= MCB_PWM_LO1L;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* LOUT1R */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_LOUT1, eMCDRV_DST_CH1) == 0)
+ {
+ psPowerInfo->abAnalog[2] |= MCB_PWM_LO1R;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* LOUT2L */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_LOUT2, eMCDRV_DST_CH0) == 0)
+ {
+ psPowerInfo->abAnalog[2] |= MCB_PWM_LO2L;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* LOUT2R */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_LOUT2, eMCDRV_DST_CH1) == 0)
+ {
+ psPowerInfo->abAnalog[2] |= MCB_PWM_LO2R;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* RCV */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_RCV, eMCDRV_DST_CH0) == 0)
+ {
+ psPowerInfo->abAnalog[2] |= MCB_PWM_RC1;
+ psPowerInfo->abAnalog[2] |= MCB_PWM_RC2;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* DA */
+ if((McResCtrl_IsDstUsed(eMCDRV_DST_DAC, eMCDRV_DST_CH0) == 0)
+ && (McResCtrl_IsDstUsed(eMCDRV_DST_DAC, eMCDRV_DST_CH1) == 0))
+ {
+ psPowerInfo->abAnalog[3] |= MCB_PWM_DAL;
+ psPowerInfo->abAnalog[3] |= MCB_PWM_DAR;
+ }
+ else
+ {
+ if((McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_L) == 0)
+ && (McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_M) == 0))
+ {
+ psPowerInfo->abAnalog[3] |= MCB_PWM_DAL;
+ }
+ if((McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_R) == 0)
+ && (McResCtrl_IsSrcUsed(eMCDRV_SRC_DAC_M) == 0))
+ {
+ psPowerInfo->abAnalog[3] |= MCB_PWM_DAR;
+ }
+ bAnalogOn = 1;
+ }
+ /* ADC0L */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_ADC0, eMCDRV_DST_CH0) == 1)
+ {
+ bAnalogOn = 1;
+ }
+ else
+ {
+ if((McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1)
+ && (((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)))
+ {
+ bAnalogOn = 1;
+ }
+ else
+ {
+ psPowerInfo->abAnalog[1] |= MCB_PWM_ADL;
+ }
+ }
+ /* ADC0R */
+ if(McResCtrl_IsDstUsed(eMCDRV_DST_ADC0, eMCDRV_DST_CH1) == 1)
+ {
+ bAnalogOn = 1;
+ }
+ else
+ {
+ if((McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1)
+ && (((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)))
+ {
+ bAnalogOn = 1;
+ }
+ else
+ {
+ psPowerInfo->abAnalog[1] |= MCB_PWM_ADR;
+ }
+ }
+ if(McDevProf_IsValid(eMCDRV_FUNC_ADC1) == 1)
+ {
+ }
+ /* LI */
+ if((McResCtrl_IsSrcUsed(eMCDRV_SRC_LINE1_L) == 0)
+ && (McResCtrl_IsSrcUsed(eMCDRV_SRC_LINE1_M) == 0)
+ && (McResCtrl_IsSrcUsed(eMCDRV_SRC_LINE1_R) == 0))
+ {
+ psPowerInfo->abAnalog[4] |= MCB_PWM_LI;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ if(McDevProf_IsValid(eMCDRV_FUNC_LI2) == 1)
+ {
+ if((McResCtrl_IsSrcUsed(eMCDRV_SRC_LINE2_L) == 0)
+ && (McResCtrl_IsSrcUsed(eMCDRV_SRC_LINE2_M) == 0)
+ && (McResCtrl_IsSrcUsed(eMCDRV_SRC_LINE2_R) == 0))
+ {
+ /*psPowerInfo->abAnalog[4] |= MCB_PWM_LI2;*/
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ }
+ /* MC1 */
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_MIC1) == 0)
+ {
+ psPowerInfo->abAnalog[4] |= MCB_PWM_MC1;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* MC2 */
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_MIC2) == 0)
+ {
+ psPowerInfo->abAnalog[4] |= MCB_PWM_MC2;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ /* MC3 */
+ if(McResCtrl_IsSrcUsed(eMCDRV_SRC_MIC3) == 0)
+ {
+ psPowerInfo->abAnalog[4] |= MCB_PWM_MC3;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ if((gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) != MCDRV_SRC0_MIC1_ON)
+ {
+ psPowerInfo->abAnalog[3] |= MCB_PWM_MB1;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ if((gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) != MCDRV_SRC0_MIC2_ON)
+ {
+ psPowerInfo->abAnalog[3] |= MCB_PWM_MB2;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+ if((gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) != MCDRV_SRC0_MIC3_ON)
+ {
+ psPowerInfo->abAnalog[3] |= MCB_PWM_MB3;
+ }
+ else
+ {
+ bAnalogOn = 1;
+ }
+
+ /* VR/LDOA/REFA */
+ if ((0 == bAnalogOn) && ((bPowerMode & MCDRV_POWMODE_VREFON) == 0))
+ {
+ psPowerInfo->abAnalog[0] |= MCB_PWM_VR;
+ psPowerInfo->abAnalog[0] |= MCB_PWM_REFA;
+ psPowerInfo->abAnalog[0] |= MCB_PWM_LDOA;
+ }
+ else
+ {
+ if (MCDRV_LDO_OFF == gsGlobalInfo.sInitInfo.bLdo)
+ {
+ psPowerInfo->abAnalog[0] |= MCB_PWM_LDOA;
+ }
+ else
+ {
+ psPowerInfo->abAnalog[0] |= MCB_PWM_REFA;
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetPowerInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetPowerInfoRegAccess
+ *
+ * Description:
+ * Get power information to access register.
+ * Arguments:
+ * psRegInfo register information
+ * psPowerInfo power information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetPowerInfoRegAccess
+(
+ const MCDRV_REG_INFO* psRegInfo,
+ MCDRV_POWER_INFO* psPowerInfo
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetPowerInfoRegAccess");
+#endif
+
+
+ McResCtrl_GetPowerInfo(psPowerInfo);
+
+ switch(psRegInfo->bRegType)
+ {
+ default:
+ case MCDRV_REGTYPE_A:
+ case MCDRV_REGTYPE_B_BASE:
+ case MCDRV_REGTYPE_B_AE:
+ break;
+ case MCDRV_REGTYPE_B_ANALOG:
+ switch(psRegInfo->bAddress)
+ {
+ case MCI_APMOFF:
+ case MCI_HPVOL_L:
+ case MCI_HPVOL_R:
+ case MCI_SPVOL_L:
+ case MCI_SPVOL_R:
+ case MCI_RCVOL:
+ case MCI_HPL_MIX:
+ case MCI_HPL_MONO:
+ case MCI_HPR_MIX:
+ case MCI_SPL_MIX:
+ case MCI_SPL_MONO:
+ case MCI_SPR_MIX:
+ case MCI_SPR_MONO:
+ case MCI_RC_MIX:
+ psPowerInfo->abAnalog[0] &= (UINT8)~MCB_PWM_VR;
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case MCDRV_REGTYPE_B_CODEC:
+ switch(psRegInfo->bAddress)
+ {
+ case MCI_DPADIF:
+ case MCI_CD_HW_ID:
+ case MCI_PLL_RST:
+ case MCI_DIVR0:
+ case MCI_DIVF0:
+ case MCI_DIVR1:
+ case MCI_DIVF1:
+ case MCI_AD_AGC:
+ case MCI_DCCUTOFF:
+ case MCI_DCL:
+ break;
+ default:
+ if((psRegInfo->bAddress >= MCI_SYS_CEQ0_19_12) && (psRegInfo->bAddress <= MCI_SYS_CEQ4_3_0))
+ {
+ break;
+ }
+ psPowerInfo->dDigital &= ~(MCDRV_POWINFO_DIGITAL_DP0 | MCDRV_POWINFO_DIGITAL_DP1
+ | MCDRV_POWINFO_DIGITAL_DP2 | MCDRV_POWINFO_DIGITAL_PLLRST0 | MCDRV_POWINFO_DIGITAL_DPB);
+ break;
+ }
+ break;
+
+ case MCDRV_REGTYPE_B_MIXER:
+ switch(psRegInfo->bAddress)
+ {
+ case MCI_SWP:
+ case MCI_DIMODE0:
+ case MCI_DIMODE1:
+ case MCI_DIMODE2:
+ case MCI_DI_FS0:
+ case MCI_DI_FS1:
+ case MCI_DI_FS2:
+ case MCI_DI0_SRC:
+ case MCI_DI1_SRC:
+ case MCI_DI2_SRC:
+ case MCI_DIRSRC_RATE0_MSB:
+ case MCI_DIRSRC_RATE0_LSB:
+ case MCI_DIRSRC_RATE1_MSB:
+ case MCI_DIRSRC_RATE1_LSB:
+ case MCI_DIRSRC_RATE2_MSB:
+ case MCI_DIRSRC_RATE2_LSB:
+ case MCI_DIX0_FMT:
+ case MCI_DIX1_FMT:
+ case MCI_DIX2_FMT:
+ case MCI_DIR0_CH:
+ case MCI_DIR1_CH:
+ case MCI_DIR2_CH:
+ case MCI_DIT0_SLOT:
+ case MCI_DIT1_SLOT:
+ case MCI_DIT2_SLOT:
+ case MCI_HIZ_REDGE0:
+ case MCI_HIZ_REDGE1:
+ case MCI_HIZ_REDGE2:
+ case MCI_PCM_RX0:
+ case MCI_PCM_RX1:
+ case MCI_PCM_RX2:
+ case MCI_PCM_SLOT_RX0:
+ case MCI_PCM_SLOT_RX1:
+ case MCI_PCM_SLOT_RX2:
+ case MCI_PCM_TX0:
+ case MCI_PCM_TX1:
+ case MCI_PCM_TX2:
+ case MCI_PCM_SLOT_TX0:
+ case MCI_PCM_SLOT_TX1:
+ case MCI_PCM_SLOT_TX2:
+ case MCI_PDM_AGC:
+ case MCI_PDM_STWAIT:
+ break;
+ default:
+ psPowerInfo->dDigital &= ~(MCDRV_POWINFO_DIGITAL_DP0 | MCDRV_POWINFO_DIGITAL_DP1
+ | MCDRV_POWINFO_DIGITAL_DP2 | MCDRV_POWINFO_DIGITAL_PLLRST0 | MCDRV_POWINFO_DIGITAL_DPB);
+ break;
+ }
+ break;
+
+ case MCDRV_REGTYPE_B_CDSP:
+ break;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetPowerInfoRegAccess", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetCurPowerInfo
+ *
+ * Description:
+ * Get current power setting.
+ * Arguments:
+ * psPowerInfo power information
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_GetCurPowerInfo
+(
+ MCDRV_POWER_INFO* psPowerInfo
+)
+{
+ UINT8 bReg;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_GetCurPowerInfo");
+#endif
+
+
+ psPowerInfo->abAnalog[0] = gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_0];
+ psPowerInfo->abAnalog[1] = gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_1];
+ psPowerInfo->abAnalog[2] = gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_2];
+ psPowerInfo->abAnalog[3] = gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_3];
+ psPowerInfo->abAnalog[4] = gsGlobalInfo.abRegValB_ANA[MCI_PWM_ANALOG_4];
+
+ psPowerInfo->dDigital = 0;
+ bReg = gsGlobalInfo.abRegValB_CODEC[MCI_DPADIF];
+ if((bReg & (MCB_DP0_CLKI1|MCB_DP0_CLKI0)) == (MCB_DP0_CLKI1|MCB_DP0_CLKI0))
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DP0;
+ }
+ bReg = gsGlobalInfo.abRegValB_BASE[MCI_PWM_DIGITAL];
+ if((bReg & MCB_PWM_DP1) == MCB_PWM_DP1)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DP1;
+ }
+ if((bReg & MCB_PWM_DP2) == MCB_PWM_DP2)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DP2;
+ }
+
+ bReg = gsGlobalInfo.abRegValB_BASE[MCI_PWM_DIGITAL_1];
+ if((bReg & MCB_PWM_DPB) == MCB_PWM_DPB)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPB;
+ }
+ if((bReg & MCB_PWM_DPDI0) == MCB_PWM_DPDI0)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI0;
+ }
+ if((bReg & MCB_PWM_DPDI1) == MCB_PWM_DPDI1)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI1;
+ }
+ if((bReg & MCB_PWM_DPDI2) == MCB_PWM_DPDI2)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPDI2;
+ }
+ if((bReg & MCB_PWM_DPPDM) == MCB_PWM_DPPDM)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPPDM;
+ }
+
+ bReg = gsGlobalInfo.abRegValB_BASE[MCI_PWM_DIGITAL_BDSP];
+ if((bReg & MCB_PWM_DPBDSP) == MCB_PWM_DPBDSP)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPBDSP;
+ }
+
+ bReg = gsGlobalInfo.abRegValB_CODEC[MCI_PLL_RST];
+ if((bReg & MCB_PLLRST0) == MCB_PLLRST0)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_PLLRST0;
+ }
+
+ bReg = gsGlobalInfo.abRegValB_CODEC[MCI_DPADIF];
+ if((bReg & MCB_DPADIF) == MCB_DPADIF)
+ {
+ psPowerInfo->dDigital |= MCDRV_POWINFO_DIGITAL_DPADIF;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetCurPowerInfo", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_GetDACSource
+ *
+ * Description:
+ * Get DAC source information.
+ * Arguments:
+ * eCh 0:Master/1:Voice
+ * Return:
+ * path source(MCDRV_SRC_TYPE)
+ *
+ ****************************************************************************/
+MCDRV_SRC_TYPE McResCtrl_GetDACSource
+(
+ MCDRV_DAC_CH eCh
+)
+{
+ MCDRV_SRC_TYPE eSrcType = eMCDRV_SRC_NONE;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McResCtrl_GetDACSource");
+#endif
+
+
+ if((gsGlobalInfo.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ {
+ eSrcType = eMCDRV_SRC_PDM;
+ }
+ else if((gsGlobalInfo.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ {
+ eSrcType = eMCDRV_SRC_ADC0;
+ }
+ else if((gsGlobalInfo.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ {
+ eSrcType = eMCDRV_SRC_DIR0;
+ }
+ else if((gsGlobalInfo.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ {
+ eSrcType = eMCDRV_SRC_DIR1;
+ }
+ else if((gsGlobalInfo.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ {
+ eSrcType = eMCDRV_SRC_DIR2;
+ }
+ else if((gsGlobalInfo.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON)
+ {
+ eSrcType = eMCDRV_SRC_MIX;
+ }
+ else if((gsGlobalInfo.sPathInfo.asDac[eCh].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ {
+ eSrcType = McResCtrl_GetAESource();
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = eSrcType;
+ McDebugLog_FuncOut("McResCtrl_GetDACSource", &sdRet);
+#endif
+ return eSrcType;
+}
+
+/****************************************************************************
+ * McResCtrl_GetDITSource
+ *
+ * Description:
+ * Get DIT source information.
+ * Arguments:
+ * ePort port number
+ * Return:
+ * path source(MCDRV_SRC_TYPE)
+ *
+ ****************************************************************************/
+MCDRV_SRC_TYPE McResCtrl_GetDITSource
+(
+ MCDRV_DIO_PORT_NO ePort
+)
+{
+ MCDRV_SRC_TYPE eSrcType = eMCDRV_SRC_NONE;
+ MCDRV_CHANNEL* pasDit = NULL;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McResCtrl_GetDITSource");
+#endif
+
+ if(ePort == 0)
+ {
+ pasDit = &gsGlobalInfo.sPathInfo.asDit0[0];
+ }
+ else if(ePort == 1)
+ {
+ pasDit = &gsGlobalInfo.sPathInfo.asDit1[0];
+ }
+ else if(ePort == 2)
+ {
+ pasDit = &gsGlobalInfo.sPathInfo.asDit2[0];
+ }
+ else
+ {
+ }
+
+ if(pasDit != NULL)
+ {
+ if((pasDit->abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ {
+ eSrcType = eMCDRV_SRC_PDM;
+ }
+ else if((pasDit->abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ {
+ eSrcType = eMCDRV_SRC_ADC0;
+ }
+ else if((pasDit->abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ {
+ eSrcType = eMCDRV_SRC_DIR0;
+ }
+ else if((pasDit->abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ {
+ eSrcType = eMCDRV_SRC_DIR1;
+ }
+ else if((pasDit->abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ {
+ eSrcType = eMCDRV_SRC_DIR2;
+ }
+ else if((pasDit->abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON)
+ {
+ eSrcType = eMCDRV_SRC_MIX;
+ }
+ else if((pasDit->abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ {
+ eSrcType = McResCtrl_GetAESource();
+ }
+ else
+ {
+ }
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = eSrcType;
+ McDebugLog_FuncOut("McResCtrl_GetDITSource", &sdRet);
+#endif
+
+ return eSrcType;
+}
+
+/****************************************************************************
+ * McResCtrl_GetAESource
+ *
+ * Description:
+ * Get AE source information.
+ * Arguments:
+ * none
+ * Return:
+ * path source(MCDRV_SRC_TYPE)
+ *
+ ****************************************************************************/
+MCDRV_SRC_TYPE McResCtrl_GetAESource
+(
+ void
+)
+{
+ MCDRV_SRC_TYPE eSrcType = eMCDRV_SRC_NONE;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McResCtrl_GetAESource");
+#endif
+
+ if((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ {
+ eSrcType = eMCDRV_SRC_PDM;
+ }
+ else if((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ {
+ eSrcType = eMCDRV_SRC_ADC0;
+ }
+ else if((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ {
+ eSrcType = eMCDRV_SRC_DIR0;
+ }
+ else if((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ {
+ eSrcType = eMCDRV_SRC_DIR1;
+ }
+ else if((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ {
+ eSrcType = eMCDRV_SRC_DIR2;
+ }
+ else if((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON)
+ {
+ eSrcType = eMCDRV_SRC_MIX;
+ }
+ else
+ {
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = eSrcType;
+ McDebugLog_FuncOut("McResCtrl_GetAESource", &sdRet);
+#endif
+
+ return eSrcType;
+}
+
+/****************************************************************************
+ * McResCtrl_IsSrcUsed
+ *
+ * Description:
+ * Is Src used
+ * Arguments:
+ * ePathSrc path src type
+ * Return:
+ * 0:unused/1:used
+ *
+ ****************************************************************************/
+UINT8 McResCtrl_IsSrcUsed
+(
+ MCDRV_SRC_TYPE ePathSrc
+)
+{
+ UINT8 bUsed = 0;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McResCtrl_IsSrcUsed");
+#endif
+
+ switch(ePathSrc)
+ {
+ case eMCDRV_SRC_MIC1:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_MIC2:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_MIC3:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_LINE1_L:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_LINE1_R:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_LINE1_M:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_LINE2_L:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE2_L_BLOCK] & MCDRV_SRC2_LINE2_L_ON) == MCDRV_SRC2_LINE2_L_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_LINE2_R:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE2_R_BLOCK] & MCDRV_SRC2_LINE2_R_ON) == MCDRV_SRC2_LINE2_R_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_LINE2_M:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE2_M_BLOCK] & MCDRV_SRC2_LINE2_M_ON) == MCDRV_SRC2_LINE2_M_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_DIR0:
+ if(((gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ || ((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_DIR1:
+ if(((gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ || ((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_DIR2:
+ if(((gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ || ((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_DTMF:
+ break;
+
+ case eMCDRV_SRC_PDM:
+ if(((gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ || ((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_ADC0:
+ if(((gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ || ((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_ADC1:
+ break;
+
+ case eMCDRV_SRC_DAC_L:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_DAC_R:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_DAC_M:
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_AE:
+ if(((gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_CDSP:
+ break;
+
+ case eMCDRV_SRC_MIX:
+ if(((gsGlobalInfo.sPathInfo.asDit0[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit1[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON)
+ || ((gsGlobalInfo.sPathInfo.asDit2[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON)
+ || ((gsGlobalInfo.sPathInfo.asDac[1].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON)
+ || ((gsGlobalInfo.sPathInfo.asAe[0].abSrcOnOff[MCDRV_SRC_MIX_BLOCK] & MCDRV_SRC6_MIX_ON) == MCDRV_SRC6_MIX_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_SRC_DIR2_DIRECT:
+ break;
+
+ case eMCDRV_SRC_CDSP_DIRECT:
+ break;
+
+ default:
+ break;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bUsed;
+ McDebugLog_FuncOut("McResCtrl_IsSrcUsed", &sdRet);
+#endif
+
+ return bUsed;
+}
+
+/****************************************************************************
+ * McResCtrl_IsDstUsed
+ *
+ * Description:
+ * Is Destination used
+ * Arguments:
+ * eType path destination
+ * eCh channel
+ * Return:
+ * 0:unused/1:used
+ *
+ ****************************************************************************/
+UINT8 McResCtrl_IsDstUsed
+(
+ MCDRV_DST_TYPE eType,
+ MCDRV_DST_CH eCh
+)
+{
+ UINT8 bUsed = 0;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McResCtrl_IsDstUsed");
+#endif
+
+ switch(eType)
+ {
+ case eMCDRV_DST_HP:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else if(eCh == eMCDRV_DST_CH1)
+ {
+ if(((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asHpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_SP:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else if(eCh == eMCDRV_DST_CH1)
+ {
+ if(((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asSpOut[1].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_RCV:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asRcOut[0].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) ==MCDRV_SRC5_DAC_R_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_LOUT1:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else if(eCh == eMCDRV_DST_CH1)
+ {
+ if(((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout1[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_LOUT2:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_L_BLOCK] & MCDRV_SRC5_DAC_L_ON) == MCDRV_SRC5_DAC_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[0].abSrcOnOff[MCDRV_SRC_DAC_M_BLOCK] & MCDRV_SRC5_DAC_M_ON) == MCDRV_SRC5_DAC_M_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else if(eCh == eMCDRV_DST_CH1)
+ {
+ if(((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asLout2[1].abSrcOnOff[MCDRV_SRC_DAC_R_BLOCK] & MCDRV_SRC5_DAC_R_ON) == MCDRV_SRC5_DAC_R_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_PEAK:
+ break;
+
+ case eMCDRV_DST_DIT0:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_0) != eMCDRV_SRC_NONE)
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_DIT1:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_1) != eMCDRV_SRC_NONE)
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_DIT2:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(McResCtrl_GetDITSource(eMCDRV_DIO_2) != eMCDRV_SRC_NONE)
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_DAC:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(McResCtrl_GetDACSource(eMCDRV_DAC_MASTER) != eMCDRV_SRC_NONE)
+ {
+ bUsed = 1;
+ }
+ }
+ else if(eCh == eMCDRV_DST_CH1)
+ {
+ if(McResCtrl_GetDACSource(eMCDRV_DAC_VOICE) != eMCDRV_SRC_NONE)
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_AE:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(McResCtrl_GetAESource() != eMCDRV_SRC_NONE)
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_CDSP:
+ break;
+
+ case eMCDRV_DST_ADC0:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else if(eCh == eMCDRV_DST_CH1)
+ {
+ if(((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_R_BLOCK] & MCDRV_SRC1_LINE1_R_ON) == MCDRV_SRC1_LINE1_R_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc0[1].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ case eMCDRV_DST_ADC1:
+ if(McDevProf_IsValid(eMCDRV_FUNC_ADC1) == 1)
+ {
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(((gsGlobalInfo.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_LINE1_L_BLOCK] & MCDRV_SRC1_LINE1_L_ON) == MCDRV_SRC1_LINE1_L_ON)
+ || ((gsGlobalInfo.sPathInfo.asAdc1[0].abSrcOnOff[MCDRV_SRC_LINE1_M_BLOCK] & MCDRV_SRC1_LINE1_M_ON) == MCDRV_SRC1_LINE1_M_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ }
+ break;
+
+ case eMCDRV_DST_MIX:
+ if(eCh != 0)
+ {
+ break;
+ }
+ if(((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_PDM_BLOCK] & MCDRV_SRC4_PDM_ON) == MCDRV_SRC4_PDM_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_ADC0_BLOCK] & MCDRV_SRC4_ADC0_ON) == MCDRV_SRC4_ADC0_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR0_BLOCK] & MCDRV_SRC3_DIR0_ON) == MCDRV_SRC3_DIR0_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR1_BLOCK] & MCDRV_SRC3_DIR1_ON) == MCDRV_SRC3_DIR1_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_DIR2_BLOCK] & MCDRV_SRC3_DIR2_ON) == MCDRV_SRC3_DIR2_ON)
+ || ((gsGlobalInfo.sPathInfo.asMix[0].abSrcOnOff[MCDRV_SRC_AE_BLOCK] & MCDRV_SRC6_AE_ON) == MCDRV_SRC6_AE_ON))
+ {
+ bUsed = 1;
+ }
+ break;
+
+ case eMCDRV_DST_BIAS:
+ if(eCh == eMCDRV_DST_CH0)
+ {
+ if(((gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC1_BLOCK] & MCDRV_SRC0_MIC1_ON) == MCDRV_SRC0_MIC1_ON)
+ || ((gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC2_BLOCK] & MCDRV_SRC0_MIC2_ON) == MCDRV_SRC0_MIC2_ON)
+ || ((gsGlobalInfo.sPathInfo.asBias[0].abSrcOnOff[MCDRV_SRC_MIC3_BLOCK] & MCDRV_SRC0_MIC3_ON) == MCDRV_SRC0_MIC3_ON))
+ {
+ bUsed = 1;
+ }
+ }
+ else
+ {
+ }
+ break;
+
+ default:
+ break;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bUsed;
+ McDebugLog_FuncOut("McResCtrl_IsDstUsed", &sdRet);
+#endif
+
+ return bUsed;
+}
+
+/****************************************************************************
+ * McResCtrl_GetRegAccess
+ *
+ * Description:
+ * Get register access availability
+ * Arguments:
+ * psRegInfo register information
+ * Return:
+ * MCDRV_REG_ACCSESS
+ *
+ ****************************************************************************/
+MCDRV_REG_ACCSESS McResCtrl_GetRegAccess
+(
+ const MCDRV_REG_INFO* psRegInfo
+)
+{
+ MCDRV_REG_ACCSESS eAccess = eMCDRV_ACCESS_DENY;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McResCtrl_GetRegAccess");
+#endif
+
+ switch(psRegInfo->bRegType)
+ {
+ case MCDRV_REGTYPE_A:
+ eAccess = gawRegAccessAvailableA[psRegInfo->bAddress];
+ break;
+ case MCDRV_REGTYPE_B_BASE:
+ eAccess = gawRegAccessAvailableB_BASE[psRegInfo->bAddress];
+ break;
+ case MCDRV_REGTYPE_B_ANALOG:
+ eAccess = gawRegAccessAvailableB_ANA[psRegInfo->bAddress];
+ break;
+ case MCDRV_REGTYPE_B_CODEC:
+ eAccess = gawRegAccessAvailableB_CODEC[psRegInfo->bAddress];
+ break;
+ case MCDRV_REGTYPE_B_MIXER:
+ eAccess = gawRegAccessAvailableB_MIX[psRegInfo->bAddress];
+ break;
+ case MCDRV_REGTYPE_B_AE:
+ eAccess = gawRegAccessAvailableB_AE[psRegInfo->bAddress];
+ break;
+ default:
+ break;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = eAccess;
+ McDebugLog_FuncOut("McResCtrl_GetRegAccess", &sdRet);
+#endif
+
+ return eAccess;
+}
+
+/****************************************************************************
+ * McResCtrl_GetAPMode
+ *
+ * Description:
+ * get auto power management mode.
+ * Arguments:
+ * none
+ * Return:
+ * eMCDRV_APM_ON
+ * eMCDRV_APM_OFF
+ *
+ ****************************************************************************/
+MCDRV_PMODE McResCtrl_GetAPMode
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet = gsGlobalInfo.eAPMode;
+ McDebugLog_FuncIn("McResCtrl_GetAPMode");
+#endif
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_GetAPMode", &sdRet);
+#endif
+
+ return gsGlobalInfo.eAPMode;
+}
+
+
+/****************************************************************************
+ * McResCtrl_AllocPacketBuf
+ *
+ * Description:
+ * allocate the buffer for register setting packets.
+ * Arguments:
+ * none
+ * Return:
+ * pointer to the area to store packets
+ *
+ ****************************************************************************/
+MCDRV_PACKET* McResCtrl_AllocPacketBuf
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McResCtrl_AllocPacketBuf");
+#endif
+
+ if(eMCDRV_PACKETBUF_ALLOCATED == gsGlobalInfo.ePacketBufAlloc)
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = 0;
+ McDebugLog_FuncOut("McResCtrl_AllocPacketBuf", &sdRet);
+ #endif
+ return NULL;
+ }
+
+ gsGlobalInfo.ePacketBufAlloc = eMCDRV_PACKETBUF_ALLOCATED;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AllocPacketBuf", 0);
+#endif
+ return gasPacket;
+}
+
+/****************************************************************************
+ * McResCtrl_ReleasePacketBuf
+ *
+ * Description:
+ * Release the buffer for register setting packets.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_ReleasePacketBuf
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_ReleasePacketBuf");
+#endif
+
+ gsGlobalInfo.ePacketBufAlloc = eMCDRV_PACKETBUF_FREE;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_ReleasePacketBuf", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_InitRegUpdate
+ *
+ * Description:
+ * Initialize the process of register update.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_InitRegUpdate
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_InitRegUpdate");
+#endif
+
+ gsGlobalInfo.sCtrlPacket.wDataNum = 0;
+ gsGlobalInfo.wCurSlaveAddress = 0xFFFF;
+ gsGlobalInfo.wCurRegType = 0xFFFF;
+ gsGlobalInfo.wCurRegAddress = 0xFFFF;
+ gsGlobalInfo.wDataContinueCount = 0;
+ gsGlobalInfo.wPrevAddressIndex = 0;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_InitRegUpdate", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_AddRegUpdate
+ *
+ * Description:
+ * Add register update packet and save register value.
+ * Arguments:
+ * wRegType register type
+ * wAddress address
+ * bData write data
+ * eUpdateMode updete mode
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_AddRegUpdate
+(
+ UINT16 wRegType,
+ UINT16 wAddress,
+ UINT8 bData,
+ MCDRV_UPDATE_MODE eUpdateMode
+)
+{
+ UINT8 *pbRegVal;
+ UINT8 bAddressADR;
+ UINT8 bAddressWINDOW;
+ UINT8 *pbCtrlData;
+ UINT16 *pwCtrlDataNum;
+ const UINT16 *pwNextAddress;
+ UINT16 wNextAddress;
+ UINT16 wSlaveAddress;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_AddRegUpdate");
+#endif
+
+ switch (wRegType)
+ {
+ case MCDRV_PACKET_REGTYPE_A:
+ wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ pbRegVal = gsGlobalInfo.abRegValA;
+ pwNextAddress = gawNextAddressA;
+ bAddressADR = (UINT8)wAddress;
+ bAddressWINDOW = bAddressADR;
+ if(MCDRV_A_REG_NUM <= wAddress)
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AddRegUpdate", 0);
+ #endif
+ return;
+ }
+ break;
+
+ case MCDRV_PACKET_REGTYPE_B_BASE:
+ wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ pbRegVal = gsGlobalInfo.abRegValB_BASE;
+ pwNextAddress = gawNextAddressB_BASE;
+ bAddressADR = MCI_BASE_ADR;
+ bAddressWINDOW = MCI_BASE_WINDOW;
+ if(MCDRV_B_BASE_REG_NUM <= wAddress)
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AddRegUpdate", 0);
+ #endif
+ return;
+ }
+ break;
+
+ case MCDRV_PACKET_REGTYPE_B_CODEC:
+ wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ pbRegVal = gsGlobalInfo.abRegValB_CODEC;
+ pwNextAddress = gawNextAddressB_CODEC;
+ bAddressADR = MCI_CD_ADR;
+ bAddressWINDOW = MCI_CD_WINDOW;
+ if(MCDRV_B_CODEC_REG_NUM <= wAddress)
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AddRegUpdate", 0);
+ #endif
+ return;
+ }
+ break;
+
+ case MCDRV_PACKET_REGTYPE_B_ANA:
+ wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA);
+ pbRegVal = gsGlobalInfo.abRegValB_ANA;
+ pwNextAddress = gawNextAddressB_Ana;
+ bAddressADR = MCI_ANA_ADR;
+ bAddressWINDOW = MCI_ANA_WINDOW;
+ if(MCDRV_B_ANA_REG_NUM <= wAddress)
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AddRegUpdate", 0);
+ #endif
+ return;
+ }
+ break;
+
+ case MCDRV_PACKET_REGTYPE_B_MIXER:
+ wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ pbRegVal = gsGlobalInfo.abRegValB_MIXER;
+ pwNextAddress = gawNextAddressB_MIXER;
+ bAddressADR = MCI_MIX_ADR;
+ bAddressWINDOW = MCI_MIX_WINDOW;
+ if(MCDRV_B_MIXER_REG_NUM <= wAddress)
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AddRegUpdate", 0);
+ #endif
+ return;
+ }
+ break;
+
+ case MCDRV_PACKET_REGTYPE_B_AE:
+ wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ pbRegVal = gsGlobalInfo.abRegValB_AE;
+ pwNextAddress = gawNextAddressB_AE;
+ bAddressADR = MCI_AE_ADR;
+ bAddressWINDOW = MCI_AE_WINDOW;
+ if(MCDRV_B_AE_REG_NUM <= wAddress)
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AddRegUpdate", 0);
+ #endif
+ return;
+ }
+ break;
+
+ case MCDRV_PACKET_REGTYPE_B_CDSP:
+ wSlaveAddress = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ pbRegVal = gsGlobalInfo.abRegValB_CDSP;
+ pwNextAddress = gawNextAddressB_CDSP;
+ bAddressADR = MCI_CDSP_ADR;
+ bAddressWINDOW = MCI_CDSP_WINDOW;
+ if(MCDRV_B_CDSP_REG_NUM <= wAddress)
+ {
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AddRegUpdate", 0);
+ #endif
+ return;
+ }
+ break;
+
+ default:
+ #if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AddRegUpdate", 0);
+ #endif
+ return;
+ }
+
+ if((gsGlobalInfo.wCurSlaveAddress != 0xFFFF) && (gsGlobalInfo.wCurSlaveAddress != wSlaveAddress))
+ {
+ McResCtrl_ExecuteRegUpdate();
+ McResCtrl_InitRegUpdate();
+ }
+
+ if((gsGlobalInfo.wCurRegType != 0xFFFF) && (gsGlobalInfo.wCurRegType != wRegType))
+ {
+ McResCtrl_ExecuteRegUpdate();
+ McResCtrl_InitRegUpdate();
+ }
+
+ if((eMCDRV_UPDATE_FORCE == eUpdateMode) || (bData != pbRegVal[wAddress]))
+ {
+ if(gsGlobalInfo.wCurRegAddress == 0xFFFF)
+ {
+ gsGlobalInfo.wCurRegAddress = wAddress;
+ }
+
+ if (eMCDRV_UPDATE_DUMMY != eUpdateMode)
+ {
+ pbCtrlData = gsGlobalInfo.sCtrlPacket.abData;
+ pwCtrlDataNum = &(gsGlobalInfo.sCtrlPacket.wDataNum);
+ wNextAddress = pwNextAddress[gsGlobalInfo.wCurRegAddress];
+
+ if ((wSlaveAddress == gsGlobalInfo.wCurSlaveAddress)
+ && (wRegType == gsGlobalInfo.wCurRegType)
+ && (0xFFFF != wNextAddress)
+ && (wAddress != wNextAddress))
+ {
+ if (pwNextAddress[wNextAddress] == wAddress)
+ {
+ if (0 == gsGlobalInfo.wDataContinueCount)
+ {
+ pbCtrlData[gsGlobalInfo.wPrevAddressIndex] |= MCDRV_BURST_WRITE_ENABLE;
+ }
+ pbCtrlData[*pwCtrlDataNum] = pbRegVal[wNextAddress];
+ (*pwCtrlDataNum)++;
+ gsGlobalInfo.wDataContinueCount++;
+ wNextAddress = pwNextAddress[wNextAddress];
+ }
+ else if ((0xFFFF != pwNextAddress[wNextAddress])
+ && (pwNextAddress[pwNextAddress[wNextAddress]] == wAddress))
+ {
+ if (0 == gsGlobalInfo.wDataContinueCount)
+ {
+ pbCtrlData[gsGlobalInfo.wPrevAddressIndex] |= MCDRV_BURST_WRITE_ENABLE;
+ }
+ pbCtrlData[*pwCtrlDataNum] = pbRegVal[wNextAddress];
+ (*pwCtrlDataNum)++;
+ pbCtrlData[*pwCtrlDataNum] = pbRegVal[pwNextAddress[wNextAddress]];
+ (*pwCtrlDataNum)++;
+ gsGlobalInfo.wDataContinueCount += 2;
+ wNextAddress = pwNextAddress[pwNextAddress[wNextAddress]];
+ }
+ else
+ {
+ }
+ }
+
+ if ((0 == *pwCtrlDataNum) || (wAddress != wNextAddress))
+ {
+ if (0 != gsGlobalInfo.wDataContinueCount)
+ {
+ McResCtrl_ExecuteRegUpdate();
+ McResCtrl_InitRegUpdate();
+ }
+
+ if (MCDRV_PACKET_REGTYPE_A == (UINT32)wRegType)
+ {
+ pbCtrlData[*pwCtrlDataNum] = (bAddressADR << 1);
+ gsGlobalInfo.wPrevAddressIndex = *pwCtrlDataNum;
+ (*pwCtrlDataNum)++;
+ }
+ else
+ {
+ pbCtrlData[(*pwCtrlDataNum)++] = (bAddressADR << 1);
+ pbCtrlData[(*pwCtrlDataNum)++] = (UINT8)wAddress;
+ pbCtrlData[*pwCtrlDataNum] = (bAddressWINDOW << 1);
+ gsGlobalInfo.wPrevAddressIndex = (*pwCtrlDataNum)++;
+ }
+ }
+ else
+ {
+ if (0 == gsGlobalInfo.wDataContinueCount)
+ {
+ pbCtrlData[gsGlobalInfo.wPrevAddressIndex] |= MCDRV_BURST_WRITE_ENABLE;
+ }
+ gsGlobalInfo.wDataContinueCount++;
+ }
+
+ pbCtrlData[(*pwCtrlDataNum)++] = bData;
+ }
+
+ gsGlobalInfo.wCurSlaveAddress = wSlaveAddress;
+ gsGlobalInfo.wCurRegType = wRegType;
+ gsGlobalInfo.wCurRegAddress = wAddress;
+
+ /* save register value */
+ pbRegVal[wAddress] = bData;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_AddRegUpdate", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_ExecuteRegUpdate
+ *
+ * Description:
+ * Add register update packet and save register value.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McResCtrl_ExecuteRegUpdate
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_ExecuteRegUpdate");
+#endif
+
+ if (0 != gsGlobalInfo.sCtrlPacket.wDataNum)
+ {
+ McSrv_WriteI2C((UINT8)gsGlobalInfo.wCurSlaveAddress, gsGlobalInfo.sCtrlPacket.abData, gsGlobalInfo.sCtrlPacket.wDataNum);
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_ExecuteRegUpdate", 0);
+#endif
+}
+
+/****************************************************************************
+ * McResCtrl_WaitEvent
+ *
+ * Description:
+ * Wait event.
+ * Arguments:
+ * dEvent event to wait
+ * dParam event parameter
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+SINT32 McResCtrl_WaitEvent
+(
+ UINT32 dEvent,
+ UINT32 dParam
+)
+{
+ SINT32 sdRet = MCDRV_SUCCESS;
+ UINT32 dInterval;
+ UINT32 dTimeOut;
+ UINT8 bSlaveAddr;
+ UINT8 abWriteData[2];
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McResCtrl_WaitEvent");
+#endif
+
+
+ switch(dEvent)
+ {
+ case MCDRV_EVT_INSFLG:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ if((dParam>>8) != (UINT32)0)
+ {
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DAC_INS_FLAG;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, MCI_MIX_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ }
+ else if((dParam&(UINT32)0xFF) != (UINT32)0)
+ {
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_INS_FLAG;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (UINT8)(dParam&(UINT32)0xFF), dInterval, dTimeOut);
+ }
+ else
+ {
+ }
+ break;
+
+ case MCDRV_EVT_ALLMUTE:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DIT_INVFLAGL;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_DIT0_INVFLAGL|MCB_DIT1_INVFLAGL|MCB_DIT2_INVFLAGL), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DIT_INVFLAGR;
+ McSrv_WriteI2C(McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG), abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_DIT0_INVFLAGR|MCB_DIT1_INVFLAGR|MCB_DIT2_INVFLAGR), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DIR_VFLAGL;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_PDM0_VFLAGL|MCB_DIR0_VFLAGL|MCB_DIR1_VFLAGL|MCB_DIR2_VFLAGL), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DIR_VFLAGR;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_PDM0_VFLAGR|MCB_DIR0_VFLAGR|MCB_DIR1_VFLAGR|MCB_DIR2_VFLAGR), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_AD_VFLAGL;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_ADC_VFLAGL|MCB_AENG6_VFLAGL), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_AD_VFLAGR;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_ADC_VFLAGR|MCB_AENG6_VFLAGR), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_AFLAGL;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_ADC_AFLAGL|MCB_DIR0_AFLAGL|MCB_DIR1_AFLAGL|MCB_DIR2_AFLAGL), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_AFLAGR;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_ADC_AFLAGR|MCB_DIR0_AFLAGR|MCB_DIR1_AFLAGR|MCB_DIR2_AFLAGR), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DAC_FLAGL;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_ST_FLAGL|MCB_MASTER_OFLAGL|MCB_VOICE_FLAGL|MCB_DAC_FLAGL), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DAC_FLAGR;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (MCB_ST_FLAGR|MCB_MASTER_OFLAGR|MCB_VOICE_FLAGR|MCB_DAC_FLAGR), dInterval, dTimeOut);
+ break;
+
+ case MCDRV_EVT_DITMUTE:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ if((dParam>>8) != (UINT32)0)
+ {
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DIT_INVFLAGL;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ }
+ if((dParam&(UINT32)0xFF) != (UINT32)0)
+ {
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DIT_INVFLAGR;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (UINT8)(dParam&(UINT32)0xFF), dInterval, dTimeOut);
+ }
+ break;
+
+ case MCDRV_EVT_DACMUTE:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ if((dParam>>8) != (UINT32)0)
+ {
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DAC_FLAGL;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ }
+ if((dParam&(UINT32)0xFF) != (UINT32)0)
+ {
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_DAC_FLAGR;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, (UINT8)(dParam&(UINT32)0xFF), dInterval, dTimeOut);
+ }
+ break;
+
+ case MCDRV_EVT_SVOL_DONE:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA);
+ if((dParam>>8) != (UINT32)0)
+ {
+ abWriteData[0] = MCI_ANA_ADR<<1;
+ abWriteData[1] = MCI_BUSY1;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_ANA_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ }
+ if((dParam&(UINT32)0xFF) != (UINT32)0)
+ {
+ abWriteData[0] = MCI_ANA_ADR<<1;
+ abWriteData[1] = MCI_BUSY2;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_ANA_WINDOW, (UINT8)(dParam&(UINT8)0xFF), dInterval, dTimeOut);
+ }
+ break;
+
+ case MCDRV_EVT_APM_DONE:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA);
+ abWriteData[0] = MCI_ANA_ADR<<1;
+ abWriteData[1] = MCI_AP_A1;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitSet(bSlaveAddr, (UINT16)MCI_ANA_WINDOW, (UINT8)(dParam>>8), dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[0] = MCI_ANA_ADR<<1;
+ abWriteData[1] = MCI_AP_A2;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitSet(bSlaveAddr, (UINT16)MCI_ANA_WINDOW, (UINT8)(dParam&(UINT8)0xFF), dInterval, dTimeOut);
+ break;
+
+ case MCDRV_EVT_ANA_RDY:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dAnaRdyInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dAnaRdyTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_ANA);
+ abWriteData[0] = MCI_ANA_ADR<<1;
+ abWriteData[1] = MCI_RDY_FLAG;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitSet(bSlaveAddr, (UINT16)MCI_ANA_WINDOW, (UINT8)dParam, dInterval, dTimeOut);
+ break;
+
+ case MCDRV_EVT_SYSEQ_FLAG_RESET:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ abWriteData[0] = MCI_CD_ADR<<1;
+ abWriteData[1] = MCI_SYSTEM_EQON;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_CD_WINDOW, MCB_SYSEQ_FLAG, dInterval, dTimeOut);
+ break;
+
+ case MCDRV_EVT_CLKBUSY_RESET:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ abWriteData[0] = MCI_CD_ADR<<1;
+ abWriteData[1] = MCI_DPADIF;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_CD_WINDOW, MCB_CLKBUSY, dInterval, dTimeOut);
+ break;
+
+ case MCDRV_EVT_CLKSRC_SET:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ abWriteData[0] = MCI_CD_ADR<<1;
+ abWriteData[1] = MCI_DPADIF;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitSet(bSlaveAddr, (UINT16)MCI_CD_WINDOW, MCB_CLKSRC, dInterval, dTimeOut);
+ break;
+
+ case MCDRV_EVT_CLKSRC_RESET:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ abWriteData[0] = MCI_CD_ADR<<1;
+ abWriteData[1] = MCI_DPADIF;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_CD_WINDOW, MCB_CLKSRC, dInterval, dTimeOut);
+ break;
+
+ case MCDRV_EVT_ADCMUTE:
+ dInterval = gsGlobalInfo.sInitInfo.sWaitTime.dSvolInterval;
+ dTimeOut = gsGlobalInfo.sInitInfo.sWaitTime.dSvolTimeOut;
+ bSlaveAddr = McDevProf_GetSlaveAddr(eMCDRV_SLAVE_ADDR_DIG);
+ abWriteData[0] = MCI_MIX_ADR<<1;
+ abWriteData[1] = MCI_AD_VFLAGL;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, MCB_ADC_VFLAGL, dInterval, dTimeOut);
+ if(MCDRV_SUCCESS != sdRet)
+ {
+ break;
+ }
+ abWriteData[1] = MCI_AD_VFLAGR;
+ McSrv_WriteI2C(bSlaveAddr, abWriteData, 2);
+ sdRet = WaitBitRelease(bSlaveAddr, (UINT16)MCI_MIX_WINDOW, MCB_ADC_VFLAGR, dInterval, dTimeOut);
+ break;
+
+
+ default:
+ sdRet = MCDRV_ERROR_ARGUMENT;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McResCtrl_WaitEvent", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * WaitBitSet
+ *
+ * Description:
+ * Wait register bit to set.
+ * Arguments:
+ * bSlaveAddr slave address
+ * wRegAddr register address
+ * bBit bit
+ * dCycleTime cycle time to poll [us]
+ * dTimeOut number of read cycles for time out
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+static SINT32 WaitBitSet
+(
+ UINT8 bSlaveAddr,
+ UINT16 wRegAddr,
+ UINT8 bBit,
+ UINT32 dCycleTime,
+ UINT32 dTimeOut
+)
+{
+ UINT8 bData;
+ UINT32 dCycles;
+ SINT32 sdRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("WaitBitSet");
+#endif
+
+
+ dCycles = 0;
+ sdRet = MCDRV_ERROR_TIMEOUT;
+
+ while(dCycles < dTimeOut)
+ {
+ bData = McSrv_ReadI2C(bSlaveAddr, wRegAddr);
+ if((bData & bBit) == bBit)
+ {
+ sdRet = MCDRV_SUCCESS;
+ break;
+ }
+
+ McSrv_Sleep(dCycleTime);
+ dCycles++;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("WaitBitSet", &sdRet);
+#endif
+
+ return sdRet;
+}
+
+/****************************************************************************
+ * WaitBitRelease
+ *
+ * Description:
+ * Wait register bit to release.
+ * Arguments:
+ * bSlaveAddr slave address
+ * wRegAddr register address
+ * bBit bit
+ * dCycleTime cycle time to poll [us]
+ * dTimeOut number of read cycles for time out
+ * Return:
+ * MCDRV_SUCCESS
+ * MCDRV_ERROR_TIMEOUT
+ *
+ ****************************************************************************/
+static SINT32 WaitBitRelease
+(
+ UINT8 bSlaveAddr,
+ UINT16 wRegAddr,
+ UINT8 bBit,
+ UINT32 dCycleTime,
+ UINT32 dTimeOut
+)
+{
+ UINT8 bData;
+ UINT32 dCycles;
+ SINT32 sdRet;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("WaitBitRelease");
+#endif
+
+
+ dCycles = 0;
+ sdRet = MCDRV_ERROR_TIMEOUT;
+
+ while(dCycles < dTimeOut)
+ {
+ bData = McSrv_ReadI2C(bSlaveAddr, wRegAddr);
+ if(0 == (bData & bBit))
+ {
+ sdRet = MCDRV_SUCCESS;
+ break;
+ }
+
+ McSrv_Sleep(dCycleTime);
+ dCycles++;
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("WaitBitRelease", &sdRet);
+#endif
+
+ return sdRet;
+}
+
diff --git a/sound/soc/codecs/mc1n2/mcresctrl.h b/sound/soc/codecs/mc1n2/mcresctrl.h new file mode 100644 index 0000000..05558a9 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcresctrl.h @@ -0,0 +1,263 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcresctrl.h
+ *
+ * Description : MC Driver resource control header
+ *
+ * Version : 1.0.0 2010.09.01
+ *
+ ****************************************************************************/
+
+#ifndef _MCRESCTRL_H_
+#define _MCRESCTRL_H_
+
+#include "mcdevif.h"
+#include "mcpacking.h"
+
+/* HW_ID */
+#define MCDRV_HWID_AA (0x78)
+#define MCDRV_HWID_AB (0x79)
+
+#define MCDRV_BURST_WRITE_ENABLE (0x01)
+
+/* eState setting */
+typedef enum _MCDRV_STATE
+{
+ eMCDRV_STATE_NOTINIT,
+ eMCDRV_STATE_READY
+} MCDRV_STATE;
+
+/* volume setting */
+#define MCDRV_LOGICAL_VOL_MUTE (-24576) /* -96dB */
+#define MCDRV_LOGICAL_MICGAIN_DEF (3840) /* 15dB */
+#define MCDRV_LOGICAL_HPGAIN_DEF (0) /* 0dB */
+
+#define MCDRV_VOLUPDATE_ALL (0xFFFFFFFFUL)
+#define MCDRV_VOLUPDATE_ANAOUT_ALL (0x00000001UL)
+
+#define MCDRV_REG_MUTE (0x00)
+
+/* DAC source setting */
+typedef enum _MCDRV_DAC_CH
+{
+ eMCDRV_DAC_MASTER = 0,
+ eMCDRV_DAC_VOICE
+} MCDRV_DAC_CH;
+
+/* DIO port setting */
+typedef enum _MCDRV_DIO_PORT_NO
+{
+ eMCDRV_DIO_0 = 0,
+ eMCDRV_DIO_1,
+ eMCDRV_DIO_2
+} MCDRV_DIO_PORT_NO;
+
+/* Path source setting */
+typedef enum _MCDRV_SRC_TYPE
+{
+ eMCDRV_SRC_NONE = (0),
+ eMCDRV_SRC_MIC1 = (1<<0),
+ eMCDRV_SRC_MIC2 = (1<<1),
+ eMCDRV_SRC_MIC3 = (1<<2),
+ eMCDRV_SRC_LINE1_L = (1<<3),
+ eMCDRV_SRC_LINE1_R = (1<<4),
+ eMCDRV_SRC_LINE1_M = (1<<5),
+ eMCDRV_SRC_LINE2_L = (1<<6),
+ eMCDRV_SRC_LINE2_R = (1<<7),
+ eMCDRV_SRC_LINE2_M = (1<<8),
+ eMCDRV_SRC_DIR0 = (1<<9),
+ eMCDRV_SRC_DIR1 = (1<<10),
+ eMCDRV_SRC_DIR2 = (1<<11),
+ eMCDRV_SRC_DTMF = (1<<12),
+ eMCDRV_SRC_PDM = (1<<13),
+ eMCDRV_SRC_ADC0 = (1<<14),
+ eMCDRV_SRC_ADC1 = (1<<15),
+ eMCDRV_SRC_DAC_L = (1<<16),
+ eMCDRV_SRC_DAC_R = (1<<17),
+ eMCDRV_SRC_DAC_M = (1<<18),
+ eMCDRV_SRC_AE = (1<<19),
+ eMCDRV_SRC_CDSP = (1<<20),
+ eMCDRV_SRC_MIX = (1<<21),
+ eMCDRV_SRC_DIR2_DIRECT = (1<<22),
+ eMCDRV_SRC_CDSP_DIRECT = (1<<23)
+} MCDRV_SRC_TYPE;
+
+/* Path destination setting */
+typedef enum _MCDRV_DST_CH
+{
+ eMCDRV_DST_CH0 = 0,
+ eMCDRV_DST_CH1
+} MCDRV_DST_CH;
+typedef enum _MCDRV_DST_TYPE
+{
+ eMCDRV_DST_HP = 0,
+ eMCDRV_DST_SP,
+ eMCDRV_DST_RCV,
+ eMCDRV_DST_LOUT1,
+ eMCDRV_DST_LOUT2,
+ eMCDRV_DST_PEAK,
+ eMCDRV_DST_DIT0,
+ eMCDRV_DST_DIT1,
+ eMCDRV_DST_DIT2,
+ eMCDRV_DST_DAC,
+ eMCDRV_DST_AE,
+ eMCDRV_DST_CDSP,
+ eMCDRV_DST_ADC0,
+ eMCDRV_DST_ADC1,
+ eMCDRV_DST_MIX,
+ eMCDRV_DST_BIAS
+} MCDRV_DST_TYPE;
+
+/* Register accsess availability */
+typedef enum _MCDRV_REG_ACCSESS
+{
+ eMCDRV_ACCESS_DENY = 0,
+ eMCDRV_READ_ONLY = 0x01,
+ eMCDRV_WRITE_ONLY = 0x02,
+ eMCDRV_READ_WRITE = eMCDRV_READ_ONLY | eMCDRV_WRITE_ONLY
+} MCDRV_REG_ACCSESS;
+
+
+/* UpdateReg parameter */
+typedef enum _MCDRV_UPDATE_MODE
+{
+ eMCDRV_UPDATE_NORMAL,
+ eMCDRV_UPDATE_FORCE,
+ eMCDRV_UPDATE_DUMMY
+} MCDRV_UPDATE_MODE;
+
+/* ePacketBufAlloc setting */
+typedef enum _MCDRV_PACKETBUF_ALLOC
+{
+ eMCDRV_PACKETBUF_FREE,
+ eMCDRV_PACKETBUF_ALLOCATED
+} MCDRV_PACKETBUF_ALLOC;
+
+/* power management sequence mode */
+typedef enum _MCDRV_PMODE
+{
+ eMCDRV_APM_ON,
+ eMCDRV_APM_OFF
+} MCDRV_PMODE;
+
+#define MCDRV_A_REG_NUM (64)
+#define MCDRV_B_BASE_REG_NUM (32)
+#define MCDRV_B_MIXER_REG_NUM (218)
+#define MCDRV_B_AE_REG_NUM (255)
+#define MCDRV_B_CDSP_REG_NUM (130)
+#define MCDRV_B_CODEC_REG_NUM (128)
+#define MCDRV_B_ANA_REG_NUM (128)
+
+/* control packet for serial host interface */
+#define MCDRV_MAX_CTRL_DATA_NUM (1024)
+typedef struct
+{
+ UINT8 abData[MCDRV_MAX_CTRL_DATA_NUM];
+ UINT16 wDataNum;
+} MCDRV_SERIAL_CTRL_PACKET;
+
+/* global information */
+typedef struct
+{
+ UINT8 bHwId;
+ MCDRV_PACKETBUF_ALLOC ePacketBufAlloc;
+ UINT8 abRegValA[MCDRV_A_REG_NUM];
+ UINT8 abRegValB_BASE[MCDRV_B_BASE_REG_NUM];
+ UINT8 abRegValB_MIXER[MCDRV_B_MIXER_REG_NUM];
+ UINT8 abRegValB_AE[MCDRV_B_AE_REG_NUM];
+ UINT8 abRegValB_CDSP[MCDRV_B_CDSP_REG_NUM];
+ UINT8 abRegValB_CODEC[MCDRV_B_CODEC_REG_NUM];
+ UINT8 abRegValB_ANA[MCDRV_B_ANA_REG_NUM];
+
+ MCDRV_INIT_INFO sInitInfo;
+ MCDRV_PATH_INFO sPathInfo;
+ MCDRV_PATH_INFO sPathInfoVirtual;
+ MCDRV_VOL_INFO sVolInfo;
+ MCDRV_DIO_INFO sDioInfo;
+ MCDRV_DAC_INFO sDacInfo;
+ MCDRV_ADC_INFO sAdcInfo;
+ MCDRV_SP_INFO sSpInfo;
+ MCDRV_DNG_INFO sDngInfo;
+ MCDRV_AE_INFO sAeInfo;
+ MCDRV_PDM_INFO sPdmInfo;
+ MCDRV_GP_MODE sGpMode;
+ UINT8 abGpMask[GPIO_PAD_NUM];
+ MCDRV_SYSEQ_INFO sSysEq;
+ MCDRV_CLKSW_INFO sClockSwitch;
+
+ MCDRV_SERIAL_CTRL_PACKET sCtrlPacket;
+ UINT16 wCurSlaveAddress;
+ UINT16 wCurRegType;
+ UINT16 wCurRegAddress;
+ UINT16 wDataContinueCount;
+ UINT16 wPrevAddressIndex;
+
+ MCDRV_PMODE eAPMode;
+} MCDRV_GLOBAL_INFO;
+
+
+
+SINT32 McResCtrl_SetHwId (UINT8 bHwId);
+UINT8 McResCtrl_GetHwId (void);
+void McResCtrl_Init (const MCDRV_INIT_INFO* psInitInfo);
+void McResCtrl_UpdateState (MCDRV_STATE eState);
+MCDRV_STATE McResCtrl_GetState (void);
+UINT8 McResCtrl_GetRegVal (UINT16 wRegType, UINT16 wRegAddr);
+void McResCtrl_SetRegVal (UINT16 wRegType, UINT16 wRegAddr, UINT8 bRegVal);
+
+void McResCtrl_GetInitInfo (MCDRV_INIT_INFO* psInitInfo);
+void McResCtrl_SetClockInfo (const MCDRV_CLOCK_INFO* psClockInfo);
+void McResCtrl_SetPathInfo (const MCDRV_PATH_INFO* psPathInfo);
+void McResCtrl_GetPathInfo (MCDRV_PATH_INFO* psPathInfo);
+void McResCtrl_GetPathInfoVirtual (MCDRV_PATH_INFO* psPathInfo);
+void McResCtrl_SetDioInfo (const MCDRV_DIO_INFO* psDioInfo, UINT32 dUpdateInfo);
+void McResCtrl_GetDioInfo (MCDRV_DIO_INFO* psDioInfo);
+void McResCtrl_SetVolInfo (const MCDRV_VOL_INFO* psVolInfo);
+void McResCtrl_GetVolInfo (MCDRV_VOL_INFO* psVolInfo);
+void McResCtrl_SetDacInfo (const MCDRV_DAC_INFO* psDacInfo, UINT32 dUpdateInfo);
+void McResCtrl_GetDacInfo (MCDRV_DAC_INFO* psDacInfo);
+void McResCtrl_SetAdcInfo (const MCDRV_ADC_INFO* psAdcInfo, UINT32 dUpdateInfo);
+void McResCtrl_GetAdcInfo (MCDRV_ADC_INFO* psAdcInfo);
+void McResCtrl_SetSpInfo (const MCDRV_SP_INFO* psSpInfo);
+void McResCtrl_GetSpInfo (MCDRV_SP_INFO* psSpInfo);
+void McResCtrl_SetDngInfo (const MCDRV_DNG_INFO* psDngInfo, UINT32 dUpdateInfo);
+void McResCtrl_GetDngInfo (MCDRV_DNG_INFO* psDngInfo);
+void McResCtrl_SetAeInfo (const MCDRV_AE_INFO* psAeInfo, UINT32 dUpdateInfo);
+void McResCtrl_GetAeInfo (MCDRV_AE_INFO* psAeInfo);
+void McResCtrl_SetPdmInfo (const MCDRV_PDM_INFO* psPdmInfo, UINT32 dUpdateInfo);
+void McResCtrl_GetPdmInfo (MCDRV_PDM_INFO* psPdmInfo);
+void McResCtrl_SetGPMode (const MCDRV_GP_MODE* psGpMode);
+void McResCtrl_GetGPMode (MCDRV_GP_MODE* psGpMode);
+void McResCtrl_SetGPMask (UINT8 bMask, UINT32 dPadNo);
+void McResCtrl_GetGPMask (UINT8* pabMask);
+void McResCtrl_GetSysEq (MCDRV_SYSEQ_INFO* psSysEq);
+void McResCtrl_SetSysEq (const MCDRV_SYSEQ_INFO* psSysEq, UINT32 dUpdateInfo);
+void McResCtrl_GetClockSwitch (MCDRV_CLKSW_INFO* psClockInfo);
+void McResCtrl_SetClockSwitch (const MCDRV_CLKSW_INFO* psClockInfo);
+
+void McResCtrl_GetVolReg (MCDRV_VOL_INFO* psVolInfo);
+void McResCtrl_GetPowerInfo (MCDRV_POWER_INFO* psPowerInfo);
+void McResCtrl_GetPowerInfoRegAccess (const MCDRV_REG_INFO* psRegInfo, MCDRV_POWER_INFO* psPowerInfo);
+void McResCtrl_GetCurPowerInfo (MCDRV_POWER_INFO* psPowerInfo);
+MCDRV_SRC_TYPE McResCtrl_GetDACSource (MCDRV_DAC_CH eCh);
+MCDRV_SRC_TYPE McResCtrl_GetDITSource (MCDRV_DIO_PORT_NO ePort);
+MCDRV_SRC_TYPE McResCtrl_GetAESource (void);
+UINT8 McResCtrl_IsSrcUsed (MCDRV_SRC_TYPE ePathSrc);
+UINT8 McResCtrl_IsDstUsed (MCDRV_DST_TYPE eType, MCDRV_DST_CH eCh);
+MCDRV_REG_ACCSESS McResCtrl_GetRegAccess (const MCDRV_REG_INFO* psRegInfo);
+
+MCDRV_PMODE McResCtrl_GetAPMode (void);
+
+MCDRV_PACKET* McResCtrl_AllocPacketBuf (void);
+void McResCtrl_ReleasePacketBuf (void);
+
+void McResCtrl_InitRegUpdate (void);
+void McResCtrl_AddRegUpdate (UINT16 wRegType, UINT16 wAddress, UINT8 bData, MCDRV_UPDATE_MODE eUpdateMode);
+void McResCtrl_ExecuteRegUpdate (void);
+SINT32 McResCtrl_WaitEvent (UINT32 dEvent, UINT32 dParam);
+
+
+
+#endif /* _MCRESCTRL_H_ */
diff --git a/sound/soc/codecs/mc1n2/mcservice.c b/sound/soc/codecs/mc1n2/mcservice.c new file mode 100644 index 0000000..eb72ac1 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcservice.c @@ -0,0 +1,365 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcservice.c
+ *
+ * Description : MC Driver service routine
+ *
+ * Version : 1.0.0 2010.09.10
+ *
+ ****************************************************************************/
+
+
+#include "mcservice.h"
+#include "mcmachdep.h"
+#if (MCDRV_DEBUG_LEVEL>=4)
+#include "mcdebuglog.h"
+#endif
+
+
+/****************************************************************************
+ * McSrv_SystemInit
+ *
+ * Description:
+ * Initialize the system.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_SystemInit
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_SystemInit");
+#endif
+
+ machdep_SystemInit();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_SystemInit", 0);
+#endif
+}
+
+/****************************************************************************
+ * McSrv_SystemTerm
+ *
+ * Description:
+ * Terminate the system.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_SystemTerm
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_SystemTerm");
+#endif
+
+ machdep_SystemTerm();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_SystemTerm", 0);
+#endif
+}
+
+/****************************************************************************
+ * McSrv_ClockStart
+ *
+ * Description:
+ * Start clock.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_ClockStart
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_ClockStart");
+#endif
+
+ machdep_ClockStart();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_ClockStart", 0);
+#endif
+}
+
+/****************************************************************************
+ * McSrv_ClockStop
+ *
+ * Description:
+ * Stop clock.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_ClockStop
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_ClockStop");
+#endif
+
+ machdep_ClockStop();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_ClockStop", 0);
+#endif
+}
+
+/****************************************************************************
+ * McSrv_WriteI2C
+ *
+ * Description:
+ * Write data to register.
+ * Arguments:
+ * bSlaveAddr slave address
+ * pbData data
+ * dSize data size
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_WriteI2C
+(
+ UINT8 bSlaveAddr,
+ UINT8 *pbData,
+ UINT32 dSize
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_WriteI2C");
+#endif
+
+ McSrv_DisableIrq();
+ machdep_WriteI2C( bSlaveAddr, pbData, dSize );
+ McSrv_EnableIrq();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_WriteI2C", 0);
+#endif
+}
+
+/****************************************************************************
+ * McSrv_ReadI2C
+ *
+ * Function:
+ * Read a byte data from the register.
+ * Arguments:
+ * bSlaveAddr slave address
+ * dRegAddr address of register
+ * Return:
+ * read data
+ *
+ ****************************************************************************/
+UINT8 McSrv_ReadI2C
+(
+ UINT8 bSlaveAddr,
+ UINT32 dRegAddr
+)
+{
+ UINT8 bReg;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ SINT32 sdRet;
+ McDebugLog_FuncIn("McSrv_ReadI2C");
+#endif
+
+ McSrv_DisableIrq();
+ bReg = machdep_ReadI2C( bSlaveAddr, dRegAddr );
+ McSrv_EnableIrq();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ sdRet = (SINT32)bReg;
+ McDebugLog_FuncOut("McSrv_ReadI2C", &sdRet);
+#endif
+
+ return bReg;
+}
+
+/***************************************************************************
+ * McSrv_Sleep
+ *
+ * Function:
+ * Sleep for a specified interval.
+ * Arguments:
+ * dSleepTime sleep time [us]
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_Sleep
+(
+ UINT32 dSleepTime
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_Sleep");
+#endif
+
+ machdep_Sleep( dSleepTime );
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_Sleep", 0);
+#endif
+}
+
+/****************************************************************************
+ * McSrv_Lock
+ *
+ * Description:
+ * Lock a call of the driver.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_Lock
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_Lock");
+#endif
+
+ machdep_Lock();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_Lock", 0);
+#endif
+}
+
+/***************************************************************************
+ * McSrv_Unlock
+ *
+ * Function:
+ * Unlock a call of the driver.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_Unlock
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_Unlock");
+#endif
+
+ machdep_Unlock();
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_Unlock", 0);
+#endif
+}
+
+/***************************************************************************
+ * McSrv_MemCopy
+ *
+ * Function:
+ * Copy memory.
+ * Arguments:
+ * pbSrc copy source
+ * pbDest copy destination
+ * dSize size
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_MemCopy
+(
+ const UINT8 *pbSrc,
+ UINT8 *pbDest,
+ UINT32 dSize
+)
+{
+ UINT32 i;
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_MemCopy");
+#endif
+
+ for ( i = 0; i < dSize; i++ )
+ {
+ pbDest[i] = pbSrc[i];
+ }
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_MemCopy", 0);
+#endif
+}
+
+/***************************************************************************
+ * McSrv_DisableIrq
+ *
+ * Function:
+ * Disable interrupt.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_DisableIrq
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_DisableIrq");
+#endif
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_DisableIrq", 0);
+#endif
+}
+
+/***************************************************************************
+ * McSrv_EnableIrq
+ *
+ * Function:
+ * Enable interrupt.
+ * Arguments:
+ * none
+ * Return:
+ * none
+ *
+ ****************************************************************************/
+void McSrv_EnableIrq
+(
+ void
+)
+{
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncIn("McSrv_EnableIrq");
+#endif
+
+#if (MCDRV_DEBUG_LEVEL>=4)
+ McDebugLog_FuncOut("McSrv_EnableIrq", 0);
+#endif
+}
+
diff --git a/sound/soc/codecs/mc1n2/mcservice.h b/sound/soc/codecs/mc1n2/mcservice.h new file mode 100644 index 0000000..ab48979 --- /dev/null +++ b/sound/soc/codecs/mc1n2/mcservice.h @@ -0,0 +1,34 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mcservice.h
+ *
+ * Description : MC Driver service routine header
+ *
+ * Version : 1.0.0 2010.03.18
+ *
+ ****************************************************************************/
+
+#ifndef _MCSERVICE_H_
+#define _MCSERVICE_H_
+
+#include "mctypedef.h"
+
+
+void McSrv_SystemInit ( void );
+void McSrv_SystemTerm ( void );
+void McSrv_ClockStart ( void );
+void McSrv_ClockStop ( void );
+void McSrv_WriteI2C ( UINT8 bSlaveAddr, UINT8 *pbData, UINT32 dSize );
+UINT8 McSrv_ReadI2C ( UINT8 bSlaveAddr, UINT32 dRegAddr );
+void McSrv_Sleep ( UINT32 dSleepTime );
+void McSrv_Lock ( void );
+void McSrv_Unlock ( void );
+void McSrv_MemCopy ( const UINT8 *pbSrc, UINT8 *pbDest, UINT32 dSize );
+void McSrv_DisableIrq ( void );
+void McSrv_EnableIrq ( void );
+
+
+
+#endif /* _MCSERVICE_H_ */
diff --git a/sound/soc/codecs/mc1n2/mctypedef.h b/sound/soc/codecs/mc1n2/mctypedef.h new file mode 100644 index 0000000..29c944f --- /dev/null +++ b/sound/soc/codecs/mc1n2/mctypedef.h @@ -0,0 +1,38 @@ +/****************************************************************************
+ *
+ * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
+ *
+ * Module : mctypedef.h
+ *
+ * Description : MC Device Type definitions
+ *
+ * Version : 1.0.0 2010.03.18
+ *
+ ****************************************************************************/
+
+#ifndef _MCTYPEDEF_H_
+#define _MCTYPEDEF_H_
+
+#ifndef NULL
+ #define NULL ((void *)0)
+#endif
+#ifndef UINT8
+ #define UINT8 unsigned char
+#endif
+#ifndef UINT16
+ #define UINT16 unsigned short
+#endif
+#ifndef UINT32
+ #define UINT32 unsigned long
+#endif
+#ifndef SINT8
+ #define SINT8 signed char
+#endif
+#ifndef SINT16
+ #define SINT16 signed short
+#endif
+#ifndef SINT32
+ #define SINT32 signed long
+#endif
+
+#endif /*_MCTYPEDEF_H_*/
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c index 9e5ff78..5bbfde9 100644 --- a/sound/soc/codecs/wm8993.c +++ b/sound/soc/codecs/wm8993.c @@ -958,6 +958,8 @@ static int wm8993_set_bias_level(struct snd_soc_codec *codec, struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); int ret; + wm_hubs_set_bias_level(codec, level); + switch (level) { case SND_SOC_BIAS_ON: case SND_SOC_BIAS_PREPARE: @@ -982,6 +984,8 @@ static int wm8993_set_bias_level(struct snd_soc_codec *codec, snd_soc_write(codec, 0x56, 3); snd_soc_write(codec, 0x44, 0); + wm_hubs_vmid_ena(codec); + /* Bring up VMID with fast soft start */ snd_soc_update_bits(codec, WM8993_ANTIPOP2, WM8993_STARTUP_BIAS_ENA | @@ -1045,6 +1049,12 @@ static int wm8993_set_bias_level(struct snd_soc_codec *codec, codec->cache_sync = 1; #endif + snd_soc_update_bits(codec, WM8993_POWER_MANAGEMENT_3, + WM8993_LINEOUT1N_ENA | + WM8993_LINEOUT1P_ENA | + WM8993_LINEOUT2N_ENA | + WM8993_LINEOUT2P_ENA, 0); + regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); break; @@ -1519,6 +1529,12 @@ static int wm8993_probe(struct snd_soc_codec *codec) wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff, wm8993->pdata.lineout2_diff); + /* If the line outputs are differential then we aren't presenting + * VMID as an output and can disable it. + */ + if (wm8993->pdata.lineout1_diff && wm8993->pdata.lineout2_diff) + codec->dapm.idle_bias_off = 1; + return 0; err_enable: diff --git a/sound/soc/codecs/wm8993.h b/sound/soc/codecs/wm8993.h index 2184617..4478b40 100644 --- a/sound/soc/codecs/wm8993.h +++ b/sound/soc/codecs/wm8993.h @@ -31,6 +31,7 @@ #define WM8993_GPIO_CTRL_1 0x12 #define WM8993_GPIO1 0x13 #define WM8993_IRQ_DEBOUNCE 0x14 +#define WM8993_INPUTS_CLAMP_REG 0x15 #define WM8993_GPIOCTRL_2 0x16 #define WM8993_GPIO_POL 0x17 #define WM8993_LEFT_LINE_INPUT_1_2_VOLUME 0x18 @@ -656,6 +657,14 @@ #define WM8993_GPIO1_DB_WIDTH 1 /* GPIO1_DB */ /* + * R21 (0x15) - Inputs Clamp + */ +#define WM8993_INPUTS_CLAMP 0x0040 /* INPUTS_CLAMP */ +#define WM8993_INPUTS_CLAMP_MASK 0x0040 /* INPUTS_CLAMP */ +#define WM8993_INPUTS_CLAMP_SHIFT 7 /* INPUTS_CLAMP */ +#define WM8993_INPUTS_CLAMP_WIDTH 1 /* INPUTS_CLAMP */ + +/* * R22 (0x16) - GPIOCTRL 2 */ #define WM8993_IM_JD2_EINT 0x2000 /* IM_JD2_EINT */ diff --git a/sound/soc/codecs/wm8994-tables.c b/sound/soc/codecs/wm8994-tables.c index a87adbd..84b6cc4 100644 --- a/sound/soc/codecs/wm8994-tables.c +++ b/sound/soc/codecs/wm8994-tables.c @@ -78,7 +78,7 @@ const struct wm8994_access_mask wm8994_access_masks[WM8994_CACHE_SIZE] = { { 0x0000, 0x0000 }, /* R74 */ { 0x0000, 0x0000 }, /* R75 */ { 0x8000, 0x8000 }, /* R76 - Charge Pump (1) */ - { 0x0000, 0x0000 }, /* R77 */ + { 0x8000, 0x8000 }, /* R77 - Charge Pump (2) */ { 0x0000, 0x0000 }, /* R78 */ { 0x0000, 0x0000 }, /* R79 */ { 0x0000, 0x0000 }, /* R80 */ @@ -1073,8 +1073,8 @@ const struct wm8994_access_mask wm8994_access_masks[WM8994_CACHE_SIZE] = { { 0x0000, 0x0000 }, /* R1069 */ { 0x0000, 0x0000 }, /* R1070 */ { 0x0000, 0x0000 }, /* R1071 */ - { 0x0000, 0x0000 }, /* R1072 */ - { 0x0000, 0x0000 }, /* R1073 */ + { 0x006F, 0x006F }, /* R1072 - AIF1 DAC1 Noise Gate */ + { 0x006F, 0x006F }, /* R1073 - AIF1 DAC2 Noise Gate */ { 0x0000, 0x0000 }, /* R1074 */ { 0x0000, 0x0000 }, /* R1075 */ { 0x0000, 0x0000 }, /* R1076 */ @@ -1329,7 +1329,7 @@ const struct wm8994_access_mask wm8994_access_masks[WM8994_CACHE_SIZE] = { { 0x0000, 0x0000 }, /* R1325 */ { 0x0000, 0x0000 }, /* R1326 */ { 0x0000, 0x0000 }, /* R1327 */ - { 0x0000, 0x0000 }, /* R1328 */ + { 0x006F, 0x006F }, /* R1328 - AIF2 DAC Noise Gate */ { 0x0000, 0x0000 }, /* R1329 */ { 0x0000, 0x0000 }, /* R1330 */ { 0x0000, 0x0000 }, /* R1331 */ @@ -1651,7 +1651,7 @@ const u16 wm8994_reg_defaults[WM8994_CACHE_SIZE] = { 0x0000, /* R74 */ 0x0000, /* R75 */ 0x1F25, /* R76 - Charge Pump (1) */ - 0x0000, /* R77 */ + 0xAB19, /* R77 - Charge Pump (2) */ 0x0000, /* R78 */ 0x0000, /* R79 */ 0x0000, /* R80 */ @@ -2124,8 +2124,8 @@ const u16 wm8994_reg_defaults[WM8994_CACHE_SIZE] = { 0x0000, /* R547 - FLL1 Control (4) */ 0x0C80, /* R548 - FLL1 Control (5) */ 0x0000, /* R549 */ - 0x0000, /* R550 */ - 0x0000, /* R551 */ + 0x0000, /* R550 - FLL1 EFS 1 */ + 0x0006, /* R551 - FLL1 EFS 2 */ 0x0000, /* R552 */ 0x0000, /* R553 */ 0x0000, /* R554 */ @@ -2156,8 +2156,8 @@ const u16 wm8994_reg_defaults[WM8994_CACHE_SIZE] = { 0x0000, /* R579 - FLL2 Control (4) */ 0x0C80, /* R580 - FLL2 Control (5) */ 0x0000, /* R581 */ - 0x0000, /* R582 */ - 0x0000, /* R583 */ + 0x0000, /* R582 - FLL2 EFS 1 */ + 0x0006, /* R583 - FLL2 EFS 2 */ 0x0000, /* R584 */ 0x0000, /* R585 */ 0x0000, /* R586 */ @@ -2646,8 +2646,8 @@ const u16 wm8994_reg_defaults[WM8994_CACHE_SIZE] = { 0x0000, /* R1069 */ 0x0000, /* R1070 */ 0x0000, /* R1071 */ - 0x0000, /* R1072 */ - 0x0000, /* R1073 */ + 0x0068, /* R1072 - AIF1 DAC1 Noise Gate */ + 0x0068, /* R1073 - AIF1 DAC2 Noise Gate */ 0x0000, /* R1074 */ 0x0000, /* R1075 */ 0x0000, /* R1076 */ @@ -2902,7 +2902,7 @@ const u16 wm8994_reg_defaults[WM8994_CACHE_SIZE] = { 0x0000, /* R1325 */ 0x0000, /* R1326 */ 0x0000, /* R1327 */ - 0x0000, /* R1328 */ + 0x0068, /* R1328 - AIF2 DAC Noise Gate */ 0x0000, /* R1329 */ 0x0000, /* R1330 */ 0x0000, /* R1331 */ diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 2194912..5282248 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -35,9 +35,16 @@ #include <linux/mfd/wm8994/pdata.h> #include <linux/mfd/wm8994/gpio.h> +#include <linux/i2c/fm34_we395.h> + #include "wm8994.h" #include "wm_hubs.h" +#define WM1811_JACKDET_MODE_NONE 0x0000 +#define WM1811_JACKDET_MODE_JACK 0x0100 +#define WM1811_JACKDET_MODE_MIC 0x0080 +#define WM1811_JACKDET_MODE_AUDIO 0x0180 + #define WM8994_NUM_DRC 3 #define WM8994_NUM_EQ 3 @@ -53,6 +60,76 @@ static int wm8994_retune_mobile_base[] = { WM8994_AIF2_EQ_GAINS_1, }; +static void wm8958_default_micdet(u16 status, void *data); + +static const struct wm8958_micd_rate micdet_rates[] = { + { 32768, true, 1, 4 }, + { 32768, false, 1, 1 }, + { 44100 * 256, true, 7, 10 }, + { 44100 * 256, false, 7, 10 }, +}; + +static const struct wm8958_micd_rate jackdet_rates[] = { + { 32768, true, 0, 1 }, + { 32768, false, 0, 1 }, + { 44100 * 256, true, 10, 10 }, + { 44100 * 256, false, 7, 8 }, +}; + +static void wm8958_micd_set_rate(struct snd_soc_codec *codec) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + int best, i, sysclk, val; + bool idle; + const struct wm8958_micd_rate *rates; + int num_rates; + + if (!(wm8994->pdata && wm8994->pdata->micd_rates) && + wm8994->jack_cb != wm8958_default_micdet) + return; + + idle = !wm8994->jack_mic; + + sysclk = snd_soc_read(codec, WM8994_CLOCKING_1); + if (sysclk & WM8994_SYSCLK_SRC) + sysclk = wm8994->aifclk[1]; + else + sysclk = wm8994->aifclk[0]; + + if (wm8994->pdata && wm8994->pdata->micd_rates) { + rates = wm8994->pdata->micd_rates; + num_rates = wm8994->pdata->num_micd_rates; + } else if (wm8994->jackdet) { + rates = jackdet_rates; + num_rates = ARRAY_SIZE(jackdet_rates); + } else { + rates = micdet_rates; + num_rates = ARRAY_SIZE(micdet_rates); + } + + best = 0; + for (i = 0; i < num_rates; i++) { + if (rates[i].idle != idle) + continue; + if (abs(rates[i].sysclk - sysclk) < + abs(rates[best].sysclk - sysclk)) + best = i; + else if (rates[best].idle != idle) + best = i; + } + + val = rates[best].start << WM8958_MICD_BIAS_STARTTIME_SHIFT + | rates[best].rate << WM8958_MICD_RATE_SHIFT; + + dev_dbg(codec->dev, "MICD rate %d,%d for %dHz %s\n", + rates[best].start, rates[best].rate, sysclk, + idle ? "idle" : "active"); + + snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, + WM8958_MICD_BIAS_STARTTIME_MASK | + WM8958_MICD_RATE_MASK, val); +} + static int wm8994_readable(struct snd_soc_codec *codec, unsigned int reg) { struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); @@ -72,6 +149,8 @@ static int wm8994_readable(struct snd_soc_codec *codec, unsigned int reg) case WM8994_GPIO_11: case WM8994_INTERRUPT_STATUS_1: case WM8994_INTERRUPT_STATUS_2: + case WM8994_INTERRUPT_STATUS_1_MASK: + case WM8994_INTERRUPT_STATUS_2_MASK: case WM8994_INTERRUPT_RAW_STATUS_2: return 1; @@ -107,6 +186,7 @@ static int wm8994_volatile(struct snd_soc_codec *codec, unsigned int reg) case WM8994_LDO_2: case WM8958_DSP2_EXECCONTROL: case WM8958_MIC_DETECT_3: + case WM8994_DC_SERVO_4E: return 1; default: return 0; @@ -195,10 +275,6 @@ static int configure_aif_clock(struct snd_soc_codec *codec, int aif) aif + 1, rate); } - if (rate && rate < 3000000) - dev_warn(codec->dev, "AIF%dCLK is %dHz, should be >=3MHz for optimal performance\n", - aif + 1, rate); - wm8994->aifclk[aif] = rate; snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1 + offset, @@ -211,7 +287,7 @@ static int configure_aif_clock(struct snd_soc_codec *codec, int aif) static int configure_clock(struct snd_soc_codec *codec) { struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); - int old, new; + int new, change; /* Bring up the AIF clocks first */ configure_aif_clock(codec, 0); @@ -224,23 +300,22 @@ static int configure_clock(struct snd_soc_codec *codec) */ /* If they're equal it doesn't matter which is used */ - if (wm8994->aifclk[0] == wm8994->aifclk[1]) + if (wm8994->aifclk[0] == wm8994->aifclk[1]) { + wm8958_micd_set_rate(codec); return 0; + } if (wm8994->aifclk[0] < wm8994->aifclk[1]) new = WM8994_SYSCLK_SRC; else new = 0; - old = snd_soc_read(codec, WM8994_CLOCKING_1) & WM8994_SYSCLK_SRC; - - /* If there's no change then we're done. */ - if (old == new) - return 0; + change = snd_soc_update_bits(codec, WM8994_CLOCKING_1, + WM8994_SYSCLK_SRC, new); + if (change) + snd_soc_dapm_sync(&codec->dapm); - snd_soc_update_bits(codec, WM8994_CLOCKING_1, WM8994_SYSCLK_SRC, new); - - snd_soc_dapm_sync(&codec->dapm); + wm8958_micd_set_rate(codec); return 0; } @@ -285,6 +360,8 @@ static const DECLARE_TLV_DB_SCALE(digital_tlv, -7200, 75, 1); static const DECLARE_TLV_DB_SCALE(st_tlv, -3600, 300, 0); static const DECLARE_TLV_DB_SCALE(wm8994_3d_tlv, -1600, 183, 0); static const DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0); +static const DECLARE_TLV_DB_SCALE(ng_tlv, -10200, 600, 0); +static const DECLARE_TLV_DB_SCALE(mixin_boost_tlv, 0, 900, 0); #define WM8994_DRC_SWITCH(xname, reg, shift) \ { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ @@ -429,7 +506,7 @@ static void wm8994_set_retune_mobile(struct snd_soc_codec *codec, int block) wm8994->dac_rates[iface]); /* The EQ will be disabled while reconfiguring it, remember the - * current configuration. + * current configuration. */ save = snd_soc_read(codec, base); save &= WM8994_AIF1DAC1_EQ_ENA; @@ -487,6 +564,39 @@ static int wm8994_get_retune_mobile_enum(struct snd_kcontrol *kcontrol, return 0; } +#if defined(CONFIG_MACH_C1_KOR_LGT) || defined(CONFIG_MACH_C1VZW) +static const char *fm_control[] = { +"OFF", "RCV", "EAR", "SPK", "SPK", +}; + +static const struct soc_enum fm_control_enum[] = { +SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(fm_control), fm_control), +}; + +static int wm8994_get_fm_control(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + return 0; +} + +static int wm8994_put_fm_control(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + int value = ucontrol->value.integer.value[0]; + int ret = 0; + +#ifdef CONFIG_FM34_WE395 + ret = fm34_set_mode(value); +#endif + return ret; +} +#endif /* CONFIG_MACH_C1_KOR_LGT */ + static const char *aif_chan_src_text[] = { "Left", "Right" }; @@ -664,10 +774,124 @@ SOC_SINGLE_TLV("AIF2 EQ5 Volume", WM8994_AIF2_EQ_GAINS_2, 6, 31, 0, eq_tlv), }; +static const char *wm8958_ng_text[] = { + "30ms", "125ms", "250ms", "500ms", +}; + +static const struct soc_enum wm8958_aif1dac1_ng_hold = + SOC_ENUM_SINGLE(WM8958_AIF1_DAC1_NOISE_GATE, + WM8958_AIF1DAC1_NG_THR_SHIFT, 4, wm8958_ng_text); + +static const struct soc_enum wm8958_aif1dac2_ng_hold = + SOC_ENUM_SINGLE(WM8958_AIF1_DAC2_NOISE_GATE, + WM8958_AIF1DAC2_NG_THR_SHIFT, 4, wm8958_ng_text); + +static const struct soc_enum wm8958_aif2dac_ng_hold = + SOC_ENUM_SINGLE(WM8958_AIF2_DAC_NOISE_GATE, + WM8958_AIF2DAC_NG_THR_SHIFT, 4, wm8958_ng_text); + static const struct snd_kcontrol_new wm8958_snd_controls[] = { SOC_SINGLE_TLV("AIF3 Boost Volume", WM8958_AIF3_CONTROL_2, 10, 3, 0, aif_tlv), + +SOC_SINGLE("AIF1DAC1 Noise Gate Switch", WM8958_AIF1_DAC1_NOISE_GATE, + WM8958_AIF1DAC1_NG_ENA_SHIFT, 1, 0), +SOC_ENUM("AIF1DAC1 Noise Gate Hold Time", wm8958_aif1dac1_ng_hold), +SOC_SINGLE_TLV("AIF1DAC1 Noise Gate Threshold Volume", + WM8958_AIF1_DAC1_NOISE_GATE, WM8958_AIF1DAC1_NG_THR_SHIFT, + 7, 1, ng_tlv), + +SOC_SINGLE("AIF1DAC2 Noise Gate Switch", WM8958_AIF1_DAC2_NOISE_GATE, + WM8958_AIF1DAC2_NG_ENA_SHIFT, 1, 0), +SOC_ENUM("AIF1DAC2 Noise Gate Hold Time", wm8958_aif1dac2_ng_hold), +SOC_SINGLE_TLV("AIF1DAC2 Noise Gate Threshold Volume", + WM8958_AIF1_DAC2_NOISE_GATE, WM8958_AIF1DAC2_NG_THR_SHIFT, + 7, 1, ng_tlv), + +SOC_SINGLE("AIF2DAC Noise Gate Switch", WM8958_AIF2_DAC_NOISE_GATE, + WM8958_AIF2DAC_NG_ENA_SHIFT, 1, 0), +SOC_ENUM("AIF2DAC Noise Gate Hold Time", wm8958_aif2dac_ng_hold), +SOC_SINGLE_TLV("AIF2DAC Noise Gate Threshold Volume", + WM8958_AIF2_DAC_NOISE_GATE, WM8958_AIF2DAC_NG_THR_SHIFT, + 7, 1, ng_tlv), +#if defined(CONFIG_MACH_C1_KOR_LGT) || defined(CONFIG_MACH_C1VZW) +SOC_ENUM_EXT("FM Control", fm_control_enum, + wm8994_get_fm_control, wm8994_put_fm_control), +#endif }; +static const struct snd_kcontrol_new wm1811_snd_controls[] = { +SOC_SINGLE_TLV("MIXINL IN1LP Boost Volume", WM8994_INPUT_MIXER_1, 7, 1, 0, + mixin_boost_tlv), +SOC_SINGLE_TLV("MIXINL IN1RP Boost Volume", WM8994_INPUT_MIXER_1, 8, 1, 0, + mixin_boost_tlv), +}; + +/* We run all mode setting through a function to enforce audio mode */ +static void wm1811_jackdet_set_mode(struct snd_soc_codec *codec, u16 mode) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + if (!wm8994->jackdet || !wm8994->jack_cb) + return; + + if (wm8994->active_refcount) + mode = WM1811_JACKDET_MODE_AUDIO; + + if (mode == wm8994->jackdet_mode) + return; + + wm8994->jackdet_mode = mode; + + /* Always use audio mode to detect while the system is active */ + if (mode != WM1811_JACKDET_MODE_NONE) + mode = WM1811_JACKDET_MODE_AUDIO; + + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, mode); +} + +static void active_reference(struct snd_soc_codec *codec) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + mutex_lock(&wm8994->accdet_lock); + + wm8994->active_refcount++; + + dev_dbg(codec->dev, "Active refcount incremented, now %d\n", + wm8994->active_refcount); + + /* If we're using jack detection go into audio mode */ + wm1811_jackdet_set_mode(codec, WM1811_JACKDET_MODE_AUDIO); + + mutex_unlock(&wm8994->accdet_lock); +} + +static void active_dereference(struct snd_soc_codec *codec) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + u16 mode; + + mutex_lock(&wm8994->accdet_lock); + + wm8994->active_refcount--; + + dev_dbg(codec->dev, "Active refcount decremented, now %d\n", + wm8994->active_refcount); + + if (wm8994->active_refcount == 0) { + /* Go into appropriate detection only mode */ + if (wm8994->jack_mic || wm8994->mic_detecting) + mode = WM1811_JACKDET_MODE_MIC; + else + mode = WM1811_JACKDET_MODE_JACK; + + wm1811_jackdet_set_mode(codec, mode); + } + + mutex_unlock(&wm8994->accdet_lock); +} + static int clk_sys_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { @@ -685,6 +909,179 @@ static int clk_sys_event(struct snd_soc_dapm_widget *w, return 0; } +static void vmid_reference(struct snd_soc_codec *codec) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + pm_runtime_get_sync(codec->dev); + + wm8994->vmid_refcount++; + + dev_dbg(codec->dev, "Referencing VMID, refcount is now %d\n", + wm8994->vmid_refcount); + + if (wm8994->vmid_refcount == 1) { + snd_soc_update_bits(codec, WM8994_ANTIPOP_1, + WM8994_LINEOUT1_DISCH | + WM8994_LINEOUT2_DISCH, 0); + + wm_hubs_vmid_ena(codec); + + switch (wm8994->vmid_mode) { + default: + WARN_ON(0 == "Invalid VMID mode"); + case WM8994_VMID_NORMAL: + /* Startup bias, VMID ramp & buffer */ + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM8994_BIAS_SRC | + WM8994_VMID_DISCH | + WM8994_STARTUP_BIAS_ENA | + WM8994_VMID_BUF_ENA | + WM8994_VMID_RAMP_MASK, + WM8994_BIAS_SRC | + WM8994_STARTUP_BIAS_ENA | + WM8994_VMID_BUF_ENA | + (0x3 << WM8994_VMID_RAMP_SHIFT)); + + /* Main bias enable, VMID=2x40k */ + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, + WM8994_BIAS_ENA | + WM8994_VMID_SEL_MASK, + WM8994_BIAS_ENA | 0x2); + + msleep(50); + + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM8994_VMID_RAMP_MASK | + WM8994_BIAS_SRC, + 0); + break; + + case WM8994_VMID_FORCE: + /* Startup bias, slow VMID ramp & buffer */ + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM8994_BIAS_SRC | + WM8994_VMID_DISCH | + WM8994_STARTUP_BIAS_ENA | + WM8994_VMID_BUF_ENA | + WM8994_VMID_RAMP_MASK, + WM8994_BIAS_SRC | + WM8994_STARTUP_BIAS_ENA | + WM8994_VMID_BUF_ENA | + (0x2 << WM8994_VMID_RAMP_SHIFT)); + + /* Main bias enable, VMID=2x40k */ + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, + WM8994_BIAS_ENA | + WM8994_VMID_SEL_MASK, + WM8994_BIAS_ENA | 0x2); + + msleep(400); + + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM8994_VMID_RAMP_MASK | + WM8994_BIAS_SRC, + 0); + break; + } + } +} + +static void vmid_dereference(struct snd_soc_codec *codec) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + wm8994->vmid_refcount--; + + dev_dbg(codec->dev, "Dereferencing VMID, refcount is now %d\n", + wm8994->vmid_refcount); + + if (wm8994->vmid_refcount == 0) { + if (wm8994->hubs.lineout1_se) + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_3, + WM8994_LINEOUT1N_ENA | + WM8994_LINEOUT1P_ENA, + WM8994_LINEOUT1N_ENA | + WM8994_LINEOUT1P_ENA); + + if (wm8994->hubs.lineout2_se) + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_3, + WM8994_LINEOUT2N_ENA | + WM8994_LINEOUT2P_ENA, + WM8994_LINEOUT2N_ENA | + WM8994_LINEOUT2P_ENA); + + /* Start discharging VMID */ + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM8994_BIAS_SRC | + WM8994_VMID_DISCH, + WM8994_BIAS_SRC | + WM8994_VMID_DISCH); + + switch (wm8994->vmid_mode) { + case WM8994_VMID_FORCE: + msleep(350); + break; + default: + break; + } + + snd_soc_update_bits(codec, WM8994_ADDITIONAL_CONTROL, + WM8994_VROI, WM8994_VROI); + + /* Active discharge */ + snd_soc_update_bits(codec, WM8994_ANTIPOP_1, + WM8994_LINEOUT1_DISCH | + WM8994_LINEOUT2_DISCH, + WM8994_LINEOUT1_DISCH | + WM8994_LINEOUT2_DISCH); + + msleep(150); + + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_3, + WM8994_LINEOUT1N_ENA | + WM8994_LINEOUT1P_ENA | + WM8994_LINEOUT2N_ENA | + WM8994_LINEOUT2P_ENA, 0); + + snd_soc_update_bits(codec, WM8994_ADDITIONAL_CONTROL, + WM8994_VROI, 0); + + /* Switch off startup biases */ + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM8994_BIAS_SRC | + WM8994_STARTUP_BIAS_ENA | + WM8994_VMID_BUF_ENA | + WM8994_VMID_RAMP_MASK, 0); + + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, + WM8994_BIAS_ENA | WM8994_VMID_SEL_MASK, 0); + + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM8994_VMID_RAMP_MASK, 0); + } + + pm_runtime_put(codec->dev); +} + +static int vmid_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + vmid_reference(codec); + break; + + case SND_SOC_DAPM_POST_PMD: + vmid_dereference(codec); + break; + } + + return 0; +} + static void wm8994_update_class_w(struct snd_soc_codec *codec) { struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); @@ -739,7 +1136,7 @@ static void wm8994_update_class_w(struct snd_soc_codec *codec) WM8994_CP_DYN_SRC_SEL_MASK, source | WM8994_CP_DYN_PWR); wm8994->hubs.class_w = true; - + } else { dev_dbg(codec->dev, "Class W disabled\n"); snd_soc_update_bits(codec, WM8994_CLASS_W_1, @@ -748,61 +1145,170 @@ static void wm8994_update_class_w(struct snd_soc_codec *codec) } } -static int late_enable_ev(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *kcontrol, int event) +static int aif1clk_ev(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = w->codec; - struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + struct wm8994 *control = codec->control_data; + int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA; + int dac; + int adc; + int val; + + switch (control->type) { + case WM8994: + case WM8958: + mask |= WM8994_AIF1DAC2L_ENA | WM8994_AIF1DAC2R_ENA; + break; + default: + break; + } switch (event) { case SND_SOC_DAPM_PRE_PMU: - if (wm8994->aif1clk_enable) { - snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, - WM8994_AIF1CLK_ENA_MASK, - WM8994_AIF1CLK_ENA); - wm8994->aif1clk_enable = 0; - } - if (wm8994->aif2clk_enable) { - snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, - WM8994_AIF2CLK_ENA_MASK, - WM8994_AIF2CLK_ENA); - wm8994->aif2clk_enable = 0; - } + val = snd_soc_read(codec, WM8994_AIF1_CONTROL_1); + if ((val & WM8994_AIF1ADCL_SRC) && + (val & WM8994_AIF1ADCR_SRC)) + adc = WM8994_AIF1ADC1R_ENA | WM8994_AIF1ADC2R_ENA; + else if (!(val & WM8994_AIF1ADCL_SRC) && + !(val & WM8994_AIF1ADCR_SRC)) + adc = WM8994_AIF1ADC1L_ENA | WM8994_AIF1ADC2L_ENA; + else + adc = WM8994_AIF1ADC1R_ENA | WM8994_AIF1ADC2R_ENA | + WM8994_AIF1ADC1L_ENA | WM8994_AIF1ADC2L_ENA; + + val = snd_soc_read(codec, WM8994_AIF1_CONTROL_2); + if ((val & WM8994_AIF1DACL_SRC) && + (val & WM8994_AIF1DACR_SRC)) + dac = WM8994_AIF1DAC1R_ENA | WM8994_AIF1DAC2R_ENA; + else if (!(val & WM8994_AIF1DACL_SRC) && + !(val & WM8994_AIF1DACR_SRC)) + dac = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC2L_ENA; + else + dac = WM8994_AIF1DAC1R_ENA | WM8994_AIF1DAC2R_ENA | + WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC2L_ENA; + + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4, + mask, adc); + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, + mask, dac); + snd_soc_update_bits(codec, WM8994_CLOCKING_1, + WM8994_AIF1DSPCLK_ENA | + WM8994_SYSDSPCLK_ENA, + WM8994_AIF1DSPCLK_ENA | + WM8994_SYSDSPCLK_ENA); + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4, mask, + WM8994_AIF1ADC1R_ENA | + WM8994_AIF1ADC1L_ENA | + WM8994_AIF1ADC2R_ENA | + WM8994_AIF1ADC2L_ENA); + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, mask, + WM8994_AIF1DAC1R_ENA | + WM8994_AIF1DAC1L_ENA | + WM8994_AIF1DAC2R_ENA | + WM8994_AIF1DAC2L_ENA); break; - } - /* We may also have postponed startup of DSP, handle that. */ - wm8958_aif_ev(w, kcontrol, event); + case SND_SOC_DAPM_PRE_PMD: + case SND_SOC_DAPM_POST_PMD: + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, + mask, 0); + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4, + mask, 0); + + val = snd_soc_read(codec, WM8994_CLOCKING_1); + if (val & WM8994_AIF2DSPCLK_ENA) + val = WM8994_SYSDSPCLK_ENA; + else + val = 0; + snd_soc_update_bits(codec, WM8994_CLOCKING_1, + WM8994_SYSDSPCLK_ENA | + WM8994_AIF1DSPCLK_ENA, val); + break; + } return 0; } -static int late_disable_ev(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *kcontrol, int event) +static int aif2clk_ev(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = w->codec; - struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + int dac; + int adc; + int val; switch (event) { + case SND_SOC_DAPM_PRE_PMU: + val = snd_soc_read(codec, WM8994_AIF2_CONTROL_1); + if ((val & WM8994_AIF2ADCL_SRC) && + (val & WM8994_AIF2ADCR_SRC)) + adc = WM8994_AIF2ADCR_ENA; + else if (!(val & WM8994_AIF2ADCL_SRC) && + !(val & WM8994_AIF2ADCR_SRC)) + adc = WM8994_AIF2ADCL_ENA; + else + adc = WM8994_AIF2ADCL_ENA | WM8994_AIF2ADCR_ENA; + + + val = snd_soc_read(codec, WM8994_AIF2_CONTROL_2); + if ((val & WM8994_AIF2DACL_SRC) && + (val & WM8994_AIF2DACR_SRC)) + dac = WM8994_AIF2DACR_ENA; + else if (!(val & WM8994_AIF2DACL_SRC) && + !(val & WM8994_AIF2DACR_SRC)) + dac = WM8994_AIF2DACL_ENA; + else + dac = WM8994_AIF2DACL_ENA | WM8994_AIF2DACR_ENA; + + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4, + WM8994_AIF2ADCL_ENA | + WM8994_AIF2ADCR_ENA, adc); + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, + WM8994_AIF2DACL_ENA | + WM8994_AIF2DACR_ENA, dac); + snd_soc_update_bits(codec, WM8994_CLOCKING_1, + WM8994_AIF2DSPCLK_ENA | + WM8994_SYSDSPCLK_ENA, + WM8994_AIF2DSPCLK_ENA | + WM8994_SYSDSPCLK_ENA); + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_4, + WM8994_AIF2ADCL_ENA | + WM8994_AIF2ADCR_ENA, + WM8994_AIF2ADCL_ENA | + WM8994_AIF2ADCR_ENA); + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, + WM8994_AIF2DACL_ENA | + WM8994_AIF2DACR_ENA, + WM8994_AIF2DACL_ENA | + WM8994_AIF2DACR_ENA); + break; + + case SND_SOC_DAPM_PRE_PMD: case SND_SOC_DAPM_POST_PMD: - if (wm8994->aif1clk_disable) { - snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, - WM8994_AIF1CLK_ENA_MASK, 0); - wm8994->aif1clk_disable = 0; - } - if (wm8994->aif2clk_disable) { - snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, - WM8994_AIF2CLK_ENA_MASK, 0); - wm8994->aif2clk_disable = 0; - } + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, + WM8994_AIF2DACL_ENA | + WM8994_AIF2DACR_ENA, 0); + snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, + WM8994_AIF2ADCL_ENA | + WM8994_AIF2ADCR_ENA, 0); + + val = snd_soc_read(codec, WM8994_CLOCKING_1); + if (val & WM8994_AIF1DSPCLK_ENA) + val = WM8994_SYSDSPCLK_ENA; + else + val = 0; + snd_soc_update_bits(codec, WM8994_CLOCKING_1, + WM8994_SYSDSPCLK_ENA | + WM8994_AIF2DSPCLK_ENA, val); break; } return 0; } -static int aif1clk_ev(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *kcontrol, int event) +static int aif1clk_late_ev(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = w->codec; struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); @@ -819,8 +1325,8 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w, return 0; } -static int aif2clk_ev(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *kcontrol, int event) +static int aif2clk_late_ev(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = w->codec; struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); @@ -837,6 +1343,63 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w, return 0; } +static int late_enable_ev(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + if (wm8994->aif1clk_enable) { + aif1clk_ev(w, kcontrol, event); + snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, + WM8994_AIF1CLK_ENA_MASK, + WM8994_AIF1CLK_ENA); + wm8994->aif1clk_enable = 0; + } + if (wm8994->aif2clk_enable) { + aif2clk_ev(w, kcontrol, event); + snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, + WM8994_AIF2CLK_ENA_MASK, + WM8994_AIF2CLK_ENA); + wm8994->aif2clk_enable = 0; + } + break; + } + + /* We may also have postponed startup of DSP, handle that. */ + wm8958_aif_ev(w, kcontrol, event); + + return 0; +} + +static int late_disable_ev(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + switch (event) { + case SND_SOC_DAPM_POST_PMD: + if (wm8994->aif1clk_disable) { + snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, + WM8994_AIF1CLK_ENA_MASK, 0); + aif1clk_ev(w, kcontrol, event); + wm8994->aif1clk_disable = 0; + } + if (wm8994->aif2clk_disable) { + snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, + WM8994_AIF2CLK_ENA_MASK, 0); + aif2clk_ev(w, kcontrol, event); + wm8994->aif2clk_disable = 0; + } + break; + } + + return 0; +} + static int adc_mux_ev(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { @@ -870,9 +1433,9 @@ static const char *hp_mux_text[] = { #define WM8994_HP_ENUM(xname, xenum) \ { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ .info = snd_soc_info_enum_double, \ - .get = snd_soc_dapm_get_enum_double, \ - .put = wm8994_put_hp_enum, \ - .private_value = (unsigned long)&xenum } + .get = snd_soc_dapm_get_enum_double, \ + .put = wm8994_put_hp_enum, \ + .private_value = (unsigned long)&xenum } static int wm8994_put_hp_enum(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) @@ -1106,7 +1669,7 @@ static const struct snd_kcontrol_new wm8958_aif3adc_mux = SOC_DAPM_ENUM("AIF3ADC Mux", wm8958_aif3adc_enum); static const char *mono_pcm_out_text[] = { - "None", "AIF2ADCL", "AIF2ADCR", + "None", "AIF2ADCL", "AIF2ADCR", }; static const struct soc_enum mono_pcm_out_enum = @@ -1133,9 +1696,9 @@ static const struct snd_kcontrol_new aif2dacr_src_mux = SOC_DAPM_ENUM("AIF2DACR Mux", aif2dacr_src_enum); static const struct snd_soc_dapm_widget wm8994_lateclk_revd_widgets[] = { -SND_SOC_DAPM_SUPPLY("AIF1CLK", SND_SOC_NOPM, 0, 0, aif1clk_ev, +SND_SOC_DAPM_SUPPLY("AIF1CLK", SND_SOC_NOPM, 0, 0, aif1clk_late_ev, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), -SND_SOC_DAPM_SUPPLY("AIF2CLK", SND_SOC_NOPM, 0, 0, aif2clk_ev, +SND_SOC_DAPM_SUPPLY("AIF2CLK", SND_SOC_NOPM, 0, 0, aif2clk_late_ev, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_PGA_E("Late DAC1L Enable PGA", SND_SOC_NOPM, 0, 0, NULL, 0, @@ -1146,13 +1709,35 @@ SND_SOC_DAPM_PGA_E("Late DAC2L Enable PGA", SND_SOC_NOPM, 0, 0, NULL, 0, late_enable_ev, SND_SOC_DAPM_PRE_PMU), SND_SOC_DAPM_PGA_E("Late DAC2R Enable PGA", SND_SOC_NOPM, 0, 0, NULL, 0, late_enable_ev, SND_SOC_DAPM_PRE_PMU), +SND_SOC_DAPM_PGA_E("Direct Voice", SND_SOC_NOPM, 0, 0, NULL, 0, + late_enable_ev, SND_SOC_DAPM_PRE_PMU), + +SND_SOC_DAPM_MIXER_E("SPKL", WM8994_POWER_MANAGEMENT_3, 8, 0, + left_speaker_mixer, ARRAY_SIZE(left_speaker_mixer), + late_enable_ev, SND_SOC_DAPM_PRE_PMU), +SND_SOC_DAPM_MIXER_E("SPKR", WM8994_POWER_MANAGEMENT_3, 9, 0, + right_speaker_mixer, ARRAY_SIZE(right_speaker_mixer), + late_enable_ev, SND_SOC_DAPM_PRE_PMU), +SND_SOC_DAPM_MUX_E("Left Headphone Mux", SND_SOC_NOPM, 0, 0, &hpl_mux, + late_enable_ev, SND_SOC_DAPM_PRE_PMU), +SND_SOC_DAPM_MUX_E("Right Headphone Mux", SND_SOC_NOPM, 0, 0, &hpr_mux, + late_enable_ev, SND_SOC_DAPM_PRE_PMU), SND_SOC_DAPM_POST("Late Disable PGA", late_disable_ev) }; static const struct snd_soc_dapm_widget wm8994_lateclk_widgets[] = { -SND_SOC_DAPM_SUPPLY("AIF1CLK", WM8994_AIF1_CLOCKING_1, 0, 0, NULL, 0), -SND_SOC_DAPM_SUPPLY("AIF2CLK", WM8994_AIF2_CLOCKING_1, 0, 0, NULL, 0) +SND_SOC_DAPM_SUPPLY("AIF1CLK", WM8994_AIF1_CLOCKING_1, 0, 0, aif1clk_ev, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), +SND_SOC_DAPM_SUPPLY("AIF2CLK", WM8994_AIF2_CLOCKING_1, 0, 0, aif2clk_ev, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), +SND_SOC_DAPM_PGA("Direct Voice", SND_SOC_NOPM, 0, 0, NULL, 0), +SND_SOC_DAPM_MIXER("SPKL", WM8994_POWER_MANAGEMENT_3, 8, 0, + left_speaker_mixer, ARRAY_SIZE(left_speaker_mixer)), +SND_SOC_DAPM_MIXER("SPKR", WM8994_POWER_MANAGEMENT_3, 9, 0, + right_speaker_mixer, ARRAY_SIZE(right_speaker_mixer)), +SND_SOC_DAPM_MUX("Left Headphone Mux", SND_SOC_NOPM, 0, 0, &hpl_mux), +SND_SOC_DAPM_MUX("Right Headphone Mux", SND_SOC_NOPM, 0, 0, &hpr_mux), }; static const struct snd_soc_dapm_widget wm8994_dac_revd_widgets[] = { @@ -1174,15 +1759,15 @@ SND_SOC_DAPM_DAC("DAC1R", NULL, WM8994_POWER_MANAGEMENT_5, 0, 0), }; static const struct snd_soc_dapm_widget wm8994_adc_revd_widgets[] = { -SND_SOC_DAPM_MUX_E("ADCL Mux", WM8994_POWER_MANAGEMENT_4, 1, 0, &adcl_mux, - adc_mux_ev, SND_SOC_DAPM_PRE_PMU), -SND_SOC_DAPM_MUX_E("ADCR Mux", WM8994_POWER_MANAGEMENT_4, 0, 0, &adcr_mux, - adc_mux_ev, SND_SOC_DAPM_PRE_PMU), +SND_SOC_DAPM_VIRT_MUX_E("ADCL Mux", WM8994_POWER_MANAGEMENT_4, 1, 0, &adcl_mux, + adc_mux_ev, SND_SOC_DAPM_PRE_PMU), +SND_SOC_DAPM_VIRT_MUX_E("ADCR Mux", WM8994_POWER_MANAGEMENT_4, 0, 0, &adcr_mux, + adc_mux_ev, SND_SOC_DAPM_PRE_PMU), }; static const struct snd_soc_dapm_widget wm8994_adc_widgets[] = { -SND_SOC_DAPM_MUX("ADCL Mux", WM8994_POWER_MANAGEMENT_4, 1, 0, &adcl_mux), -SND_SOC_DAPM_MUX("ADCR Mux", WM8994_POWER_MANAGEMENT_4, 0, 0, &adcr_mux), +SND_SOC_DAPM_VIRT_MUX("ADCL Mux", WM8994_POWER_MANAGEMENT_4, 1, 0, &adcl_mux), +SND_SOC_DAPM_VIRT_MUX("ADCR Mux", WM8994_POWER_MANAGEMENT_4, 0, 0, &adcr_mux), }; static const struct snd_soc_dapm_widget wm8994_dapm_widgets[] = { @@ -1192,34 +1777,36 @@ SND_SOC_DAPM_INPUT("Clock"), SND_SOC_DAPM_SUPPLY_S("MICBIAS Supply", 1, SND_SOC_NOPM, 0, 0, micbias_ev, SND_SOC_DAPM_PRE_PMU), +SND_SOC_DAPM_SUPPLY("VMID", SND_SOC_NOPM, 0, 0, vmid_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SUPPLY("CLK_SYS", SND_SOC_NOPM, 0, 0, clk_sys_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), -SND_SOC_DAPM_SUPPLY("DSP1CLK", WM8994_CLOCKING_1, 3, 0, NULL, 0), -SND_SOC_DAPM_SUPPLY("DSP2CLK", WM8994_CLOCKING_1, 2, 0, NULL, 0), -SND_SOC_DAPM_SUPPLY("DSPINTCLK", WM8994_CLOCKING_1, 1, 0, NULL, 0), +SND_SOC_DAPM_SUPPLY("DSP1CLK", SND_SOC_NOPM, 3, 0, NULL, 0), +SND_SOC_DAPM_SUPPLY("DSP2CLK", SND_SOC_NOPM, 2, 0, NULL, 0), +SND_SOC_DAPM_SUPPLY("DSPINTCLK", SND_SOC_NOPM, 1, 0, NULL, 0), SND_SOC_DAPM_AIF_OUT("AIF1ADC1L", NULL, - 0, WM8994_POWER_MANAGEMENT_4, 9, 0), + 0, SND_SOC_NOPM, 9, 0), SND_SOC_DAPM_AIF_OUT("AIF1ADC1R", NULL, - 0, WM8994_POWER_MANAGEMENT_4, 8, 0), + 0, SND_SOC_NOPM, 8, 0), SND_SOC_DAPM_AIF_IN_E("AIF1DAC1L", NULL, 0, - WM8994_POWER_MANAGEMENT_5, 9, 0, wm8958_aif_ev, + SND_SOC_NOPM, 9, 0, wm8958_aif_ev, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_AIF_IN_E("AIF1DAC1R", NULL, 0, - WM8994_POWER_MANAGEMENT_5, 8, 0, wm8958_aif_ev, + SND_SOC_NOPM, 8, 0, wm8958_aif_ev, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_AIF_OUT("AIF1ADC2L", NULL, - 0, WM8994_POWER_MANAGEMENT_4, 11, 0), + 0, SND_SOC_NOPM, 11, 0), SND_SOC_DAPM_AIF_OUT("AIF1ADC2R", NULL, - 0, WM8994_POWER_MANAGEMENT_4, 10, 0), + 0, SND_SOC_NOPM, 10, 0), SND_SOC_DAPM_AIF_IN_E("AIF1DAC2L", NULL, 0, - WM8994_POWER_MANAGEMENT_5, 11, 0, wm8958_aif_ev, + SND_SOC_NOPM, 11, 0, wm8958_aif_ev, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_AIF_IN_E("AIF1DAC2R", NULL, 0, - WM8994_POWER_MANAGEMENT_5, 10, 0, wm8958_aif_ev, + SND_SOC_NOPM, 10, 0, wm8958_aif_ev, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_MIXER("AIF1ADC1L Mixer", SND_SOC_NOPM, 0, 0, @@ -1246,14 +1833,14 @@ SND_SOC_DAPM_MIXER("DAC1R Mixer", SND_SOC_NOPM, 0, 0, dac1r_mix, ARRAY_SIZE(dac1r_mix)), SND_SOC_DAPM_AIF_OUT("AIF2ADCL", NULL, 0, - WM8994_POWER_MANAGEMENT_4, 13, 0), + SND_SOC_NOPM, 13, 0), SND_SOC_DAPM_AIF_OUT("AIF2ADCR", NULL, 0, - WM8994_POWER_MANAGEMENT_4, 12, 0), + SND_SOC_NOPM, 12, 0), SND_SOC_DAPM_AIF_IN_E("AIF2DACL", NULL, 0, - WM8994_POWER_MANAGEMENT_5, 13, 0, wm8958_aif_ev, + SND_SOC_NOPM, 13, 0, wm8958_aif_ev, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), SND_SOC_DAPM_AIF_IN_E("AIF2DACR", NULL, 0, - WM8994_POWER_MANAGEMENT_5, 12, 0, wm8958_aif_ev, + SND_SOC_NOPM, 12, 0, wm8958_aif_ev, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), SND_SOC_DAPM_AIF_IN("AIF1DACDAT", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0), @@ -1282,14 +1869,6 @@ SND_SOC_DAPM_ADC("DMIC1R", NULL, WM8994_POWER_MANAGEMENT_4, 2, 0), SND_SOC_DAPM_ADC("ADCL", NULL, SND_SOC_NOPM, 1, 0), SND_SOC_DAPM_ADC("ADCR", NULL, SND_SOC_NOPM, 0, 0), -SND_SOC_DAPM_MUX("Left Headphone Mux", SND_SOC_NOPM, 0, 0, &hpl_mux), -SND_SOC_DAPM_MUX("Right Headphone Mux", SND_SOC_NOPM, 0, 0, &hpr_mux), - -SND_SOC_DAPM_MIXER("SPKL", WM8994_POWER_MANAGEMENT_3, 8, 0, - left_speaker_mixer, ARRAY_SIZE(left_speaker_mixer)), -SND_SOC_DAPM_MIXER("SPKR", WM8994_POWER_MANAGEMENT_3, 9, 0, - right_speaker_mixer, ARRAY_SIZE(right_speaker_mixer)), - SND_SOC_DAPM_POST("Debug log", post_ev), }; @@ -1517,6 +2096,8 @@ static const struct snd_soc_dapm_route wm8994_revd_intercon[] = { static const struct snd_soc_dapm_route wm8994_intercon[] = { { "AIF2DACL", NULL, "AIF2DAC Mux" }, { "AIF2DACR", NULL, "AIF2DAC Mux" }, + { "MICBIAS1", NULL, "VMID" }, + { "MICBIAS2", NULL, "VMID" }, }; static const struct snd_soc_dapm_route wm8958_intercon[] = { @@ -1621,29 +2202,32 @@ static int _wm8994_set_fll(struct snd_soc_codec *codec, int id, int src, unsigned int freq_in, unsigned int freq_out) { struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + struct wm8994 *control = codec->control_data; int reg_offset, ret; struct fll_div fll; - u16 reg, aif1, aif2; - - aif1 = snd_soc_read(codec, WM8994_AIF1_CLOCKING_1) - & WM8994_AIF1CLK_ENA; - - aif2 = snd_soc_read(codec, WM8994_AIF2_CLOCKING_1) - & WM8994_AIF2CLK_ENA; + u16 reg, clk1, aif_reg, aif_src; + unsigned long timeout; + bool was_enabled; + dev_info(codec->dev, "%s ++\n", __func__); switch (id) { case WM8994_FLL1: reg_offset = 0; id = 0; + aif_src = 0x10; break; case WM8994_FLL2: reg_offset = 0x20; id = 1; + aif_src = 0x18; break; default: return -EINVAL; } + reg = snd_soc_read(codec, WM8994_FLL1_CONTROL_1 + reg_offset); + was_enabled = reg & WM8994_FLL1_ENA; + switch (src) { case 0: /* Allow no source specification when stopping */ @@ -1677,36 +2261,76 @@ static int _wm8994_set_fll(struct snd_soc_codec *codec, int id, int src, if (ret < 0) return ret; - /* Gate the AIF clocks while we reclock */ - snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, - WM8994_AIF1CLK_ENA, 0); - snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, - WM8994_AIF2CLK_ENA, 0); + /* Make sure that we're not providing SYSCLK right now */ + clk1 = snd_soc_read(codec, WM8994_CLOCKING_1); + if (clk1 & WM8994_SYSCLK_SRC) + aif_reg = WM8994_AIF2_CLOCKING_1; + else + aif_reg = WM8994_AIF1_CLOCKING_1; + reg = snd_soc_read(codec, aif_reg); + + if ((reg & WM8994_AIF1CLK_ENA) && + (reg & WM8994_AIF1CLK_SRC_MASK) == aif_src) { + dev_err(codec->dev, "FLL%d is currently providing SYSCLK\n", + id + 1); + return -EBUSY; + } + /* We always need to disable the FLL while reconfiguring */ snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_1 + reg_offset, WM8994_FLL1_ENA, 0); + if (wm8994->fll_byp && src == WM8994_FLL_SRC_BCLK && + freq_in == freq_out && freq_out) { + dev_dbg(codec->dev, "Bypassing FLL%d\n", id + 1); + snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_5 + reg_offset, + WM8958_FLL1_BYP, WM8958_FLL1_BYP); + goto out; + } + reg = (fll.outdiv << WM8994_FLL1_OUTDIV_SHIFT) | (fll.fll_fratio << WM8994_FLL1_FRATIO_SHIFT); snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_2 + reg_offset, WM8994_FLL1_OUTDIV_MASK | WM8994_FLL1_FRATIO_MASK, reg); - snd_soc_write(codec, WM8994_FLL1_CONTROL_3 + reg_offset, fll.k); + snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_3 + reg_offset, + WM8994_FLL1_K_MASK, fll.k); snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_4 + reg_offset, WM8994_FLL1_N_MASK, fll.n << WM8994_FLL1_N_SHIFT); snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_5 + reg_offset, + WM8958_FLL1_BYP | WM8994_FLL1_REFCLK_DIV_MASK | WM8994_FLL1_REFCLK_SRC_MASK, (fll.clk_ref_div << WM8994_FLL1_REFCLK_DIV_SHIFT) | (src - 1)); + /* Clear any pending completion from a previous failure */ + try_wait_for_completion(&wm8994->fll_locked[id]); + /* Enable (with fractional mode if required) */ if (freq_out) { + /* Enable VMID if we need it */ + if (!was_enabled) { + active_reference(codec); + + switch (control->type) { + case WM8994: + vmid_reference(codec); + break; + case WM8958: + if (wm8994->revision < 1) + vmid_reference(codec); + break; + default: + break; + } + } + if (fll.k) reg = WM8994_FLL1_ENA | WM8994_FLL1_FRAC; else @@ -1715,24 +2339,51 @@ static int _wm8994_set_fll(struct snd_soc_codec *codec, int id, int src, WM8994_FLL1_ENA | WM8994_FLL1_FRAC, reg); - msleep(5); + if (wm8994->fll_locked_irq) { + timeout = wait_for_completion_timeout(&wm8994->fll_locked[id], + msecs_to_jiffies(10)); + if (timeout == 0) + dev_warn(codec->dev, + "Timed out waiting for FLL lock\n"); + } else { + msleep(5); + } + } else { + if (was_enabled) { + switch (control->type) { + case WM8994: + vmid_dereference(codec); + break; + case WM8958: + if (wm8994->revision < 1) + vmid_dereference(codec); + break; + default: + break; + } + + active_dereference(codec); + } } +out: wm8994->fll[id].in = freq_in; wm8994->fll[id].out = freq_out; wm8994->fll[id].src = src; - /* Enable any gated AIF clocks */ - snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, - WM8994_AIF1CLK_ENA, aif1); - snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, - WM8994_AIF2CLK_ENA, aif2); - configure_clock(codec); - + dev_info(codec->dev, "%s --\n", __func__); return 0; } +static irqreturn_t wm8994_fll_locked_irq(int irq, void *data) +{ + struct completion *completion = data; + + complete(completion); + + return IRQ_HANDLED; +} static int opclk_divs[] = { 10, 20, 30, 40, 55, 60, 80, 120, 160 }; @@ -1787,7 +2438,7 @@ static int wm8994_set_dai_sysclk(struct snd_soc_dai *dai, case WM8994_SYSCLK_OPCLK: /* Special case - a division (times 10) is given and - * no effect on main clocking. + * no effect on main clocking. */ if (freq) { for (i = 0; i < ARRAY_SIZE(opclk_divs); i++) @@ -1819,19 +2470,35 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec, struct wm8994 *control = codec->control_data; struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + wm_hubs_set_bias_level(codec, level); + switch (level) { case SND_SOC_BIAS_ON: break; case SND_SOC_BIAS_PREPARE: - /* VMID=2x40k */ - snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, - WM8994_VMID_SEL_MASK, 0x2); + /* MICBIAS into regulating mode */ + switch (control->type) { + case WM8958: + case WM1811: + snd_soc_update_bits(codec, WM8958_MICBIAS1, + WM8958_MICB1_MODE, 0); + snd_soc_update_bits(codec, WM8958_MICBIAS2, + WM8958_MICB2_MODE, 0); + break; + default: + break; + } + + if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY) + active_reference(codec); break; case SND_SOC_BIAS_STANDBY: if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) { +#if 0 /* To do */ pm_runtime_get_sync(codec->dev); +#endif switch (control->type) { case WM8994: @@ -1860,6 +2527,16 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec, WM8958_CP_DISCH); } break; + + case WM1811: + if (wm8994->revision < 4) { + snd_soc_write(codec, 0x102, 0x3); + snd_soc_write(codec, 0x56, 0x7); + snd_soc_write(codec, 0x5d, 0x7e); + snd_soc_write(codec, 0x5e, 0x0); + snd_soc_write(codec, 0x102, 0x0); + } + break; } /* Discharge LINEOUT1 & 2 */ @@ -1868,72 +2545,89 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec, WM8994_LINEOUT2_DISCH, WM8994_LINEOUT1_DISCH | WM8994_LINEOUT2_DISCH); - - /* Startup bias, VMID ramp & buffer */ - snd_soc_update_bits(codec, WM8994_ANTIPOP_2, - WM8994_STARTUP_BIAS_ENA | - WM8994_VMID_BUF_ENA | - WM8994_VMID_RAMP_MASK, - WM8994_STARTUP_BIAS_ENA | - WM8994_VMID_BUF_ENA | - (0x11 << WM8994_VMID_RAMP_SHIFT)); - - /* Main bias enable, VMID=2x40k */ - snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, - WM8994_BIAS_ENA | - WM8994_VMID_SEL_MASK, - WM8994_BIAS_ENA | 0x2); - - msleep(20); } - /* VMID=2x500k */ - snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, - WM8994_VMID_SEL_MASK, 0x4); + if (codec->dapm.bias_level == SND_SOC_BIAS_PREPARE) + active_dereference(codec); + /* MICBIAS into bypass mode on newer devices */ + switch (control->type) { + case WM8958: + case WM1811: + snd_soc_update_bits(codec, WM8958_MICBIAS1, + WM8958_MICB1_MODE, + WM8958_MICB1_MODE); + snd_soc_update_bits(codec, WM8958_MICBIAS2, + WM8958_MICB2_MODE, + WM8958_MICB2_MODE); + break; + default: + break; + } break; case SND_SOC_BIAS_OFF: if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY) { - /* Switch over to startup biases */ - snd_soc_update_bits(codec, WM8994_ANTIPOP_2, - WM8994_BIAS_SRC | - WM8994_STARTUP_BIAS_ENA | - WM8994_VMID_BUF_ENA | - WM8994_VMID_RAMP_MASK, - WM8994_BIAS_SRC | - WM8994_STARTUP_BIAS_ENA | - WM8994_VMID_BUF_ENA | - (1 << WM8994_VMID_RAMP_SHIFT)); + wm8994->cur_fw = NULL; - /* Disable main biases */ - snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, - WM8994_BIAS_ENA | - WM8994_VMID_SEL_MASK, 0); +#if 0 /* To do */ + pm_runtime_put(codec->dev); +#endif + } + break; + } - /* Discharge line */ - snd_soc_update_bits(codec, WM8994_ANTIPOP_1, - WM8994_LINEOUT1_DISCH | - WM8994_LINEOUT2_DISCH, - WM8994_LINEOUT1_DISCH | - WM8994_LINEOUT2_DISCH); + codec->dapm.bias_level = level; - msleep(5); + return 0; +} - /* Switch off startup biases */ - snd_soc_update_bits(codec, WM8994_ANTIPOP_2, - WM8994_BIAS_SRC | - WM8994_STARTUP_BIAS_ENA | - WM8994_VMID_BUF_ENA | - WM8994_VMID_RAMP_MASK, 0); +int wm8994_vmid_mode(struct snd_soc_codec *codec, enum wm8994_vmid_mode mode) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); - wm8994->cur_fw = NULL; + switch (mode) { + case WM8994_VMID_NORMAL: + if (wm8994->hubs.lineout1_se) { + snd_soc_dapm_disable_pin(&codec->dapm, + "LINEOUT1N Driver"); + snd_soc_dapm_disable_pin(&codec->dapm, + "LINEOUT1P Driver"); + } + if (wm8994->hubs.lineout2_se) { + snd_soc_dapm_disable_pin(&codec->dapm, + "LINEOUT2N Driver"); + snd_soc_dapm_disable_pin(&codec->dapm, + "LINEOUT2P Driver"); + } - pm_runtime_put(codec->dev); + /* Do the sync with the old mode to allow it to clean up */ + snd_soc_dapm_sync(&codec->dapm); + wm8994->vmid_mode = mode; + break; + + case WM8994_VMID_FORCE: + if (wm8994->hubs.lineout1_se) { + snd_soc_dapm_force_enable_pin(&codec->dapm, + "LINEOUT1N Driver"); + snd_soc_dapm_force_enable_pin(&codec->dapm, + "LINEOUT1P Driver"); } + if (wm8994->hubs.lineout2_se) { + snd_soc_dapm_force_enable_pin(&codec->dapm, + "LINEOUT2N Driver"); + snd_soc_dapm_force_enable_pin(&codec->dapm, + "LINEOUT2P Driver"); + } + + wm8994->vmid_mode = mode; + snd_soc_dapm_sync(&codec->dapm); break; + + default: + return -EINVAL; } - codec->dapm.bias_level = level; + return 0; } @@ -2027,10 +2721,18 @@ static int wm8994_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt) /* The AIF2 format configuration needs to be mirrored to AIF3 * on WM8958 if it's in use so just do it all the time. */ - if (control->type == WM8958 && dai->id == 2) - snd_soc_update_bits(codec, WM8958_AIF3_CONTROL_1, - WM8994_AIF1_LRCLK_INV | - WM8958_AIF3_FMT_MASK, aif1); + switch (control->type) { + case WM1811: + case WM8958: + if (dai->id == 2) + snd_soc_update_bits(codec, WM8958_AIF3_CONTROL_1, + WM8994_AIF1_LRCLK_INV | + WM8958_AIF3_FMT_MASK, aif1); + break; + + default: + break; + } snd_soc_update_bits(codec, aif1_reg, WM8994_AIF1_BCLK_INV | WM8994_AIF1_LRCLK_INV | @@ -2117,6 +2819,7 @@ static int wm8994_hw_params(struct snd_pcm_substream *substream, break; case 3: switch (control->type) { + case WM1811: case WM8958: aif1_reg = WM8958_AIF3_CONTROL_1; break; @@ -2243,6 +2946,7 @@ static int wm8994_aif3_hw_params(struct snd_pcm_substream *substream, switch (dai->id) { case 3: switch (control->type) { + case WM1811: case WM8958: aif1_reg = WM8958_AIF3_CONTROL_1; break; @@ -2284,6 +2988,9 @@ static int wm8994_aif_mute(struct snd_soc_dai *codec_dai, int mute) break; case 2: mute_reg = WM8994_AIF2_DAC_FILTERS_1; + if (snd_soc_read(codec, WM8994_POWER_MANAGEMENT_6) + & WM8994_AIF2_DACDAT_SRC) + mute = 0; break; default: return -EINVAL; @@ -2329,6 +3036,21 @@ static int wm8994_set_tristate(struct snd_soc_dai *codec_dai, int tristate) return snd_soc_update_bits(codec, reg, mask, val); } +static int wm8994_aif2_probe(struct snd_soc_dai *dai) +{ + struct snd_soc_codec *codec = dai->codec; + + /* Disable the pulls on the AIF if we're using it to save power. */ + snd_soc_update_bits(codec, WM8994_GPIO_3, + WM8994_GPN_PU | WM8994_GPN_PD, 0); + snd_soc_update_bits(codec, WM8994_GPIO_4, + WM8994_GPN_PU | WM8994_GPN_PD, 0); + snd_soc_update_bits(codec, WM8994_GPIO_5, + WM8994_GPN_PU | WM8994_GPN_PD, 0); + + return 0; +} + #define WM8994_RATES SNDRV_PCM_RATE_8000_96000 #define WM8994_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ @@ -2394,6 +3116,7 @@ static struct snd_soc_dai_driver wm8994_dai[] = { .rates = WM8994_RATES, .formats = WM8994_FORMATS, }, + .probe = wm8994_aif2_probe, .ops = &wm8994_aif2_dai_ops, }, { @@ -2418,7 +3141,7 @@ static struct snd_soc_dai_driver wm8994_dai[] = { }; #ifdef CONFIG_PM -static int wm8994_suspend(struct snd_soc_codec *codec, pm_message_t state) +static int wm8994_codec_suspend(struct snd_soc_codec *codec, pm_message_t state) { struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); struct wm8994 *control = codec->control_data; @@ -2428,6 +3151,10 @@ static int wm8994_suspend(struct snd_soc_codec *codec, pm_message_t state) case WM8994: snd_soc_update_bits(codec, WM8994_MICBIAS, WM8994_MICD_ENA, 0); break; + case WM1811: + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, 0); + /* Fall through */ case WM8958: snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, WM8958_MICD_ENA, 0); @@ -2448,7 +3175,7 @@ static int wm8994_suspend(struct snd_soc_codec *codec, pm_message_t state) return 0; } -static int wm8994_resume(struct snd_soc_codec *codec) +static int wm8994_codec_resume(struct snd_soc_codec *codec) { struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); struct wm8994 *control = codec->control_data; @@ -2496,6 +3223,15 @@ static int wm8994_resume(struct snd_soc_codec *codec) snd_soc_update_bits(codec, WM8994_MICBIAS, WM8994_MICD_ENA, WM8994_MICD_ENA); break; + case WM1811: + if (wm8994->jackdet && wm8994->jack_cb) { + /* Restart from idle */ + snd_soc_update_bits(codec, WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + WM1811_JACKDET_MODE_JACK); + break; + } + break; case WM8958: if (wm8994->jack_cb) snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, @@ -2506,8 +3242,8 @@ static int wm8994_resume(struct snd_soc_codec *codec) return 0; } #else -#define wm8994_suspend NULL -#define wm8994_resume NULL +#define wm8994_codec_suspend NULL +#define wm8994_codec_resume NULL #endif static void wm8994_handle_retune_mobile_pdata(struct wm8994_priv *wm8994) @@ -2549,14 +3285,14 @@ static void wm8994_handle_retune_mobile_pdata(struct wm8994_priv *wm8994) /* Expand the array... */ t = krealloc(wm8994->retune_mobile_texts, - sizeof(char *) * + sizeof(char *) * (wm8994->num_retune_mobile_texts + 1), GFP_KERNEL); if (t == NULL) continue; /* ...store the new entry... */ - t[wm8994->num_retune_mobile_texts] = + t[wm8994->num_retune_mobile_texts] = pdata->retune_mobile_cfgs[i].name; /* ...and remember the new version. */ @@ -2687,7 +3423,7 @@ int wm8994_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack, break; default: return -EINVAL; - } + } dev_dbg(codec->dev, "Configuring microphone detection on %d: %x %x\n", micbias, det, shrt); @@ -2700,7 +3436,7 @@ int wm8994_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack, /* If either of the jacks is set up then enable detection */ if (wm8994->micdet[0].jack || wm8994->micdet[1].jack) reg = WM8994_MICD_ENA; - else + else reg = 0; snd_soc_update_bits(codec, WM8994_MICBIAS, WM8994_MICD_ENA, reg); @@ -2755,21 +3491,181 @@ static void wm8958_default_micdet(u16 status, void *data) { struct snd_soc_codec *codec = data; struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); - int report = 0; + int report; + + /* Either nothing present or just starting detection */ + if (!(status & WM8958_MICD_STS)) { + if (!wm8994->jackdet) { + /* If nothing present then clear our statuses */ + dev_dbg(codec->dev, "Detected open circuit\n"); + wm8994->jack_mic = false; + wm8994->mic_detecting = true; + + wm8958_micd_set_rate(codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, 0, + wm8994->btn_mask | + SND_JACK_HEADSET); + } + return; + } + + /* If the measurement is showing a high impedence we've got a + * microphone. + */ + if (wm8994->mic_detecting && (status & 0x600)) { + dev_dbg(codec->dev, "Detected microphone\n"); + + wm8994->mic_detecting = false; + wm8994->jack_mic = true; + + wm8958_micd_set_rate(codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADSET, + SND_JACK_HEADSET); + } + + + if (wm8994->mic_detecting && status & 0x4) { + dev_dbg(codec->dev, "Detected headphone\n"); + wm8994->mic_detecting = false; + + wm8958_micd_set_rate(codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADPHONE, + SND_JACK_HEADSET); + + /* If we have jackdet that will detect removal */ + if (wm8994->jackdet) { + mutex_lock(&wm8994->accdet_lock); + + snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, + WM8958_MICD_ENA, 0); + + wm1811_jackdet_set_mode(codec, + WM1811_JACKDET_MODE_JACK); + + mutex_unlock(&wm8994->accdet_lock); + + if (wm8994->pdata->jd_ext_cap) { + mutex_lock(&codec->mutex); + snd_soc_dapm_disable_pin(&codec->dapm, + "MICBIAS2"); + snd_soc_dapm_sync(&codec->dapm); + mutex_unlock(&codec->mutex); + } + } + } + + /* Report short circuit as a button */ + if (wm8994->jack_mic) { + report = 0; + if (status & 0x4) + report |= SND_JACK_BTN_0; - /* If nothing present then clear our statuses */ - if (!(status & WM8958_MICD_STS)) - goto done; + if (status & 0x8) + report |= SND_JACK_BTN_1; - report = SND_JACK_MICROPHONE; + if (status & 0x10) + report |= SND_JACK_BTN_2; - /* Everything else is buttons; just assign slots */ - if (status & 0x1c) - report |= SND_JACK_BTN_0; + if (status & 0x20) + report |= SND_JACK_BTN_3; -done: - snd_soc_jack_report(wm8994->micdet[0].jack, report, - SND_JACK_BTN_0 | SND_JACK_MICROPHONE); + if (status & 0x40) + report |= SND_JACK_BTN_4; + + if (status & 0x80) + report |= SND_JACK_BTN_5; + + snd_soc_jack_report(wm8994->micdet[0].jack, report, + wm8994->btn_mask); + } +} + +static irqreturn_t wm1811_jackdet_irq(int irq, void *data) +{ + struct wm8994_priv *wm8994 = data; + struct snd_soc_codec *codec = wm8994->codec; + int reg; + bool present; + + mutex_lock(&wm8994->accdet_lock); + + reg = snd_soc_read(codec, WM1811_JACKDET_CTRL); + if (reg < 0) { + dev_err(codec->dev, "Failed to read jack status: %d\n", reg); + mutex_unlock(&wm8994->accdet_lock); + return IRQ_NONE; + } + + dev_dbg(codec->dev, "JACKDET %x\n", reg); + + present = reg & WM1811_JACKDET_LVL; + + if (present) { + dev_dbg(codec->dev, "Jack detected\n"); + + wm8958_micd_set_rate(codec); + + snd_soc_update_bits(codec, WM8958_MICBIAS2, + WM8958_MICB2_DISCH, 0); + + /* Disable debounce while inserted */ + snd_soc_update_bits(codec, WM1811_JACKDET_CTRL, + WM1811_JACKDET_DB, 0); + + /* + * Start off measument of microphone impedence to find + * out what's actually there. + */ + wm8994->mic_detecting = true; + wm1811_jackdet_set_mode(codec, WM1811_JACKDET_MODE_MIC); + + snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, + WM8958_MICD_ENA, WM8958_MICD_ENA); + } else { + dev_dbg(codec->dev, "Jack not detected\n"); + + snd_soc_update_bits(codec, WM8958_MICBIAS2, + WM8958_MICB2_DISCH, WM8958_MICB2_DISCH); + + /* Enable debounce while removed */ + snd_soc_update_bits(codec, WM1811_JACKDET_CTRL, + WM1811_JACKDET_DB, WM1811_JACKDET_DB); + + wm8994->mic_detecting = false; + wm8994->jack_mic = false; + snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, + WM8958_MICD_ENA, 0); + wm1811_jackdet_set_mode(codec, WM1811_JACKDET_MODE_JACK); + } + + mutex_unlock(&wm8994->accdet_lock); + + /* If required for an external cap force MICBIAS on */ + if (wm8994->pdata->jd_ext_cap) { + mutex_lock(&codec->mutex); + + if (present) + snd_soc_dapm_force_enable_pin(&codec->dapm, + "MICBIAS2"); + else + snd_soc_dapm_disable_pin(&codec->dapm, "MICBIAS2"); + + snd_soc_dapm_sync(&codec->dapm); + mutex_unlock(&codec->mutex); + } + + if (present) + snd_soc_jack_report(wm8994->micdet[0].jack, + SND_JACK_MECHANICAL, SND_JACK_MECHANICAL); + else + snd_soc_jack_report(wm8994->micdet[0].jack, 0, + SND_JACK_MECHANICAL | SND_JACK_HEADSET | + wm8994->btn_mask); + + return IRQ_HANDLED; } /** @@ -2793,9 +3689,15 @@ int wm8958_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack, { struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); struct wm8994 *control = codec->control_data; + u16 micd_lvl_sel; - if (control->type != WM8958) + switch (control->type) { + case WM1811: + case WM8958: + break; + default: return -EINVAL; + } if (jack) { if (!cb) { @@ -2804,15 +3706,56 @@ int wm8958_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack, cb_data = codec; } + snd_soc_dapm_force_enable_pin(&codec->dapm, "CLK_SYS"); + snd_soc_dapm_sync(&codec->dapm); + wm8994->micdet[0].jack = jack; wm8994->jack_cb = cb; wm8994->jack_cb_data = cb_data; - snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, - WM8958_MICD_ENA, WM8958_MICD_ENA); + wm8994->mic_detecting = true; + wm8994->jack_mic = false; + + wm8958_micd_set_rate(codec); + + /* Detect microphones and short circuits by default */ + if (wm8994->pdata->micd_lvl_sel) + micd_lvl_sel = wm8994->pdata->micd_lvl_sel; + else + micd_lvl_sel = 0x41; + + wm8994->btn_mask = SND_JACK_BTN_0 | SND_JACK_BTN_1 | + SND_JACK_BTN_2 | SND_JACK_BTN_3 | + SND_JACK_BTN_4 | SND_JACK_BTN_5; + + snd_soc_update_bits(codec, WM8958_MIC_DETECT_2, + WM8958_MICD_LVL_SEL_MASK, micd_lvl_sel); + + WARN_ON(codec->dapm.bias_level > SND_SOC_BIAS_STANDBY); + + /* + * If we can use jack detection start off with that, + * otherwise jump straight to microphone detection. + */ + if (wm8994->jackdet) { + snd_soc_update_bits(codec, WM8958_MICBIAS2, + WM8958_MICB2_DISCH, + WM8958_MICB2_DISCH); + snd_soc_update_bits(codec, WM8994_LDO_1, + WM8994_LDO1_DISCH, 0); + wm1811_jackdet_set_mode(codec, + WM1811_JACKDET_MODE_JACK); + } else { + snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, + WM8958_MICD_ENA, WM8958_MICD_ENA); + } + } else { snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, WM8958_MICD_ENA, 0); + wm1811_jackdet_set_mode(codec, WM1811_JACKDET_MODE_NONE); + snd_soc_dapm_disable_pin(&codec->dapm, "CLK_SYS"); + snd_soc_dapm_sync(&codec->dapm); } return 0; @@ -2823,19 +3766,42 @@ static irqreturn_t wm8958_mic_irq(int irq, void *data) { struct wm8994_priv *wm8994 = data; struct snd_soc_codec *codec = wm8994->codec; - int reg; + int reg, count; - reg = snd_soc_read(codec, WM8958_MIC_DETECT_3); - if (reg < 0) { - dev_err(codec->dev, "Failed to read mic detect status: %d\n", - reg); - return IRQ_NONE; - } + /* + * Jack detection may have detected a removal simulataneously + * with an update of the MICDET status; if so it will have + * stopped detection and we can ignore this interrupt. + */ + if (!(snd_soc_read(codec, WM8958_MIC_DETECT_1) & WM8958_MICD_ENA)) + return IRQ_HANDLED; - if (!(reg & WM8958_MICD_VALID)) { - dev_dbg(codec->dev, "Mic detect data not valid\n"); - goto out; - } + /* We may occasionally read a detection without an impedence + * range being provided - if that happens loop again. + */ + count = 10; + do { + reg = snd_soc_read(codec, WM8958_MIC_DETECT_3); + if (reg < 0) { + dev_err(codec->dev, + "Failed to read mic detect status: %d\n", + reg); + return IRQ_NONE; + } + + if (!(reg & WM8958_MICD_VALID)) { + dev_dbg(codec->dev, "Mic detect data not valid\n"); + goto out; + } + + if (!(reg & WM8958_MICD_STS) || (reg & WM8958_MICD_LVL_MASK)) + break; + + msleep(1); + } while (count--); + + if (count == 0) + dev_warn(codec->dev, "No impedence range reported for jack\n"); #ifndef CONFIG_SND_SOC_WM8994_MODULE trace_snd_soc_jack_irq(dev_name(codec->dev)); @@ -2850,6 +3816,33 @@ out: return IRQ_HANDLED; } +static irqreturn_t wm8994_fifo_error(int irq, void *data) +{ + struct snd_soc_codec *codec = data; + + dev_err(codec->dev, "FIFO error\n"); + + return IRQ_HANDLED; +} + +static irqreturn_t wm8994_temp_warn(int irq, void *data) +{ + struct snd_soc_codec *codec = data; + + dev_err(codec->dev, "Thermal warning\n"); + + return IRQ_HANDLED; +} + +static irqreturn_t wm8994_temp_shut(int irq, void *data) +{ + struct snd_soc_codec *codec = data; + + dev_crit(codec->dev, "Thermal shutdown\n"); + + return IRQ_HANDLED; +} + static int wm8994_codec_probe(struct snd_soc_codec *codec) { struct wm8994 *control; @@ -2868,14 +3861,21 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) wm8994->pdata = dev_get_platdata(codec->dev->parent); wm8994->codec = codec; + mutex_init(&wm8994->accdet_lock); + + for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) + init_completion(&wm8994->fll_locked[i]); + if (wm8994->pdata && wm8994->pdata->micdet_irq) wm8994->micdet_irq = wm8994->pdata->micdet_irq; else if (wm8994->pdata && wm8994->pdata->irq_base) wm8994->micdet_irq = wm8994->pdata->irq_base + WM8994_IRQ_MIC1_DET; +#if 0 /* To do */ pm_runtime_enable(codec->dev); pm_runtime_resume(codec->dev); +#endif /* Read our current status back from the chip - we don't want to * reset as this may interfere with the GPIO or LDO operation. */ @@ -2896,30 +3896,88 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) } } + /* By default use idle_bias_off, will override for WM8994 */ + codec->dapm.idle_bias_off = 1; + /* Set revision-specific configuration */ wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION); switch (control->type) { case WM8994: + /* Single ended line outputs should have VMID on. */ + if (!wm8994->pdata->lineout1_diff || + !wm8994->pdata->lineout2_diff) + codec->dapm.idle_bias_off = 0; + switch (wm8994->revision) { case 2: case 3: - wm8994->hubs.dcs_codes = -5; + wm8994->hubs.dcs_codes_l = -5; + wm8994->hubs.dcs_codes_r = -5; wm8994->hubs.hp_startup_mode = 1; wm8994->hubs.dcs_readback_mode = 1; + wm8994->hubs.series_startup = 1; break; default: - wm8994->hubs.dcs_readback_mode = 1; + wm8994->hubs.dcs_readback_mode = 2; break; } + break; case WM8958: wm8994->hubs.dcs_readback_mode = 1; + wm8994->hubs.hp_startup_mode = 1; + + switch (wm8994->revision) { + case 0: + break; + default: + wm8994->fll_byp = true; + break; + } + break; + + case WM1811: + wm8994->hubs.dcs_readback_mode = 2; + wm8994->hubs.no_series_update = 1; + wm8994->hubs.hp_startup_mode = 1; + wm8994->hubs.no_cache_class_w = true; + wm8994->fll_byp = true; + + switch (wm8994->revision) { + case 0: + case 1: + case 2: + case 3: + wm8994->hubs.dcs_codes_l = -9; + wm8994->hubs.dcs_codes_r = -7; + break; + default: + break; + } + + snd_soc_update_bits(codec, WM8994_ANALOGUE_HP_1, + WM1811_HPOUT1_ATTN, WM1811_HPOUT1_ATTN); break; default: break; } +#if 0 /* To do */ + wm8994_request_irq(codec->control_data, WM8994_IRQ_FIFOS_ERR, + wm8994_fifo_error, "FIFO error", codec); + wm8994_request_irq(codec->control_data, WM8994_IRQ_TEMP_WARN, + wm8994_temp_warn, "Thermal warning", codec); + wm8994_request_irq(codec->control_data, WM8994_IRQ_TEMP_SHUT, + wm8994_temp_shut, "Thermal shutdown", codec); + + ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_DCS_DONE, + wm_hubs_dcs_done, "DC servo done", + &wm8994->hubs); + if (ret == 0) + wm8994->hubs.dcs_done_irq = true; +#endif + switch (control->type) { case WM8994: if (wm8994->micdet_irq) { @@ -2963,19 +4021,53 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) break; case WM8958: + case WM1811: if (wm8994->micdet_irq) { ret = request_threaded_irq(wm8994->micdet_irq, NULL, wm8958_mic_irq, IRQF_TRIGGER_RISING, "Mic detect", wm8994); - if (ret != 0) + if (ret != 0) { dev_warn(codec->dev, "Failed to request Mic detect IRQ: %d\n", ret); + } } } + switch (control->type) { + case WM1811: + if (wm8994->revision > 1) { + ret = wm8994_request_irq(codec->control_data, + WM8994_IRQ_GPIO(6), + wm1811_jackdet_irq, "JACKDET", + wm8994); + if (ret == 0) { + wm8994->jackdet = true; + } else { + dev_warn(codec->dev, + "Failed to request Jack detect IRQ: %d\n", + ret); + } + } + break; + default: + break; + } + +#if 0 /* To do */ + wm8994->fll_locked_irq = true; + for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) { + ret = wm8994_request_irq(codec->control_data, + WM8994_IRQ_FLL1_LOCK + i, + wm8994_fll_locked_irq, "FLL lock", + &wm8994->fll_locked[i]); + if (ret != 0) + wm8994->fll_locked_irq = false; + } +#endif + /* Remember if AIFnLRCLK is configured as a GPIO. This should be * configured on init - if a system wants to do this dynamically * at runtime we can deal with that then. @@ -3051,10 +4143,31 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) 1 << WM8994_AIF2DAC_3D_GAIN_SHIFT, 1 << WM8994_AIF2DAC_3D_GAIN_SHIFT); - /* Unconditionally enable AIF1 ADC TDM mode; it only affects - * behaviour on idle TDM clock cycles. */ - snd_soc_update_bits(codec, WM8994_AIF1_CONTROL_1, - WM8994_AIF1ADC_TDM, WM8994_AIF1ADC_TDM); + /* Unconditionally enable AIF1 ADC TDM mode on chips which can + * use this; it only affects behaviour on idle TDM clock + * cycles. */ + switch (control->type) { + case WM8994: + case WM8958: + snd_soc_update_bits(codec, WM8994_AIF1_CONTROL_1, + WM8994_AIF1ADC_TDM, WM8994_AIF1ADC_TDM); + break; + default: + break; + } + + /* Put MICBIAS into bypass mode by default on newer devices */ + switch (control->type) { + case WM8958: + case WM1811: + snd_soc_update_bits(codec, WM8958_MICBIAS1, + WM8958_MICB1_MODE, WM8958_MICB1_MODE); + snd_soc_update_bits(codec, WM8958_MICBIAS2, + WM8958_MICB2_MODE, WM8958_MICB2_MODE); + break; + default: + break; + } wm8994_update_class_w(codec); @@ -3107,8 +4220,21 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) ARRAY_SIZE(wm8994_dac_widgets)); } break; + + case WM1811: + snd_soc_add_controls(codec, wm8958_snd_controls, + ARRAY_SIZE(wm8958_snd_controls)); + snd_soc_dapm_new_controls(dapm, wm8958_dapm_widgets, + ARRAY_SIZE(wm8958_dapm_widgets)); + snd_soc_dapm_new_controls(dapm, wm8994_lateclk_widgets, + ARRAY_SIZE(wm8994_lateclk_widgets)); + snd_soc_dapm_new_controls(dapm, wm8994_adc_widgets, + ARRAY_SIZE(wm8994_adc_widgets)); + snd_soc_dapm_new_controls(dapm, wm8994_dac_widgets, + ARRAY_SIZE(wm8994_dac_widgets)); + break; } - + wm_hubs_add_analogue_routes(codec, 0, 0); snd_soc_dapm_add_routes(dapm, intercon, ARRAY_SIZE(intercon)); @@ -3143,16 +4269,33 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) wm8958_dsp2_init(codec); break; + case WM1811: + snd_soc_dapm_add_routes(dapm, wm8994_lateclk_intercon, + ARRAY_SIZE(wm8994_lateclk_intercon)); + snd_soc_dapm_add_routes(dapm, wm8958_intercon, + ARRAY_SIZE(wm8958_intercon)); + break; } return 0; err_irq: + if (wm8994->jackdet) + wm8994_free_irq(wm8994->control_data, WM8994_IRQ_GPIO(6), + wm8994); wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_SHRT, wm8994); wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_DET, wm8994); wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC1_SHRT, wm8994); if (wm8994->micdet_irq) free_irq(wm8994->micdet_irq, wm8994); + for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) + wm8994_free_irq(codec->control_data, WM8994_IRQ_FLL1_LOCK + i, + &wm8994->fll_locked[i]); + wm8994_free_irq(codec->control_data, WM8994_IRQ_DCS_DONE, + &wm8994->hubs); + wm8994_free_irq(codec->control_data, WM8994_IRQ_FIFOS_ERR, codec); + wm8994_free_irq(codec->control_data, WM8994_IRQ_TEMP_SHUT, codec); + wm8994_free_irq(codec->control_data, WM8994_IRQ_TEMP_WARN, codec); err: kfree(wm8994); return ret; @@ -3162,10 +4305,27 @@ static int wm8994_codec_remove(struct snd_soc_codec *codec) { struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); struct wm8994 *control = codec->control_data; + int i; wm8994_set_bias_level(codec, SND_SOC_BIAS_OFF); +#if 0 /* To do */ pm_runtime_disable(codec->dev); +#endif + + for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) + wm8994_free_irq(codec->control_data, WM8994_IRQ_FLL1_LOCK + i, + &wm8994->fll_locked[i]); + + wm8994_free_irq(codec->control_data, WM8994_IRQ_DCS_DONE, + &wm8994->hubs); + wm8994_free_irq(codec->control_data, WM8994_IRQ_FIFOS_ERR, codec); + wm8994_free_irq(codec->control_data, WM8994_IRQ_TEMP_SHUT, codec); + wm8994_free_irq(codec->control_data, WM8994_IRQ_TEMP_WARN, codec); + + if (wm8994->jackdet) + wm8994_free_irq(wm8994->control_data, WM8994_IRQ_GPIO(6), + wm8994); switch (control->type) { case WM8994: @@ -3179,6 +4339,7 @@ static int wm8994_codec_remove(struct snd_soc_codec *codec) wm8994); break; + case WM1811: case WM8958: if (wm8994->micdet_irq) free_irq(wm8994->micdet_irq, wm8994); @@ -3200,14 +4361,15 @@ static int wm8994_codec_remove(struct snd_soc_codec *codec) static struct snd_soc_codec_driver soc_codec_dev_wm8994 = { .probe = wm8994_codec_probe, .remove = wm8994_codec_remove, - .suspend = wm8994_suspend, - .resume = wm8994_resume, + .suspend = wm8994_codec_suspend, + .resume = wm8994_codec_resume, .read = wm8994_read, .write = wm8994_write, .readable_register = wm8994_readable, .volatile_register = wm8994_volatile, .set_bias_level = wm8994_set_bias_level, + .max_register = WM8994_MAX_REGISTER, .reg_cache_size = WM8994_CACHE_SIZE, .reg_cache_default = wm8994_reg_defaults, .reg_word_size = 2, @@ -3226,11 +4388,45 @@ static int __devexit wm8994_remove(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM_SLEEP +static int wm8994_suspend(struct device *dev) +{ + struct wm8994_priv *wm8994 = dev_get_drvdata(dev); + + /* Drop down to power saving mode when system is suspended */ + if (wm8994->jackdet && !wm8994->active_refcount) + snd_soc_update_bits(wm8994->codec, WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + wm8994->jackdet_mode); + + return 0; +} + +static int wm8994_resume(struct device *dev) +{ + struct wm8994_priv *wm8994 = dev_get_drvdata(dev); + + if (wm8994->jackdet && wm8994->jack_cb) { + snd_soc_update_bits(wm8994->codec, WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + WM1811_JACKDET_MODE_AUDIO); + msleep(2); + } + + return 0; +} +#endif + +static struct dev_pm_ops wm8994_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(wm8994_suspend, wm8994_resume) +}; + static struct platform_driver wm8994_codec_driver = { .driver = { - .name = "wm8994-codec", - .owner = THIS_MODULE, - }, + .name = "wm8994-codec", + .owner = THIS_MODULE, + .pm = &wm8994_pm_ops, + }, .probe = wm8994_probe, .remove = __devexit_p(wm8994_remove), }; diff --git a/sound/soc/codecs/wm8994.h b/sound/soc/codecs/wm8994.h index 0a1db04..a962b72 100644 --- a/sound/soc/codecs/wm8994.h +++ b/sound/soc/codecs/wm8994.h @@ -11,6 +11,7 @@ #include <sound/soc.h> #include <linux/firmware.h> +#include <linux/completion.h> #include "wm_hubs.h" @@ -31,6 +32,11 @@ #define WM8994_FLL_SRC_LRCLK 3 #define WM8994_FLL_SRC_BCLK 4 +enum wm8994_vmid_mode { + WM8994_VMID_NORMAL, + WM8994_VMID_FORCE, +}; + typedef void (*wm8958_micdet_cb)(u16 status, void *data); int wm8994_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack, @@ -48,6 +54,8 @@ struct wm8994_access_mask { extern const struct wm8994_access_mask wm8994_access_masks[WM8994_CACHE_SIZE]; extern const u16 wm8994_reg_defaults[WM8994_CACHE_SIZE]; +int wm8994_vmid_mode(struct snd_soc_codec *codec, enum wm8994_vmid_mode mode); + int wm8958_aif_ev(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event); @@ -79,6 +87,13 @@ struct wm8994_priv { int mclk[2]; int aifclk[2]; struct wm8994_fll_config fll[2], fll_suspend[2]; + struct completion fll_locked[2]; + bool fll_locked_irq; + bool fll_byp; + + int vmid_refcount; + int active_refcount; + enum wm8994_vmid_mode vmid_mode; int dac_rates[2]; int lrclk_shared[2]; @@ -120,7 +135,13 @@ struct wm8994_priv { const char **enh_eq_texts; struct soc_enum enh_eq_enum; + struct mutex accdet_lock; struct wm8994_micdet micdet[2]; + bool mic_detecting; + bool jack_mic; + int btn_mask; + bool jackdet; + int jackdet_mode; wm8958_micdet_cb jack_cb; void *jack_cb_data; diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c index 9e370d1..54cbfe4 100644 --- a/sound/soc/codecs/wm_hubs.c +++ b/sound/soc/codecs/wm_hubs.c @@ -18,6 +18,7 @@ #include <linux/pm.h> #include <linux/i2c.h> #include <linux/platform_device.h> +#include <linux/mfd/wm8994/registers.h> #include <sound/core.h> #include <sound/pcm.h> #include <sound/pcm_params.h> @@ -63,8 +64,10 @@ static const struct soc_enum speaker_mode = static void wait_for_dc_servo(struct snd_soc_codec *codec, unsigned int op) { + struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec); unsigned int reg; int count = 0; + int timeout; unsigned int val; val = op | WM8993_DCS_ENA_CHAN_0 | WM8993_DCS_ENA_CHAN_1; @@ -74,18 +77,39 @@ static void wait_for_dc_servo(struct snd_soc_codec *codec, unsigned int op) dev_dbg(codec->dev, "Waiting for DC servo...\n"); + if (hubs->dcs_done_irq) + timeout = 4; + else + timeout = 400; + do { count++; - msleep(1); + + if (hubs->dcs_done_irq) + wait_for_completion_timeout(&hubs->dcs_done, + msecs_to_jiffies(250)); + else + msleep(1); + reg = snd_soc_read(codec, WM8993_DC_SERVO_0); dev_dbg(codec->dev, "DC servo: %x\n", reg); - } while (reg & op && count < 400); + } while (reg & op && count < timeout); if (reg & op) dev_err(codec->dev, "Timed out waiting for DC Servo %x\n", op); } +irqreturn_t wm_hubs_dcs_done(int irq, void *data) +{ + struct wm_hubs_data *hubs = data; + + complete(&hubs->dcs_done); + + return IRQ_HANDLED; +} +EXPORT_SYMBOL_GPL(wm_hubs_dcs_done); + /* * Startup calibration of the DC servo */ @@ -93,22 +117,30 @@ static void calibrate_dc_servo(struct snd_soc_codec *codec) { struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec); s8 offset; - u16 reg, reg_l, reg_r, dcs_cfg; + u16 reg, reg_l, reg_r, dcs_cfg, dcs_reg; + + switch (hubs->dcs_readback_mode) { + case 2: + dcs_reg = WM8994_DC_SERVO_4E; + break; + default: + dcs_reg = WM8993_DC_SERVO_3; + break; + } /* If we're using a digital only path and have a previously * callibrated DC servo offset stored then use that. */ if (hubs->class_w && hubs->class_w_dcs) { dev_dbg(codec->dev, "Using cached DC servo offset %x\n", hubs->class_w_dcs); - snd_soc_write(codec, WM8993_DC_SERVO_3, hubs->class_w_dcs); + snd_soc_write(codec, dcs_reg, hubs->class_w_dcs); wait_for_dc_servo(codec, WM8993_DCS_TRIG_DAC_WR_0 | WM8993_DCS_TRIG_DAC_WR_1); return; } - /* Devices not using a DCS code correction have startup mode */ - if (hubs->dcs_codes) { + if (hubs->series_startup) { /* Set for 32 series updates */ snd_soc_update_bits(codec, WM8993_DC_SERVO_1, WM8993_DCS_SERIES_NO_01_MASK, @@ -132,49 +164,51 @@ static void calibrate_dc_servo(struct snd_soc_codec *codec) reg_r = snd_soc_read(codec, WM8993_DC_SERVO_READBACK_2) & WM8993_DCS_INTEG_CHAN_1_MASK; break; + case 2: case 1: - reg = snd_soc_read(codec, WM8993_DC_SERVO_3); - reg_l = (reg & WM8993_DCS_DAC_WR_VAL_1_MASK) + reg = snd_soc_read(codec, dcs_reg); + reg_r = (reg & WM8993_DCS_DAC_WR_VAL_1_MASK) >> WM8993_DCS_DAC_WR_VAL_1_SHIFT; - reg_r = reg & WM8993_DCS_DAC_WR_VAL_0_MASK; + reg_l = reg & WM8993_DCS_DAC_WR_VAL_0_MASK; break; default: WARN(1, "Unknown DCS readback method\n"); - break; + return; } dev_dbg(codec->dev, "DCS input: %x %x\n", reg_l, reg_r); /* Apply correction to DC servo result */ - if (hubs->dcs_codes) { - dev_dbg(codec->dev, "Applying %d code DC servo correction\n", - hubs->dcs_codes); - - /* HPOUT1L */ - offset = reg_l; - offset += hubs->dcs_codes; - dcs_cfg = (u8)offset << WM8993_DCS_DAC_WR_VAL_1_SHIFT; + if (hubs->dcs_codes_l || hubs->dcs_codes_r) { + dev_dbg(codec->dev, + "Applying %d/%d code DC servo correction\n", + hubs->dcs_codes_l, hubs->dcs_codes_r); /* HPOUT1R */ offset = reg_r; - offset += hubs->dcs_codes; + offset += hubs->dcs_codes_r; + dcs_cfg = (u8)offset << WM8993_DCS_DAC_WR_VAL_1_SHIFT; + + /* HPOUT1L */ + offset = reg_l; + offset += hubs->dcs_codes_l; dcs_cfg |= (u8)offset; dev_dbg(codec->dev, "DCS result: %x\n", dcs_cfg); /* Do it */ - snd_soc_write(codec, WM8993_DC_SERVO_3, dcs_cfg); + snd_soc_write(codec, dcs_reg, dcs_cfg); wait_for_dc_servo(codec, WM8993_DCS_TRIG_DAC_WR_0 | WM8993_DCS_TRIG_DAC_WR_1); } else { - dcs_cfg = reg_l << WM8993_DCS_DAC_WR_VAL_1_SHIFT; - dcs_cfg |= reg_r; + dcs_cfg = reg_r << WM8993_DCS_DAC_WR_VAL_1_SHIFT; + dcs_cfg |= reg_l; } /* Save the callibrated offset if we're in class W mode and * therefore don't have any analogue signal mixed in. */ - if (hubs->class_w) + if (hubs->class_w && !hubs->no_cache_class_w) hubs->class_w_dcs = dcs_cfg; } @@ -195,7 +229,7 @@ static int wm8993_put_dc_servo(struct snd_kcontrol *kcontrol, /* If we're applying an offset correction then updating the * callibration would be likely to introduce further offsets. */ - if (hubs->dcs_codes) + if (hubs->dcs_codes_l || hubs->dcs_codes_r || hubs->no_series_update) return ret; /* Only need to do this if the outputs are active */ @@ -418,9 +452,8 @@ static int hp_event(struct snd_soc_dapm_widget *w, reg |= WM8993_HPOUT1L_DLY | WM8993_HPOUT1R_DLY; snd_soc_write(codec, WM8993_ANALOGUE_HP_0, reg); - /* Smallest supported update interval */ snd_soc_update_bits(codec, WM8993_DC_SERVO_1, - WM8993_DCS_TIMER_PERIOD_01_MASK, 1); + WM8993_DCS_TIMER_PERIOD_01_MASK, 0); calibrate_dc_servo(codec); @@ -476,6 +509,36 @@ static int earpiece_event(struct snd_soc_dapm_widget *w, return 0; } +static int lineout_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *control, int event) +{ + struct snd_soc_codec *codec = w->codec; + struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec); + bool *flag; + + switch (w->shift) { + case WM8993_LINEOUT1N_ENA_SHIFT: + flag = &hubs->lineout1n_ena; + break; + case WM8993_LINEOUT1P_ENA_SHIFT: + flag = &hubs->lineout1p_ena; + break; + case WM8993_LINEOUT2N_ENA_SHIFT: + flag = &hubs->lineout2n_ena; + break; + case WM8993_LINEOUT2P_ENA_SHIFT: + flag = &hubs->lineout2p_ena; + break; + default: + WARN(1, "Unknown line output"); + return -EINVAL; + } + + *flag = SND_SOC_DAPM_EVENT_ON(event); + + return 0; +} + static const struct snd_kcontrol_new in1l_pga[] = { SOC_DAPM_SINGLE("IN1LP Switch", WM8993_INPUT_MIXER2, 5, 1, 0), SOC_DAPM_SINGLE("IN1LN Switch", WM8993_INPUT_MIXER2, 4, 1, 0), @@ -562,14 +625,14 @@ SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER1, 0, 1, 0), }; static const struct snd_kcontrol_new line2_mix[] = { -SOC_DAPM_SINGLE("IN2R Switch", WM8993_LINE_MIXER2, 2, 1, 0), -SOC_DAPM_SINGLE("IN2L Switch", WM8993_LINE_MIXER2, 1, 1, 0), +SOC_DAPM_SINGLE("IN1L Switch", WM8993_LINE_MIXER2, 2, 1, 0), +SOC_DAPM_SINGLE("IN1R Switch", WM8993_LINE_MIXER2, 1, 1, 0), SOC_DAPM_SINGLE("Output Switch", WM8993_LINE_MIXER2, 0, 1, 0), }; static const struct snd_kcontrol_new line2n_mix[] = { -SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER2, 6, 1, 0), -SOC_DAPM_SINGLE("Right Output Switch", WM8993_LINE_MIXER2, 5, 1, 0), +SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER2, 5, 1, 0), +SOC_DAPM_SINGLE("Right Output Switch", WM8993_LINE_MIXER2, 6, 1, 0), }; static const struct snd_kcontrol_new line2p_mix[] = { @@ -599,9 +662,6 @@ SND_SOC_DAPM_MIXER("IN2L PGA", WM8993_POWER_MANAGEMENT_2, 7, 0, SND_SOC_DAPM_MIXER("IN2R PGA", WM8993_POWER_MANAGEMENT_2, 5, 0, in2r_pga, ARRAY_SIZE(in2r_pga)), -/* Dummy widgets to represent differential paths */ -SND_SOC_DAPM_PGA("Direct Voice", SND_SOC_NOPM, 0, 0, NULL, 0), - SND_SOC_DAPM_MIXER("MIXINL", WM8993_POWER_MANAGEMENT_2, 9, 0, mixinl, ARRAY_SIZE(mixinl)), SND_SOC_DAPM_MIXER("MIXINR", WM8993_POWER_MANAGEMENT_2, 8, 0, @@ -617,9 +677,8 @@ SND_SOC_DAPM_PGA("Right Output PGA", WM8993_POWER_MANAGEMENT_3, 6, 0, NULL, 0), SND_SOC_DAPM_SUPPLY("Headphone Supply", SND_SOC_NOPM, 0, 0, hp_supply_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), -SND_SOC_DAPM_PGA_E("Headphone PGA", SND_SOC_NOPM, 0, 0, - NULL, 0, - hp_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), +SND_SOC_DAPM_OUT_DRV_E("Headphone PGA", SND_SOC_NOPM, 0, 0, NULL, 0, + hp_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), SND_SOC_DAPM_MIXER("Earpiece Mixer", SND_SOC_NOPM, 0, 0, earpiece_mixer, ARRAY_SIZE(earpiece_mixer)), @@ -632,10 +691,11 @@ SND_SOC_DAPM_MIXER("SPKL Boost", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_MIXER("SPKR Boost", SND_SOC_NOPM, 0, 0, right_speaker_boost, ARRAY_SIZE(right_speaker_boost)), -SND_SOC_DAPM_PGA("SPKL Driver", WM8993_POWER_MANAGEMENT_1, 12, 0, - NULL, 0), -SND_SOC_DAPM_PGA("SPKR Driver", WM8993_POWER_MANAGEMENT_1, 13, 0, - NULL, 0), +SND_SOC_DAPM_SUPPLY("TSHUT", WM8993_POWER_MANAGEMENT_2, 14, 0, NULL, 0), +SND_SOC_DAPM_OUT_DRV("SPKL Driver", WM8993_POWER_MANAGEMENT_1, 12, 0, + NULL, 0), +SND_SOC_DAPM_OUT_DRV("SPKR Driver", WM8993_POWER_MANAGEMENT_1, 13, 0, + NULL, 0), SND_SOC_DAPM_MIXER("LINEOUT1 Mixer", SND_SOC_NOPM, 0, 0, line1_mix, ARRAY_SIZE(line1_mix)), @@ -651,14 +711,18 @@ SND_SOC_DAPM_MIXER("LINEOUT2N Mixer", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_MIXER("LINEOUT2P Mixer", SND_SOC_NOPM, 0, 0, line2p_mix, ARRAY_SIZE(line2p_mix)), -SND_SOC_DAPM_PGA("LINEOUT1N Driver", WM8993_POWER_MANAGEMENT_3, 13, 0, - NULL, 0), -SND_SOC_DAPM_PGA("LINEOUT1P Driver", WM8993_POWER_MANAGEMENT_3, 12, 0, - NULL, 0), -SND_SOC_DAPM_PGA("LINEOUT2N Driver", WM8993_POWER_MANAGEMENT_3, 11, 0, - NULL, 0), -SND_SOC_DAPM_PGA("LINEOUT2P Driver", WM8993_POWER_MANAGEMENT_3, 10, 0, - NULL, 0), +SND_SOC_DAPM_OUT_DRV_E("LINEOUT1N Driver", WM8993_POWER_MANAGEMENT_3, 13, 0, + NULL, 0, lineout_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), +SND_SOC_DAPM_OUT_DRV_E("LINEOUT1P Driver", WM8993_POWER_MANAGEMENT_3, 12, 0, + NULL, 0, lineout_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), +SND_SOC_DAPM_OUT_DRV_E("LINEOUT2N Driver", WM8993_POWER_MANAGEMENT_3, 11, 0, + NULL, 0, lineout_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), +SND_SOC_DAPM_OUT_DRV_E("LINEOUT2P Driver", WM8993_POWER_MANAGEMENT_3, 10, 0, + NULL, 0, lineout_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), SND_SOC_DAPM_OUTPUT("SPKOUTLP"), SND_SOC_DAPM_OUTPUT("SPKOUTLN"), @@ -681,6 +745,11 @@ static const struct snd_soc_dapm_route analogue_routes[] = { { "IN1L PGA", "IN1LP Switch", "IN1LP" }, { "IN1L PGA", "IN1LN Switch", "IN1LN" }, + { "IN1L PGA", NULL, "VMID" }, + { "IN1R PGA", NULL, "VMID" }, + { "IN2L PGA", NULL, "VMID" }, + { "IN2R PGA", NULL, "VMID" }, + { "IN1R PGA", "IN1RP Switch", "IN1RP" }, { "IN1R PGA", "IN1RN Switch", "IN1RN" }, @@ -698,12 +767,14 @@ static const struct snd_soc_dapm_route analogue_routes[] = { { "MIXINL", NULL, "Direct Voice" }, { "MIXINL", NULL, "IN1LP" }, { "MIXINL", NULL, "Left Output Mixer" }, + { "MIXINL", NULL, "VMID" }, { "MIXINR", "IN1R Switch", "IN1R PGA" }, { "MIXINR", "IN2R Switch", "IN2R PGA" }, { "MIXINR", NULL, "Direct Voice" }, { "MIXINR", NULL, "IN1RP" }, { "MIXINR", NULL, "Right Output Mixer" }, + { "MIXINR", NULL, "VMID" }, { "ADCL", NULL, "MIXINL" }, { "ADCR", NULL, "MIXINR" }, @@ -734,6 +805,7 @@ static const struct snd_soc_dapm_route analogue_routes[] = { { "Earpiece Mixer", "Left Output Switch", "Left Output PGA" }, { "Earpiece Mixer", "Right Output Switch", "Right Output PGA" }, + { "Earpiece Driver", NULL, "VMID" }, { "Earpiece Driver", NULL, "Earpiece Mixer" }, { "HPOUT2N", NULL, "Earpiece Driver" }, { "HPOUT2P", NULL, "Earpiece Driver" }, @@ -756,11 +828,15 @@ static const struct snd_soc_dapm_route analogue_routes[] = { { "SPKR Boost", "SPKR Switch", "SPKR" }, { "SPKR Boost", "SPKL Switch", "SPKL" }, + { "SPKL Driver", NULL, "VMID" }, { "SPKL Driver", NULL, "SPKL Boost" }, { "SPKL Driver", NULL, "CLK_SYS" }, + { "SPKL Driver", NULL, "TSHUT" }, + { "SPKR Driver", NULL, "VMID" }, { "SPKR Driver", NULL, "SPKR Boost" }, { "SPKR Driver", NULL, "CLK_SYS" }, + { "SPKR Driver", NULL, "TSHUT" }, { "SPKOUTLP", NULL, "SPKL Driver" }, { "SPKOUTLN", NULL, "SPKL Driver" }, @@ -772,12 +848,18 @@ static const struct snd_soc_dapm_route analogue_routes[] = { { "Headphone PGA", NULL, "Left Headphone Mux" }, { "Headphone PGA", NULL, "Right Headphone Mux" }, + { "Headphone PGA", NULL, "VMID" }, { "Headphone PGA", NULL, "CLK_SYS" }, { "Headphone PGA", NULL, "Headphone Supply" }, { "HPOUT1L", NULL, "Headphone PGA" }, { "HPOUT1R", NULL, "Headphone PGA" }, + { "LINEOUT1N Driver", NULL, "VMID" }, + { "LINEOUT1P Driver", NULL, "VMID" }, + { "LINEOUT2N Driver", NULL, "VMID" }, + { "LINEOUT2P Driver", NULL, "VMID" }, + { "LINEOUT1N", NULL, "LINEOUT1N Driver" }, { "LINEOUT1P", NULL, "LINEOUT1P Driver" }, { "LINEOUT2N", NULL, "LINEOUT2N Driver" }, @@ -804,8 +886,8 @@ static const struct snd_soc_dapm_route lineout1_se_routes[] = { }; static const struct snd_soc_dapm_route lineout2_diff_routes[] = { - { "LINEOUT2 Mixer", "IN2L Switch", "IN2L PGA" }, - { "LINEOUT2 Mixer", "IN2R Switch", "IN2R PGA" }, + { "LINEOUT2 Mixer", "IN1L Switch", "IN1L PGA" }, + { "LINEOUT2 Mixer", "IN1R Switch", "IN1R PGA" }, { "LINEOUT2 Mixer", "Output Switch", "Right Output PGA" }, { "LINEOUT2N Driver", NULL, "LINEOUT2 Mixer" }, @@ -867,8 +949,11 @@ EXPORT_SYMBOL_GPL(wm_hubs_add_analogue_controls); int wm_hubs_add_analogue_routes(struct snd_soc_codec *codec, int lineout1_diff, int lineout2_diff) { + struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec); struct snd_soc_dapm_context *dapm = &codec->dapm; + init_completion(&hubs->dcs_done); + snd_soc_dapm_add_routes(dapm, analogue_routes, ARRAY_SIZE(analogue_routes)); @@ -900,6 +985,11 @@ int wm_hubs_handle_analogue_pdata(struct snd_soc_codec *codec, int jd_scthr, int jd_thr, int micbias1_lvl, int micbias2_lvl) { + struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec); + + hubs->lineout1_se = !lineout1_diff; + hubs->lineout2_se = !lineout2_diff; + if (!lineout1_diff) snd_soc_update_bits(codec, WM8993_LINE_MIXER1, WM8993_LINEOUT1_MODE, @@ -909,11 +999,10 @@ int wm_hubs_handle_analogue_pdata(struct snd_soc_codec *codec, WM8993_LINEOUT2_MODE, WM8993_LINEOUT2_MODE); - /* If the line outputs are differential then we aren't presenting - * VMID as an output and can disable it. - */ - if (lineout1_diff && lineout2_diff) - codec->dapm.idle_bias_off = 1; + if (!lineout1_diff && !lineout2_diff) + snd_soc_update_bits(codec, WM8993_ANTIPOP1, + WM8993_LINEOUT_VMID_BUF_ENA, + WM8993_LINEOUT_VMID_BUF_ENA); if (lineout1fb) snd_soc_update_bits(codec, WM8993_ADDITIONAL_CONTROL, @@ -935,6 +1024,69 @@ int wm_hubs_handle_analogue_pdata(struct snd_soc_codec *codec, } EXPORT_SYMBOL_GPL(wm_hubs_handle_analogue_pdata); +void wm_hubs_vmid_ena(struct snd_soc_codec *codec) +{ + struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec); + int val = 0; + + if (hubs->lineout1_se) + val |= WM8993_LINEOUT1N_ENA | WM8993_LINEOUT1P_ENA; + + if (hubs->lineout2_se) + val |= WM8993_LINEOUT2N_ENA | WM8993_LINEOUT2P_ENA; + + /* Enable the line outputs while we power up */ + snd_soc_update_bits(codec, WM8993_POWER_MANAGEMENT_3, val, val); +} +EXPORT_SYMBOL_GPL(wm_hubs_vmid_ena); + +void wm_hubs_set_bias_level(struct snd_soc_codec *codec, + enum snd_soc_bias_level level) +{ + struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec); + int val; + + switch (level) { + case SND_SOC_BIAS_STANDBY: + /* Clamp the inputs to VMID while we ramp to charge caps */ + snd_soc_update_bits(codec, WM8993_INPUTS_CLAMP_REG, + WM8993_INPUTS_CLAMP, WM8993_INPUTS_CLAMP); + break; + + case SND_SOC_BIAS_ON: + /* Turn off any unneded single ended outputs */ + val = 0; + + if (hubs->lineout1_se && hubs->lineout1n_ena) + val |= WM8993_LINEOUT1N_ENA; + + if (hubs->lineout1_se && hubs->lineout1p_ena) + val |= WM8993_LINEOUT1P_ENA; + + if (hubs->lineout2_se && hubs->lineout2n_ena) + val |= WM8993_LINEOUT2N_ENA; + + if (hubs->lineout2_se && hubs->lineout2p_ena) + val |= WM8993_LINEOUT2P_ENA; + + snd_soc_update_bits(codec, WM8993_POWER_MANAGEMENT_3, + WM8993_LINEOUT1N_ENA | + WM8993_LINEOUT1P_ENA | + WM8993_LINEOUT2N_ENA | + WM8993_LINEOUT2P_ENA, + val); + + /* Remove the input clamps */ + snd_soc_update_bits(codec, WM8993_INPUTS_CLAMP_REG, + WM8993_INPUTS_CLAMP, 0); + break; + + default: + break; + } +} +EXPORT_SYMBOL_GPL(wm_hubs_set_bias_level); + MODULE_DESCRIPTION("Shared support for Wolfson hubs products"); MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>"); MODULE_LICENSE("GPL"); diff --git a/sound/soc/codecs/wm_hubs.h b/sound/soc/codecs/wm_hubs.h index f8a5e97..5705276 100644 --- a/sound/soc/codecs/wm_hubs.h +++ b/sound/soc/codecs/wm_hubs.h @@ -14,18 +14,36 @@ #ifndef _WM_HUBS_H #define _WM_HUBS_H +#include <linux/completion.h> +#include <linux/interrupt.h> + struct snd_soc_codec; extern const unsigned int wm_hubs_spkmix_tlv[]; /* This *must* be the first element of the codec->private_data struct */ struct wm_hubs_data { - int dcs_codes; + int dcs_codes_l; + int dcs_codes_r; int dcs_readback_mode; int hp_startup_mode; + int series_startup; + int no_series_update; + bool no_cache_class_w; bool class_w; u16 class_w_dcs; + + bool lineout1_se; + bool lineout1n_ena; + bool lineout1p_ena; + + bool lineout2_se; + bool lineout2n_ena; + bool lineout2p_ena; + + bool dcs_done_irq; + struct completion dcs_done; }; extern int wm_hubs_add_analogue_controls(struct snd_soc_codec *); @@ -36,4 +54,9 @@ extern int wm_hubs_handle_analogue_pdata(struct snd_soc_codec *, int jd_scthr, int jd_thr, int micbias1_lvl, int micbias2_lvl); +extern irqreturn_t wm_hubs_dcs_done(int irq, void *data); +extern void wm_hubs_vmid_ena(struct snd_soc_codec *codec); +extern void wm_hubs_set_bias_level(struct snd_soc_codec *codec, + enum snd_soc_bias_level level); + #endif diff --git a/sound/soc/samsung/Kconfig b/sound/soc/samsung/Kconfig index d155cbb..e040010 100644 --- a/sound/soc/samsung/Kconfig +++ b/sound/soc/samsung/Kconfig @@ -1,6 +1,6 @@ config SND_SOC_SAMSUNG tristate "ASoC support for Samsung" - depends on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_S5P64X0 || ARCH_EXYNOS4 + depends on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_S5P64X0 || ARCH_EXYNOS4 || ARCH_EXYNOS5 select S3C64XX_DMA if ARCH_S3C64XX select S3C2410_DMA if ARCH_S3C2410 help @@ -63,12 +63,107 @@ config SND_SOC_SAMSUNG_SMDK_WM8580 config SND_SOC_SAMSUNG_SMDK_WM8994 tristate "SoC I2S Audio support for WM8994 on SMDK" - depends on SND_SOC_SAMSUNG && (MACH_SMDKV310 || MACH_SMDKC210) + depends on SND_SOC_SAMSUNG && (MACH_SMDKV310 || MACH_SMDKC210 || MACH_SMDK4X12 || MACH_SMDK5210 || MACH_SMDK5250) select SND_SOC_WM8994 select SND_SAMSUNG_I2S help Say Y if you want to add support for SoC audio on the SMDKs. +config SND_SOC_SAMSUNG_MIDAS_WM1811 + tristate "SoC I2S Audio support for WM1811 on MIDAS" + depends on SND_SOC_SAMSUNG && MACH_MIDAS + select SND_SOC_WM8994 + select SND_SAMSUNG_I2S + help + Say Y if you want to add support for SoC audio on the MIDAS. + +config SND_SOC_SAMSUNG_SLP_MIDAS_WM1811 + tristate "SoC I2S Audio support for WM1811 on SLP MIDAS" + depends on SND_SOC_SAMSUNG && (MACH_SLP_MIDAS || MACH_SLP_MIDAS_D || MACH_SLP_MIDAS_Q || MACH_SLP_PQ || MACH_SLP_PQ_LTE) + select SND_SOC_WM8994 + select SND_SAMSUNG_I2S + help + Say Y if you want to add support for SoC audio on the MIDAS. + +config SND_SOC_SAMSUNG_SLP_NAPLES_WM1811 + tristate "SoC I2S Audio support for WM1811 on SLP NAPLES" + depends on SND_SOC_SAMSUNG && (MACH_SLP_NAPLES || MACH_SLP_NAPLES_D || MACH_SLP_NAPLES_Q) + select SND_SOC_WM8994 + select SND_SAMSUNG_I2S + +config SND_SOC_SAMSUNG_LUNGO_WM1811 + tristate "SoC I2S Audio support for WM1811 on LUNGO" + depends on SND_SOC_SAMSUNG && (MACH_P10 ||MACH_P11 || MACH_P4NOTE) + select SND_SOC_WM8994 + select SND_SAMSUNG_I2S + help + Say Y if you want to add support for SoC audio on the LUNGO. + +config SND_SOC_U1_MC1N2 + tristate "SoC I2S Audio support for MC1N2 on U1" + depends on SND_SOC_SAMSUNG && (MACH_U1 || MACH_PX) + select SND_SOC_MC1N2 + select SND_SAMSUNG_I2S + help + Say Y if you want to add support for SoC audio on U1. + +config SND_SOC_SAMSUNG_USE_DMA_WRAPPER + bool "DMA wrapper for ALSA Platform(DMA)" + +config SND_SOC_SAMSUNG_I2S_SEC + bool "I2S operate secondary FIFO" + depends on SND_SAMSUNG_LP || SND_SAMSUNG_ALP + +choice + prompt "Samsung I2S Audio type" + depends on SND_SAMSUNG_I2S && (ARCH_EXYNOS4 || ARCH_S5PV210 || ARCH_EXYNOS5) + default SND_SAMSUNG_NORMAL + +config SND_SAMSUNG_NORMAL + bool "Normal Audio support" + help + Say Y if you want to support normal audio. + +config SND_SAMSUNG_LP + bool "LP Audio support" + select SND_SOC_SAMSUNG_I2S_SEC + help + Say Y if you want to support LP audio. + +# For support SRP audio +source "sound/soc/samsung/srp_alp/Kconfig" +source "sound/soc/samsung/srp_ulp/Kconfig" + +endchoice + +config AUDIO_SAMSUNG_MEMSIZE_SRP + int "Memory size in kbytes for Low power Audio" + depends on SND_SAMSUNG_RP || SND_SAMSUNG_ALP + default "1024" + +config SND_SAMSUNG_RP_DEBUG + bool "Enable debug message for ULP & ALP Audio" + depends on SND_SAMSUNG_RP || SND_SAMSUNG_ALP + default n + help + Say Y if you want to add debug message for ULP & ALP Audio. + +config SND_SAMSUNG_I2S_MASTER + bool "I2S Master Mode" + depends on SND_SAMSUNG_I2S + +config SND_SOC_SAMSUNG_SMDK_WM8994_PCM + tristate "SoC PCM Audio support for WM8994 on SMDK" + depends on SND_SOC_SAMSUNG && (MACH_SMDKV310 || MACH_SMDKC210 || MACH_SMDK4X12 || MACH_SMDK5210 || MACH_SMDK5250) + select SND_SOC_WM8994 + select SND_SAMSUNG_PCM + select SND_SAMSUNG_PCM_USE_EPLL + help + Say Y if you want to add support for SoC audio on the SMDK. + +config SND_SAMSUNG_PCM_USE_EPLL + bool + config SND_SOC_SAMSUNG_SMDK2443_WM9710 tristate "SoC AC97 Audio support for SMDK2443 - WM9710" depends on SND_SOC_SAMSUNG && MACH_SMDK2443 @@ -135,7 +230,7 @@ config SND_SOC_SAMSUNG_RX1950_UDA1380 config SND_SOC_SAMSUNG_SMDK_WM9713 tristate "SoC AC97 Audio support for SMDK with WM9713" - depends on SND_SOC_SAMSUNG && (MACH_SMDK6410 || MACH_SMDKC100 || MACH_SMDKV210 || MACH_SMDKC110 || MACH_SMDKV310 || MACH_SMDKC210) + depends on SND_SOC_SAMSUNG && (MACH_SMDK6410 || MACH_SMDKC100 || MACH_SMDKV210 || MACH_SMDKC110 || MACH_SMDKV310 || MACH_SMDKC210 || MACH_SMDK4X12 || MACH_SMDK5210 || MACH_SMDK5250) select SND_SOC_WM9713 select SND_SAMSUNG_AC97 help @@ -158,7 +253,7 @@ config SND_SOC_GONI_AQUILA_WM8994 config SND_SOC_SAMSUNG_SMDK_SPDIF tristate "SoC S/PDIF Audio support for SMDK" - depends on SND_SOC_SAMSUNG && (MACH_SMDKC100 || MACH_SMDKC110 || MACH_SMDKV210) + depends on SND_SOC_SAMSUNG && (MACH_SMDKC100 || MACH_SMDKC110 || MACH_SMDKV210 || MACH_SMDKV310 || MACH_SMDK4X12 || MACH_SMDK5210 || MACH_SMDK5250) select SND_SAMSUNG_SPDIF help Say Y if you want to add support for SoC S/PDIF audio on the SMDK. @@ -177,3 +272,25 @@ config SND_SOC_SPEYSIDE select SND_SAMSUNG_I2S select SND_SOC_WM8915 select SND_SOC_WM9081 + +config SND_USE_SUB_MIC + bool "Use SUB_MIC" + depends on SND_SOC_SAMSUNG + +config SND_USE_THIRD_MIC + bool "Use THIRD_MIC" + depends on SND_SOC_SAMSUNG + +config SND_USE_STEREO_SPEAKER + bool "Use STEREO_SPEAKER" + depends on SND_SOC_SAMSUNG + help + Support stereo speaker for Samsung's Tablet-PC device. + +config SND_USE_LINEOUT_SWITCH + bool "Use LINEOUT_SWITCH" + depends on SND_SOC_SAMSUNG + +config SND_USE_MUIC_SWITCH + bool "Use MUIC_SWITCH CONTROL" + depends on SND_SOC_SAMSUNG
\ No newline at end of file diff --git a/sound/soc/samsung/Makefile b/sound/soc/samsung/Makefile index 683843a..f8a7d95 100644 --- a/sound/soc/samsung/Makefile +++ b/sound/soc/samsung/Makefile @@ -1,5 +1,7 @@ # S3c24XX Platform Support snd-soc-s3c24xx-objs := dma.o +snd-soc-idma-objs := idma.o +snd-soc-dma-wrapper-objs := dma-wrapper.o snd-soc-s3c24xx-i2s-objs := s3c24xx-i2s.o snd-soc-s3c2412-i2s-objs := s3c2412-i2s.o snd-soc-ac97-objs := ac97.o @@ -7,6 +9,7 @@ snd-soc-s3c-i2s-v2-objs := s3c-i2s-v2.o snd-soc-samsung-spdif-objs := spdif.o snd-soc-pcm-objs := pcm.o snd-soc-i2s-objs := i2s.o +snd-soc-audss-objs := audss.o obj-$(CONFIG_SND_SOC_SAMSUNG) += snd-soc-s3c24xx.o obj-$(CONFIG_SND_S3C24XX_I2S) += snd-soc-s3c24xx-i2s.o @@ -16,6 +19,9 @@ obj-$(CONFIG_SND_S3C_I2SV2_SOC) += snd-soc-s3c-i2s-v2.o obj-$(CONFIG_SND_SAMSUNG_SPDIF) += snd-soc-samsung-spdif.o obj-$(CONFIG_SND_SAMSUNG_PCM) += snd-soc-pcm.o obj-$(CONFIG_SND_SAMSUNG_I2S) += snd-soc-i2s.o +obj-$(CONFIG_SND_SAMSUNG_I2S) += snd-soc-audss.o +obj-$(CONFIG_SND_SAMSUNG_I2S) += snd-soc-idma.o +obj-$(CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER) += snd-soc-dma-wrapper.o # S3C24XX Machine Support snd-soc-jive-wm8750-objs := jive_wm8750.o @@ -30,12 +36,16 @@ snd-soc-h1940-uda1380-objs := h1940_uda1380.o snd-soc-rx1950-uda1380-objs := rx1950_uda1380.o snd-soc-smdk-wm8580-objs := smdk_wm8580.o snd-soc-smdk-wm8994-objs := smdk_wm8994.o +snd-soc-smdk-wm8994pcm-objs := smdk_wm8994pcm.o snd-soc-smdk-wm9713-objs := smdk_wm9713.o snd-soc-s3c64xx-smartq-wm8987-objs := smartq_wm8987.o snd-soc-goni-wm8994-objs := goni_wm8994.o snd-soc-smdk-spdif-objs := smdk_spdif.o snd-soc-smdk-wm8580pcm-objs := smdk_wm8580pcm.o snd-soc-speyside-objs := speyside.o +snd-soc-u1-mc1n2-objs := u1_mc1n2.o +snd-soc-midas-wm1811-objs := midas_wm1811.o +snd-soc-lungo-wm1811-objs := lungo_wm1811.o obj-$(CONFIG_SND_SOC_SAMSUNG_JIVE_WM8750) += snd-soc-jive-wm8750.o obj-$(CONFIG_SND_SOC_SAMSUNG_NEO1973_WM8753) += snd-soc-neo1973-wm8753.o @@ -49,9 +59,17 @@ obj-$(CONFIG_SND_SOC_SAMSUNG_H1940_UDA1380) += snd-soc-h1940-uda1380.o obj-$(CONFIG_SND_SOC_SAMSUNG_RX1950_UDA1380) += snd-soc-rx1950-uda1380.o obj-$(CONFIG_SND_SOC_SAMSUNG_SMDK_WM8580) += snd-soc-smdk-wm8580.o obj-$(CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994) += snd-soc-smdk-wm8994.o +obj-$(CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994_PCM) += snd-soc-smdk-wm8994pcm.o obj-$(CONFIG_SND_SOC_SAMSUNG_SMDK_WM9713) += snd-soc-smdk-wm9713.o obj-$(CONFIG_SND_SOC_SMARTQ) += snd-soc-s3c64xx-smartq-wm8987.o obj-$(CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF) += snd-soc-smdk-spdif.o obj-$(CONFIG_SND_SOC_GONI_AQUILA_WM8994) += snd-soc-goni-wm8994.o obj-$(CONFIG_SND_SOC_SMDK_WM8580_PCM) += snd-soc-smdk-wm8580pcm.o obj-$(CONFIG_SND_SOC_SPEYSIDE) += snd-soc-speyside.o +obj-$(CONFIG_SND_SOC_U1_MC1N2) += snd-soc-u1-mc1n2.o +obj-$(CONFIG_SND_SOC_SAMSUNG_MIDAS_WM1811) += snd-soc-midas-wm1811.o +obj-$(CONFIG_SND_SOC_SAMSUNG_LUNGO_WM1811) += snd-soc-midas-wm1811.o + +obj-$(CONFIG_SND_SAMSUNG_RP) += srp_ulp/ +obj-$(CONFIG_SND_SAMSUNG_ALP) += srp_alp/ + diff --git a/sound/soc/samsung/ac97.c b/sound/soc/samsung/ac97.c index f97110e..0e9b394 100644 --- a/sound/soc/samsung/ac97.c +++ b/sound/soc/samsung/ac97.c @@ -432,7 +432,7 @@ static __devinit int s3c_ac97_probe(struct platform_device *pdev) s3c_ac97.ac97_clk = clk_get(&pdev->dev, "ac97"); if (IS_ERR(s3c_ac97.ac97_clk)) { dev_err(&pdev->dev, "ac97 failed to get ac97_clock\n"); - ret = -ENODEV; + ret = PTR_ERR(s3c_ac97.ac97_clk); goto err2; } clk_enable(s3c_ac97.ac97_clk); diff --git a/sound/soc/samsung/audss.c b/sound/soc/samsung/audss.c new file mode 100644 index 0000000..2669142 --- /dev/null +++ b/sound/soc/samsung/audss.c @@ -0,0 +1,308 @@ +/* sound/soc/samsung/audss.c + * + * ALSA SoC Audio Layer - Samsung Audio Subsystem driver + * + * Copyright (c) 2010 Samsung Electronics Co. Ltd. + * Lakkyung Jung <lakkyung.jung@samsung.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/delay.h> +#include <linux/slab.h> +#include <linux/clk.h> +#include <linux/io.h> + +#include <sound/soc.h> +#include <sound/pcm_params.h> + +#include <plat/audio.h> +#include <plat/clock.h> +#include <mach/map.h> +#include <mach/regs-audss.h> + +#include "audss.h" + +static struct audss_runtime_data { + struct clk *mout_audss; + struct clk *dout_srp; + struct clk *srp_clk; + struct clk *bus_clk; + struct clk *i2s_clk; + + char *rclksrc; + u32 clk_src_rate; + u32 suspend_audss_clksrc; + u32 suspend_audss_clkdiv; + u32 suspend_audss_clkgate; + + bool clk_enabled; + bool reg_saved; +} audss; + +static char *rclksrc[] = { + [0] = "busclk", + [1] = "i2sclk", +}; + +/* Lock for cross i/f checks */ +static DEFINE_SPINLOCK(lock); + +static int audss_clk_div_init(struct clk *src_clk) +{ + u32 clk_div = readl(S5P_CLKDIV_AUDSS); + u32 src_clk_rate = 0; + u32 srp_div = 1; + u32 bus_div = 2; + u32 i2s_div = 2; + u32 ret = -1; + + src_clk_rate = clk_get_rate(src_clk); + if (!src_clk_rate) { + pr_err("%s: Can't get current clk_rate %d\n", + __func__, src_clk_rate); + return ret; + } + + pr_debug("%s: SRC Clock Rate[%d]\n", __func__, src_clk_rate); + if (src_clk_rate > 100000000) { + srp_div <<= 1; + bus_div <<= 1; + i2s_div <<= 1; + } + + if (!strcmp(audss.rclksrc, "busclk")) + i2s_div = 16; /* Use max div */ + + clk_div &= ~(S5P_AUDSS_CLKDIV_RP_MASK + | S5P_AUDSS_CLKDIV_BUSCLK_MASK + | S5P_AUDSS_CLKDIV_I2SCLK_MASK); + + if (srp_div) + clk_div |= (srp_div - 1) << S5P_AUDSS_CLKDIV_RP_SHIFT; + + if (bus_div) + clk_div |= (bus_div - 1) << S5P_AUDSS_CLKDIV_BUSCLK_SHIFT; + + if (i2s_div) + clk_div |= (i2s_div - 1) << S5P_AUDSS_CLKDIV_I2SCLK_SHIFT; + + writel(clk_div, S5P_CLKDIV_AUDSS); + + pr_debug("%s: BUSCLK[%ld], I2SCLK[%ld]\n", __func__, + clk_get_rate(audss.bus_clk), + clk_get_rate(audss.i2s_clk)); + pr_debug("%s: CLKDIV[0x%x]\n", __func__, readl(S5P_CLKDIV_AUDSS)); + + return 0; +} + +void audss_reg_save(void) +{ + if (audss.reg_saved) + return; + + audss.suspend_audss_clksrc = readl(S5P_CLKSRC_AUDSS); + audss.suspend_audss_clkdiv = readl(S5P_CLKDIV_AUDSS); + audss.suspend_audss_clkgate = readl(S5P_CLKGATE_AUDSS); + audss.reg_saved = true; + + pr_debug("%s: Successfully saved audss reg\n", __func__); + pr_info("%s: SRC[0x%x], DIV[0x%x], GATE[0x%x]\n", __func__, + audss.suspend_audss_clksrc, + audss.suspend_audss_clkdiv, + audss.suspend_audss_clkgate); +} + +void audss_reg_restore(void) +{ + if (!audss.reg_saved) + return; + + writel(audss.suspend_audss_clksrc, S5P_CLKSRC_AUDSS); + writel(audss.suspend_audss_clkdiv, S5P_CLKDIV_AUDSS); + writel(audss.suspend_audss_clkgate, S5P_CLKGATE_AUDSS); + audss.reg_saved = false; + + pr_debug("%s: Successfully restored audss reg\n", __func__); + pr_info("%s: SRC[0x%x], DIV[0x%x], GATE[0x%x]\n", __func__, + audss.suspend_audss_clksrc, + audss.suspend_audss_clkdiv, + audss.suspend_audss_clkgate); +} +#if defined(CONFIG_MACH_M0) && defined(CONFIG_TARGET_LOCALE_EUR) +extern void print_epll_con0(void); +#endif +void audss_clk_enable(bool enable) +{ + unsigned long flags; + + pr_debug("%s: state %d\n", __func__, enable); + spin_lock_irqsave(&lock, flags); + + if (enable) { + if (audss.clk_enabled) { + pr_debug("%s: Already enabled audss clk %d\n", + __func__, audss.clk_enabled); + goto exit_func; + } + + audss_reg_restore(); + clk_enable(audss.srp_clk); + clk_enable(audss.bus_clk); + if (!strcmp(audss.rclksrc, "i2sclk")) + clk_enable(audss.i2s_clk); + + audss.clk_enabled = true; + } else { + if (!audss.clk_enabled) { + pr_debug("%s: Already disabled audss clk %d\n", + __func__, audss.clk_enabled); + goto exit_func; + } + + clk_disable(audss.bus_clk); + clk_disable(audss.srp_clk); + if (!strcmp(audss.rclksrc, "i2sclk")) + clk_disable(audss.i2s_clk); + audss_reg_save(); + + audss.clk_enabled = false; + } +#if defined(CONFIG_MACH_M0) && defined(CONFIG_TARGET_LOCALE_EUR) + print_epll_con0(); +#endif + pr_info("%s(%d): SRC[0x%x], DIV[0x%x], GATE[0x%x]\n", __func__, + enable ? 1 : 0, + readl(S5P_CLKSRC_AUDSS), + readl(S5P_CLKDIV_AUDSS), + readl(S5P_CLKGATE_AUDSS)); +exit_func: + spin_unlock_irqrestore(&lock, flags); + + return; +} + +void audss_suspend(void) +{ + if (!audss.reg_saved) + audss_reg_save(); +} + +void audss_resume(void) +{ + if (audss.reg_saved) + audss_reg_restore(); +} + +static __devinit int audss_init(void) +{ + int ret = 0; + + audss.mout_audss = clk_get(NULL, "mout_audss"); + if (IS_ERR(audss.mout_audss)) { + pr_err("%s: failed to get mout audss\n", __func__); + ret = PTR_ERR(audss.mout_audss); + return ret; + } + + audss.dout_srp = clk_get(NULL, "dout_srp"); + if (IS_ERR(audss.dout_srp)) { + pr_err("%s: failed to get dout_srp\n", __func__); + ret = PTR_ERR(audss.dout_srp); + goto err1; + } + + audss.srp_clk = clk_get(NULL, "srpclk"); + if (IS_ERR(audss.srp_clk)) { + pr_err("%s:failed to get srp_clk\n", __func__); + ret = PTR_ERR(audss.srp_clk); + goto err2; + } + + audss.bus_clk = clk_get(NULL, "busclk"); + if (IS_ERR(audss.bus_clk)) { + pr_err("%s: failed to get bus clk\n", __func__); + ret = PTR_ERR(audss.bus_clk); + goto err3; + } + + audss.i2s_clk = clk_get(NULL, "i2sclk"); + if (IS_ERR(audss.i2s_clk)) { + pr_err("%s: failed to get i2s clk\n", __func__); + ret = PTR_ERR(audss.i2s_clk); + goto err4; + } + + audss.rclksrc = rclksrc[BUSCLK]; + pr_info("%s: RCLK SRC[%s]\n", __func__, audss.rclksrc); + + audss.reg_saved = false; + audss.clk_enabled = false; + + ret = audss_clk_div_init(audss.mout_audss); + if (ret < 0) { + pr_err("%s: failed to init clk div\n", __func__); + goto err5; + } + + audss_reg_save(); + + return ret; +err5: + clk_put(audss.i2s_clk); +err4: + clk_put(audss.bus_clk); +err3: + clk_put(audss.srp_clk); +err2: + clk_put(audss.dout_srp); +err1: + clk_put(audss.mout_audss); + + return ret; +} + +static __devexit int audss_deinit(void) +{ + clk_put(audss.i2s_clk); + clk_put(audss.bus_clk); + clk_put(audss.srp_clk); + clk_put(audss.dout_srp); + clk_put(audss.mout_audss); + + audss.rclksrc = NULL; + + return 0; +} + +static char banner[] __initdata = "Samsung Audio Subsystem Driver, (c) 2011 Samsung Electronics"; + +static int __init samsung_audss_init(void) +{ + int ret = 0; + + pr_info("%s\n", banner); + + ret = audss_init(); + if (ret < 0) + pr_err("%s:failed to init audss clock\n", __func__); + + return ret; + +} +module_init(samsung_audss_init); + +static void __exit samsung_audss_exit(void) +{ + audss_deinit(); +} +module_exit(samsung_audss_exit); + +/* Module information */ +MODULE_AUTHOR("Lakkyung Jung, <lakkyung.jung@samsung.com>"); +MODULE_DESCRIPTION("Samsung Audio subsystem Interface"); +MODULE_ALIAS("platform:samsung-audss"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/audss.h b/sound/soc/samsung/audss.h new file mode 100644 index 0000000..8c4e973 --- /dev/null +++ b/sound/soc/samsung/audss.h @@ -0,0 +1,33 @@ +/* sound/soc/samsung/audss.h + * + * ALSA SoC Audio Layer - Samsung Audio Subsystem driver + * + * Copyright (c) 2011 Samsung Electronics Co. Ltd. + * Lakkyung Jung <lakkyung.jung@samsung.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef __SND_SOC_SAMSUNG_AUDSS_H +#define __SND_SOC_SAMSUNG_AUDSS_H +enum { + AUDSS_ACTIVE, + AUDSS_INACTIVE, +}; + +enum { + AUDSS_REG_SAVE, + AUDSS_REG_RESTORE, +}; + +enum { + BUSCLK, + I2SCLK, +}; + +void audss_clk_enable(bool enable); +void audss_suspend(void); +void audss_resume(void); +#endif /* __SND_SOC_SAMSUNG_AUDSS_H */ diff --git a/sound/soc/samsung/dma-wrapper.c b/sound/soc/samsung/dma-wrapper.c new file mode 100644 index 0000000..77b23e4 --- /dev/null +++ b/sound/soc/samsung/dma-wrapper.c @@ -0,0 +1,203 @@ +/* + * dma-wrapper.c -- I2S DMA Platform Wrapper Driver + * + * * Copyright (c) 2010 Samsung Electronics Co. Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include <sound/soc.h> +#include "dma.h" +#include "idma.h" + +#ifdef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER +static struct snd_soc_platform_driver *asoc_get_platform(struct snd_pcm *pcm) +{ + struct snd_soc_pcm_runtime *rtd = pcm->private_data; + const char *cpu_dai_name = rtd->cpu_dai->name; + + if (!strcmp(cpu_dai_name, "samsung-i2s.4")) + return &samsung_asoc_idma_platform; + else + return &samsung_asoc_platform; +} + +static int asoc_platform_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_platform_driver *platform = + asoc_get_platform(substream->pcm); + + if (platform->ops->hw_params) + return platform->ops->hw_params(substream, params); + else + return 0; +} + +static int asoc_platform_hw_free(struct snd_pcm_substream *substream) +{ + struct snd_soc_platform_driver *platform = + asoc_get_platform(substream->pcm); + + if (platform->ops->hw_free) + return platform->ops->hw_free(substream); + else + return 0; +} + +static int asoc_platform_prepare(struct snd_pcm_substream *substream) +{ + struct snd_soc_platform_driver *platform = + asoc_get_platform(substream->pcm); + + if (platform->ops->prepare) + return platform->ops->prepare(substream); + else + return 0; +} + +static int asoc_platform_trigger(struct snd_pcm_substream *substream, int cmd) +{ + struct snd_soc_platform_driver *platform = + asoc_get_platform(substream->pcm); + + if (platform->ops->trigger) + return platform->ops->trigger(substream, cmd); + else + return 0; +} + +static snd_pcm_uframes_t +asoc_platform_pointer(struct snd_pcm_substream *substream) +{ + struct snd_soc_platform_driver *platform = + asoc_get_platform(substream->pcm); + + if (platform->ops->pointer) + return platform->ops->pointer(substream); + else + return 0; +} + +static int asoc_platform_open(struct snd_pcm_substream *substream) +{ + struct snd_soc_platform_driver *platform = + asoc_get_platform(substream->pcm); + + if (platform->ops->open) + return platform->ops->open(substream); + else + return 0; +} + +static int asoc_platform_close(struct snd_pcm_substream *substream) +{ + struct snd_soc_platform_driver *platform = + asoc_get_platform(substream->pcm); + + if (platform->ops->close) + return platform->ops->close(substream); + else + return 0; +} + +static int asoc_platform_ioctl(struct snd_pcm_substream *substream, + unsigned int cmd, void *arg) +{ + struct snd_soc_platform_driver *platform = + asoc_get_platform(substream->pcm); + + if (platform->ops->ioctl) + return platform->ops->ioctl(substream, cmd, arg); + else + return 0; +} + +static int asoc_platform_mmap(struct snd_pcm_substream *substream, + struct vm_area_struct *vma) +{ + struct snd_soc_platform_driver *platform = + asoc_get_platform(substream->pcm); + + if (platform->ops->mmap) + return platform->ops->mmap(substream, vma); + else + return 0; +} + +static struct snd_pcm_ops asoc_platform_ops = { + .open = asoc_platform_open, + .close = asoc_platform_close, + .ioctl = asoc_platform_ioctl, + .hw_params = asoc_platform_hw_params, + .hw_free = asoc_platform_hw_free, + .prepare = asoc_platform_prepare, + .trigger = asoc_platform_trigger, + .pointer = asoc_platform_pointer, + .mmap = asoc_platform_mmap, +}; + +static void asoc_platform_free_dma_buffers(struct snd_pcm *pcm) +{ + struct snd_soc_platform_driver *platform = asoc_get_platform(pcm); + + if (platform->pcm_free) + platform->pcm_free(pcm); +} + +static int asoc_platform_new(struct snd_card *card, + struct snd_soc_dai *dai, struct snd_pcm *pcm) +{ + struct snd_soc_platform_driver *platform = asoc_get_platform(pcm); + + if (platform->pcm_new) + platform->pcm_new(card, dai, pcm); + + return 0; +} + +static struct snd_soc_platform_driver asoc_dma_platform = { + .ops = &asoc_platform_ops, + .pcm_new = asoc_platform_new, + .pcm_free = asoc_platform_free_dma_buffers, +}; + +static int __devinit samsung_asoc_platform_probe(struct platform_device *pdev) +{ + return snd_soc_register_platform(&pdev->dev, &asoc_dma_platform); +} + +static int __devexit samsung_asoc_platform_remove(struct platform_device *pdev) +{ + snd_soc_unregister_platform(&pdev->dev); + return 0; +} + +static struct platform_driver asoc_platform_driver = { + .driver = { + .name = "samsung-audio", + .owner = THIS_MODULE, + }, + + .probe = samsung_asoc_platform_probe, + .remove = __devexit_p(samsung_asoc_platform_remove), +}; + +static int __init samsung_asoc_init(void) +{ + return platform_driver_register(&asoc_platform_driver); +} +module_init(samsung_asoc_init); + +static void __exit samsung_asoc_exit(void) +{ + platform_driver_unregister(&asoc_platform_driver); +} +module_exit(samsung_asoc_exit); +#endif + +MODULE_DESCRIPTION("Samsung ASoC DMA wrapper"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/dma.c b/sound/soc/samsung/dma.c index 5cb3b88..a7178ed 100644 --- a/sound/soc/samsung/dma.c +++ b/sound/soc/samsung/dma.c @@ -40,11 +40,11 @@ static const struct snd_pcm_hardware dma_hardware = { SNDRV_PCM_FMTBIT_U16_LE | SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S8, - .channels_min = 2, - .channels_max = 2, + .channels_min = 1, + .channels_max = 6, .buffer_bytes_max = 128*1024, .period_bytes_min = PAGE_SIZE, - .period_bytes_max = PAGE_SIZE*2, + .period_bytes_max = PAGE_SIZE*8, .periods_min = 2, .periods_max = 128, .fifo_size = 32, @@ -84,26 +84,36 @@ static void dma_enqueue(struct snd_pcm_substream *substream) pr_debug("%s: loaded %d, limit %d\n", __func__, prtd->dma_loaded, limit); - while (prtd->dma_loaded < limit) { - unsigned long len = prtd->dma_period; - - pr_debug("dma_loaded: %d\n", prtd->dma_loaded); - - if ((pos + len) > prtd->dma_end) { - len = prtd->dma_end - pos; - pr_debug("%s: corrected dma len %ld\n", __func__, len); - } - - ret = s3c2410_dma_enqueue(prtd->params->channel, - substream, pos, len); - + if (s3c_dma_has_infiniteloop()) { + ret = s3c2410_dma_enqueue_ring(prtd->params->channel, + substream, pos, prtd->dma_period, limit); if (ret == 0) { - prtd->dma_loaded++; + prtd->dma_loaded += limit; pos += prtd->dma_period; - if (pos >= prtd->dma_end) - pos = prtd->dma_start; - } else - break; + } + } else { + while (prtd->dma_loaded < limit) { + unsigned long len = prtd->dma_period; + + pr_debug("dma_loaded: %d\n", prtd->dma_loaded); + + if ((pos + len) > prtd->dma_end) { + len = prtd->dma_end - pos; + pr_debug("%s: corrected dma len %ld\n", + __func__, len); + } + + ret = s3c2410_dma_enqueue(prtd->params->channel, + substream, pos, len); + + if (ret == 0) { + prtd->dma_loaded++; + pos += prtd->dma_period; + if (pos >= prtd->dma_end) + pos = prtd->dma_start; + } else + break; + } } prtd->dma_pos = pos; @@ -123,13 +133,13 @@ static void audio_buffdone(struct s3c2410_dma_chan *channel, prtd = substream->runtime->private_data; - if (substream) - snd_pcm_period_elapsed(substream); + snd_pcm_period_elapsed(substream); spin_lock(&prtd->lock); if (prtd->state & ST_RUNNING && !s3c_dma_has_circular()) { prtd->dma_loaded--; - dma_enqueue(substream); + if (!s3c_dma_has_infiniteloop()) + dma_enqueue(substream); } spin_unlock(&prtd->lock); @@ -191,6 +201,13 @@ static int dma_hw_params(struct snd_pcm_substream *substream, prtd->dma_start = runtime->dma_addr; prtd->dma_pos = prtd->dma_start; prtd->dma_end = prtd->dma_start + totbytes; + + pr_info("G:%s:DmaAddr=@%x Total=%d PrdSz=%d #Prds=%d dma_area=0x%x\n", + (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ? "P" : "C", + prtd->dma_start, runtime->dma_bytes, + params_period_bytes(params), params_periods(params), + (unsigned int)runtime->dma_area); + spin_unlock_irq(&prtd->lock); return 0; @@ -338,6 +355,7 @@ static int dma_open(struct snd_pcm_substream *substream) spin_lock_init(&prtd->lock); runtime->private_data = prtd; + return 0; } @@ -454,12 +472,13 @@ out: return ret; } -static struct snd_soc_platform_driver samsung_asoc_platform = { +struct snd_soc_platform_driver samsung_asoc_platform = { .ops = &dma_ops, .pcm_new = dma_new, .pcm_free = dma_free_dma_buffers, }; +#ifndef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER static int __devinit samsung_asoc_platform_probe(struct platform_device *pdev) { return snd_soc_register_platform(&pdev->dev, &samsung_asoc_platform); @@ -492,6 +511,7 @@ static void __exit samsung_asoc_exit(void) platform_driver_unregister(&asoc_dma_driver); } module_exit(samsung_asoc_exit); +#endif MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>"); MODULE_DESCRIPTION("Samsung ASoC DMA Driver"); diff --git a/sound/soc/samsung/dma.h b/sound/soc/samsung/dma.h index c506592..cac4cbe 100644 --- a/sound/soc/samsung/dma.h +++ b/sound/soc/samsung/dma.h @@ -19,4 +19,7 @@ struct s3c_dma_params { int dma_size; /* Size of the DMA transfer */ }; +#ifdef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER +extern struct snd_soc_platform_driver samsung_asoc_platform; +#endif #endif diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index 992a732..bb0e4e8 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c @@ -19,114 +19,19 @@ #include <sound/pcm_params.h> #include <plat/audio.h> +#include <mach/map.h> +#include <mach/regs-clock.h> +#include <mach/regs-audss.h> +#include "audss.h" #include "dma.h" +#include "idma.h" #include "i2s.h" +#include "srp-types.h" -#define I2SCON 0x0 -#define I2SMOD 0x4 -#define I2SFIC 0x8 -#define I2SPSR 0xc -#define I2STXD 0x10 -#define I2SRXD 0x14 -#define I2SFICS 0x18 -#define I2STXDS 0x1c - -#define CON_RSTCLR (1 << 31) -#define CON_FRXOFSTATUS (1 << 26) -#define CON_FRXORINTEN (1 << 25) -#define CON_FTXSURSTAT (1 << 24) -#define CON_FTXSURINTEN (1 << 23) -#define CON_TXSDMA_PAUSE (1 << 20) -#define CON_TXSDMA_ACTIVE (1 << 18) - -#define CON_FTXURSTATUS (1 << 17) -#define CON_FTXURINTEN (1 << 16) -#define CON_TXFIFO2_EMPTY (1 << 15) -#define CON_TXFIFO1_EMPTY (1 << 14) -#define CON_TXFIFO2_FULL (1 << 13) -#define CON_TXFIFO1_FULL (1 << 12) - -#define CON_LRINDEX (1 << 11) -#define CON_TXFIFO_EMPTY (1 << 10) -#define CON_RXFIFO_EMPTY (1 << 9) -#define CON_TXFIFO_FULL (1 << 8) -#define CON_RXFIFO_FULL (1 << 7) -#define CON_TXDMA_PAUSE (1 << 6) -#define CON_RXDMA_PAUSE (1 << 5) -#define CON_TXCH_PAUSE (1 << 4) -#define CON_RXCH_PAUSE (1 << 3) -#define CON_TXDMA_ACTIVE (1 << 2) -#define CON_RXDMA_ACTIVE (1 << 1) -#define CON_ACTIVE (1 << 0) - -#define MOD_OPCLK_CDCLK_OUT (0 << 30) -#define MOD_OPCLK_CDCLK_IN (1 << 30) -#define MOD_OPCLK_BCLK_OUT (2 << 30) -#define MOD_OPCLK_PCLK (3 << 30) -#define MOD_OPCLK_MASK (3 << 30) -#define MOD_TXS_IDMA (1 << 28) /* Sec_TXFIFO use I-DMA */ - -#define MOD_BLCS_SHIFT 26 -#define MOD_BLCS_16BIT (0 << MOD_BLCS_SHIFT) -#define MOD_BLCS_8BIT (1 << MOD_BLCS_SHIFT) -#define MOD_BLCS_24BIT (2 << MOD_BLCS_SHIFT) -#define MOD_BLCS_MASK (3 << MOD_BLCS_SHIFT) -#define MOD_BLCP_SHIFT 24 -#define MOD_BLCP_16BIT (0 << MOD_BLCP_SHIFT) -#define MOD_BLCP_8BIT (1 << MOD_BLCP_SHIFT) -#define MOD_BLCP_24BIT (2 << MOD_BLCP_SHIFT) -#define MOD_BLCP_MASK (3 << MOD_BLCP_SHIFT) - -#define MOD_C2DD_HHALF (1 << 21) /* Discard Higher-half */ -#define MOD_C2DD_LHALF (1 << 20) /* Discard Lower-half */ -#define MOD_C1DD_HHALF (1 << 19) -#define MOD_C1DD_LHALF (1 << 18) -#define MOD_DC2_EN (1 << 17) -#define MOD_DC1_EN (1 << 16) -#define MOD_BLC_16BIT (0 << 13) -#define MOD_BLC_8BIT (1 << 13) -#define MOD_BLC_24BIT (2 << 13) -#define MOD_BLC_MASK (3 << 13) - -#define MOD_IMS_SYSMUX (1 << 10) -#define MOD_SLAVE (1 << 11) -#define MOD_TXONLY (0 << 8) -#define MOD_RXONLY (1 << 8) -#define MOD_TXRX (2 << 8) -#define MOD_MASK (3 << 8) -#define MOD_LR_LLOW (0 << 7) -#define MOD_LR_RLOW (1 << 7) -#define MOD_SDF_IIS (0 << 5) -#define MOD_SDF_MSB (1 << 5) -#define MOD_SDF_LSB (2 << 5) -#define MOD_SDF_MASK (3 << 5) -#define MOD_RCLK_256FS (0 << 3) -#define MOD_RCLK_512FS (1 << 3) -#define MOD_RCLK_384FS (2 << 3) -#define MOD_RCLK_768FS (3 << 3) -#define MOD_RCLK_MASK (3 << 3) -#define MOD_BCLK_32FS (0 << 1) -#define MOD_BCLK_48FS (1 << 1) -#define MOD_BCLK_16FS (2 << 1) -#define MOD_BCLK_24FS (3 << 1) -#define MOD_BCLK_MASK (3 << 1) -#define MOD_8BIT (1 << 0) - -#define MOD_CDCLKCON (1 << 12) - -#define PSR_PSREN (1 << 15) - -#define FIC_TX2COUNT(x) (((x) >> 24) & 0xf) -#define FIC_TX1COUNT(x) (((x) >> 16) & 0xf) - -#define FIC_TXFLUSH (1 << 15) -#define FIC_RXFLUSH (1 << 7) -#define FIC_TXCOUNT(x) (((x) >> 8) & 0xf) -#define FIC_RXCOUNT(x) (((x) >> 0) & 0xf) -#define FICS_TXCOUNT(x) (((x) >> 8) & 0x7f) - -#define msecs_to_loops(t) (loops_per_jiffy / 1000 * HZ * t) +#if defined(CONFIG_SND_SAMSUNG_RP) && defined(CONFIG_MACH_U1) +#define USE_ALT_REG_RECOVER +#endif struct i2s_dai { /* Platform device for this DAI */ @@ -135,6 +40,8 @@ struct i2s_dai { void __iomem *addr; /* Physical base address of SFRs */ u32 base; + /* CMU's clock for I2S 1,2 interfaces */ + struct clk *cclk; /* Rate of RCLK source clock */ unsigned long rclk_srcrate; /* Frame Clock */ @@ -144,8 +51,6 @@ struct i2s_dai { * 0 indicates CPU driver is free to choose any value. */ unsigned rfs, bfs; - /* I2S Controller's core clock */ - struct clk *clk; /* Clock for generating I2S signals */ struct clk *op_clk; /* Array of clock names for op_clk */ @@ -163,14 +68,48 @@ struct i2s_dai { struct s3c_dma_params dma_playback; struct s3c_dma_params dma_capture; u32 quirks; + u32 suspend_i2smod; u32 suspend_i2scon; u32 suspend_i2spsr; + u32 suspend_i2sahb[((I2SSTR1 - I2SAHB) >> 2) + 1]; + + bool tx_active; + bool rx_active; + bool reg_saved; + bool reg_saved_by_pm; + + void (*audss_clk_enable)(bool enable); + void (*audss_suspend)(void); + void (*audss_resume)(void); }; /* Lock for cross i/f checks */ static DEFINE_SPINLOCK(lock); +/* If SRP is enabled for ULP audio */ +static inline bool is_srp_enabled(struct i2s_dai *i2s, u32 stream) +{ + if ((stream == SNDRV_PCM_STREAM_PLAYBACK) + && (i2s->quirks & QUIRK_ENABLED_SRP)) + return true; + else + return false; +} + +/* Get srp status(opened/running) information */ +static inline int srp_active(struct i2s_dai *i2s, int cmd) +{ +#if defined(CONFIG_SND_SAMSUNG_RP) || defined(CONFIG_SND_SAMSUNG_ALP) + if ((i2s->pdev->id == 0) || (i2s->pdev->id == SAMSUNG_I2S_SECOFF)) + return srp_get_status(cmd); + else + return 0; +#else + return 0; +#endif +} + /* If this is the 'overlay' stereo DAI */ static inline bool is_secondary(struct i2s_dai *i2s) { @@ -188,7 +127,7 @@ static inline bool tx_active(struct i2s_dai *i2s) { u32 active; - if (!i2s) + if (!i2s || !i2s->addr) return false; active = readl(i2s->addr + I2SCON); @@ -220,7 +159,7 @@ static inline bool rx_active(struct i2s_dai *i2s) { u32 active; - if (!i2s) + if (!i2s || !i2s->addr) return false; active = readl(i2s->addr + I2SCON) & CON_RXDMA_ACTIVE; @@ -375,13 +314,15 @@ static inline int get_blc(struct i2s_dai *i2s) } /* TX Channel Control */ -static void i2s_txctrl(struct i2s_dai *i2s, int on) +static void i2s_txctrl(struct i2s_dai *i2s, int on, int stream) { void __iomem *addr = i2s->addr; u32 con = readl(addr + I2SCON); u32 mod = readl(addr + I2SMOD) & ~MOD_MASK; if (on) { + printk(KERN_DEBUG "%s:Turn on\n", __func__); + con |= CON_ACTIVE; con &= ~CON_TXCH_PAUSE; @@ -411,12 +352,19 @@ static void i2s_txctrl(struct i2s_dai *i2s, int on) return; } - con |= CON_TXCH_PAUSE; + if (!srp_active(i2s, IS_RUNNING)) { + printk(KERN_DEBUG + "%s: Turn Off - spr is no active\n", __func__); + con |= CON_TXCH_PAUSE; - if (any_rx_active(i2s)) - mod |= MOD_RXONLY; - else - con &= ~CON_ACTIVE; + if (any_rx_active(i2s)) + mod |= MOD_RXONLY; + else + con &= ~CON_ACTIVE; + } else { + printk(KERN_DEBUG + "%s: Turn Off - spr is active\n", __func__); + } } writel(mod, addr + I2SMOD); @@ -453,7 +401,7 @@ static void i2s_rxctrl(struct i2s_dai *i2s, int on) } /* Flush FIFO of an interface */ -static inline void i2s_fifo(struct i2s_dai *i2s, u32 flush) +static inline void i2s_fifo(struct i2s_dai *i2s, u32 flush, int stream) { void __iomem *fic; u32 val; @@ -485,6 +433,11 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, u32 mod = readl(i2s->addr + I2SMOD); switch (clk_id) { + case SAMSUNG_I2S_OPCLK: + mod &= ~MOD_OPCLK_MASK; + mod |= dir; + break; + case SAMSUNG_I2S_CDCLK: /* Shouldn't matter in GATING(CLOCK_IN) mode */ if (dir == SND_SOC_CLOCK_IN) @@ -521,7 +474,6 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, if (i2s->op_clk) { if ((clk_id && !(mod & MOD_IMS_SYSMUX)) || (!clk_id && (mod & MOD_IMS_SYSMUX))) { - clk_disable(i2s->op_clk); clk_put(i2s->op_clk); } else { i2s->rclk_srcrate = @@ -532,7 +484,11 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, i2s->op_clk = clk_get(&i2s->pdev->dev, i2s->src_clk[clk_id]); - clk_enable(i2s->op_clk); + if (IS_ERR(i2s->op_clk)) { + dev_err(&i2s->pdev->dev, + "failed to get i2s opclk\n"); + return PTR_ERR(i2s->op_clk); + } i2s->rclk_srcrate = clk_get_rate(i2s->op_clk); /* Over-ride the other's */ @@ -646,17 +602,31 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, { struct i2s_dai *i2s = to_info(dai); u32 mod = readl(i2s->addr + I2SMOD); + u32 con = readl(i2s->addr + I2SCON); + u32 stream = substream->stream; if (!is_secondary(i2s)) mod &= ~(MOD_DC2_EN | MOD_DC1_EN); switch (params_channels(params)) { case 6: - mod |= MOD_DC2_EN; + mod |= MOD_DC1_EN | MOD_DC2_EN; + break; case 4: mod |= MOD_DC1_EN; break; case 2: + if (stream == SNDRV_PCM_STREAM_PLAYBACK) + i2s->dma_playback.dma_size = 4; + else + i2s->dma_capture.dma_size = 4; + break; + case 1: + if (stream == SNDRV_PCM_STREAM_PLAYBACK) + i2s->dma_playback.dma_size = 2; + else + i2s->dma_capture.dma_size = 2; + break; default: dev_err(&i2s->pdev->dev, "%d channels not supported\n", @@ -702,7 +672,14 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, params_format(params)); return -EINVAL; } + + if (is_secondary(i2s) || is_srp_enabled(i2s, stream)) { + mod |= MOD_TXS_IDMA; + con &= ~CON_FRXOFINTEN | ~CON_FTXSURINTEN | ~CON_FTXURINTEN; + } + writel(mod, i2s->addr + I2SMOD); + writel(con, i2s->addr + I2SCON); if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) snd_soc_dai_set_dma_data(dai, substream, @@ -716,6 +693,65 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, return 0; } +static void i2s_reg_save(struct snd_soc_dai *dai) +{ + struct i2s_dai *i2s = to_info(dai); + u32 n, offset; + + i2s->suspend_i2smod = readl(i2s->addr + I2SMOD); + i2s->suspend_i2scon = readl(i2s->addr + I2SCON); + i2s->suspend_i2spsr = readl(i2s->addr + I2SPSR); + + if ((i2s->pdev->id == 0) || (i2s->pdev->id == SAMSUNG_I2S_SECOFF)) { + for (n = 0, offset = I2SAHB; offset <= I2SSTR1; offset += 4) + i2s->suspend_i2sahb[n++] = readl(i2s->addr + offset); + } + + i2s->reg_saved = true; + + dev_dbg(&i2s->pdev->dev, "Registers of I2S are saved\n"); + + return; +} + +static void i2s_reg_restore(struct snd_soc_dai *dai) +{ + struct i2s_dai *i2s = to_info(dai); + u32 n, offset; + + writel(i2s->suspend_i2smod, i2s->addr + I2SMOD); + writel(i2s->suspend_i2scon, i2s->addr + I2SCON); + writel(i2s->suspend_i2spsr, i2s->addr + I2SPSR); + + if ((i2s->pdev->id == 0) || (i2s->pdev->id == SAMSUNG_I2S_SECOFF)) { + for (n = 0, offset = I2SAHB; offset <= I2SSTR1; offset += 4) + writel(i2s->suspend_i2sahb[n++], i2s->addr + offset); + } + + i2s->reg_saved = false; + + dev_dbg(&i2s->pdev->dev, "Registers of I2S are restored\n"); + + return; +} + +static void i2s_clk_enable(struct i2s_dai *i2s, bool on) +{ + if (on) { + if ((i2s->pdev->id == 0) || + (i2s->pdev->id == SAMSUNG_I2S_SECOFF)) + i2s->audss_clk_enable(true); + else + clk_enable(i2s->cclk); + } else { + if ((i2s->pdev->id == 0) || + (i2s->pdev->id == SAMSUNG_I2S_SECOFF)) + i2s->audss_clk_enable(false); + else + clk_disable(i2s->cclk); + } +} + /* We set constraints on the substream acc to the version of I2S */ static int i2s_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) @@ -726,9 +762,12 @@ static int i2s_startup(struct snd_pcm_substream *substream, spin_lock_irqsave(&lock, flags); - i2s->mode |= DAI_OPENED; + if (is_opened(i2s)) + goto startup_exit; - if (is_manager(other)) + /* Open dai */ + i2s->mode |= DAI_OPENED; + if (is_manager(other)) i2s->mode &= ~DAI_MANAGER; else i2s->mode |= DAI_MANAGER; @@ -736,6 +775,32 @@ static int i2s_startup(struct snd_pcm_substream *substream, /* Enforce set_sysclk in Master mode */ i2s->rclk_srcrate = 0; +#ifdef USE_ALT_REG_RECOVER + if (!is_opened(other) && !srp_active(i2s, IS_OPENED)) { + i2s_clk_enable(i2s, true); + + /* Set default clk for I2S */ + writel((MOD_OPCLK_PCLK | MOD_CDCLK_IN | MOD_RCLK_I2SCLK), + i2s->addr + I2SMOD); + } +#else + if (!is_opened(other) && !srp_active(i2s, IS_OPENED)) + i2s_clk_enable(i2s, true); + + if (i2s->reg_saved) { + if (is_opened(other)) + i2s->reg_saved = false; + else + i2s_reg_restore(dai); + } +#endif + +startup_exit: + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) + i2s->tx_active = true; + else + i2s->rx_active = true; + spin_unlock_irqrestore(&lock, flags); return 0; @@ -750,6 +815,16 @@ static void i2s_shutdown(struct snd_pcm_substream *substream, spin_lock_irqsave(&lock, flags); + /* disable stream_active */ + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) + i2s->tx_active = false; + else + i2s->rx_active = false; + + if (i2s->tx_active || i2s->rx_active) + goto shutdown_exit; + + /* Close dai */ i2s->mode &= ~DAI_OPENED; i2s->mode &= ~DAI_MANAGER; @@ -760,12 +835,24 @@ static void i2s_shutdown(struct snd_pcm_substream *substream, i2s->rfs = 0; i2s->bfs = 0; - spin_unlock_irqrestore(&lock, flags); +#ifdef USE_ALT_REG_RECOVER + if (!is_opened(other) && !srp_active(i2s, IS_OPENED)) + i2s_clk_enable(i2s, false); +#else + if (!is_opened(other) && !srp_active(i2s, IS_RUNNING)) { + /* Gate CDCLK by default */ + i2s_set_sysclk(dai, SAMSUNG_I2S_CDCLK, 0, SND_SOC_CLOCK_IN); - /* Gate CDCLK by default */ - if (!is_opened(other)) - i2s_set_sysclk(dai, SAMSUNG_I2S_CDCLK, - 0, SND_SOC_CLOCK_IN); + if (!i2s->reg_saved) + i2s_reg_save(dai); + } + + if (!is_opened(other) && !srp_active(i2s, IS_OPENED)) + i2s_clk_enable(i2s, false); +#endif + +shutdown_exit: + spin_unlock_irqrestore(&lock, flags); } static int config_setup(struct i2s_dai *i2s) @@ -828,6 +915,44 @@ static int config_setup(struct i2s_dai *i2s) return 0; } +/* + * Wait for the LR signal to allow synchronisation to the L/R clock + * from the codec. May only be needed for slave mode. + */ +static int i2s_lrsync(struct i2s_dai *i2s) +{ + unsigned long loops = msecs_to_loops(5); + u32 con; + + pr_debug("Entered %s\n", __func__); + + while (--loops) { + con = readl(i2s->addr + I2SCON); + if (con & CON_LRINDEX) + break; + + cpu_relax(); + } + + if (!loops) { + printk(KERN_ERR "%s: timeout\n", __func__); + printk(" I2SCON: %x, I2SMOD: %x, I2SPSR: %x\n", + readl(i2s->addr + I2SCON), readl(i2s->addr + I2SMOD), + readl(i2s->addr + I2SPSR)); + printk("AUDSS_CLKSRC=%x, AUDSS_CLKDIV=%x, AUDSS_CLKGATE=%x\n", + readl(S5P_CLKSRC_AUDSS), readl(S5P_CLKDIV_AUDSS), + readl(S5P_CLKGATE_AUDSS)); + printk("i2s pm info: reg_saved=%d, reg_saved_bypm=%d, sus-con=%x" + ", sus-mod=%x, sus-psr=%x, tx_active=%d, rx_active=%d\n", + i2s->reg_saved, i2s->reg_saved_by_pm, + i2s->suspend_i2scon, i2s->suspend_i2smod, i2s->suspend_i2spsr, + i2s->tx_active, i2s->rx_active); + return -ETIMEDOUT; + } + + return 0; +} + static int i2s_trigger(struct snd_pcm_substream *substream, int cmd, struct snd_soc_dai *dai) { @@ -835,11 +960,18 @@ static int i2s_trigger(struct snd_pcm_substream *substream, struct snd_soc_pcm_runtime *rtd = substream->private_data; struct i2s_dai *i2s = to_info(rtd->cpu_dai); unsigned long flags; + int ret = 0; switch (cmd) { case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + if (is_slave(i2s)) { + ret = i2s_lrsync(i2s); + if (ret) + goto exit_err; + } + local_irq_save(flags); if (config_setup(i2s)) { @@ -850,7 +982,7 @@ static int i2s_trigger(struct snd_pcm_substream *substream, if (capture) i2s_rxctrl(i2s, 1); else - i2s_txctrl(i2s, 1); + i2s_txctrl(i2s, 1, substream->stream); local_irq_restore(flags); break; @@ -862,18 +994,20 @@ static int i2s_trigger(struct snd_pcm_substream *substream, if (capture) i2s_rxctrl(i2s, 0); else - i2s_txctrl(i2s, 0); + i2s_txctrl(i2s, 0, substream->stream); if (capture) - i2s_fifo(i2s, FIC_RXFLUSH); - else - i2s_fifo(i2s, FIC_TXFLUSH); - + i2s_fifo(i2s, FIC_RXFLUSH, substream->stream); + else { + if (!srp_active(i2s, IS_RUNNING)) + i2s_fifo(i2s, FIC_TXFLUSH, substream->stream); + } local_irq_restore(flags); break; } - return 0; +exit_err: + return ret; } static int i2s_set_clkdiv(struct snd_soc_dai *dai, @@ -923,10 +1057,10 @@ static int i2s_suspend(struct snd_soc_dai *dai) { struct i2s_dai *i2s = to_info(dai); - if (dai->active) { - i2s->suspend_i2smod = readl(i2s->addr + I2SMOD); - i2s->suspend_i2scon = readl(i2s->addr + I2SCON); - i2s->suspend_i2spsr = readl(i2s->addr + I2SPSR); + if (!i2s->reg_saved) { + i2s->audss_suspend(); + i2s_reg_save(dai); + i2s->reg_saved_by_pm = true; } return 0; @@ -936,10 +1070,14 @@ static int i2s_resume(struct snd_soc_dai *dai) { struct i2s_dai *i2s = to_info(dai); - if (dai->active) { - writel(i2s->suspend_i2scon, i2s->addr + I2SCON); - writel(i2s->suspend_i2smod, i2s->addr + I2SMOD); - writel(i2s->suspend_i2spsr, i2s->addr + I2SPSR); +#ifdef USE_ALT_REG_RECOVER + if (i2s->reg_saved) { +#else + if (i2s->reg_saved && i2s->reg_saved_by_pm) { +#endif + i2s_reg_restore(dai); + i2s->audss_resume(); + i2s->reg_saved_by_pm = false; } return 0; @@ -954,66 +1092,64 @@ static int samsung_i2s_dai_probe(struct snd_soc_dai *dai) struct i2s_dai *i2s = to_info(dai); struct i2s_dai *other = i2s->pri_dai ? : i2s->sec_dai; - if (other && other->clk) /* If this is probe on secondary */ - goto probe_exit; - i2s->addr = ioremap(i2s->base, 0x100); if (i2s->addr == NULL) { dev_err(&i2s->pdev->dev, "cannot ioremap registers\n"); return -ENXIO; } - i2s->clk = clk_get(&i2s->pdev->dev, "iis"); - if (IS_ERR(i2s->clk)) { - dev_err(&i2s->pdev->dev, "failed to get i2s_clock\n"); - iounmap(i2s->addr); - return -ENOENT; - } - clk_enable(i2s->clk); + if (is_secondary(i2s)) + i2s->cclk = clk_get(&(i2s->pri_dai)->pdev->dev, "iis"); + else + i2s->cclk = clk_get(&i2s->pdev->dev, "iis"); - if (other) { - other->addr = i2s->addr; - other->clk = i2s->clk; + if (IS_ERR(i2s->cclk)) { + pr_err("%s: failed to get cclk\n", __func__); + return PTR_ERR(i2s->cclk); } + i2s_clk_enable(i2s, true); + if (i2s->quirks & QUIRK_NEED_RSTCLR) writel(CON_RSTCLR, i2s->addr + I2SCON); -probe_exit: /* Reset any constraint on RFS and BFS */ i2s->rfs = 0; i2s->bfs = 0; - i2s_txctrl(i2s, 0); - i2s_rxctrl(i2s, 0); - i2s_fifo(i2s, FIC_TXFLUSH); - i2s_fifo(other, FIC_TXFLUSH); - i2s_fifo(i2s, FIC_RXFLUSH); + i2s_txctrl(i2s, 0, 0); + i2s_fifo(i2s, FIC_TXFLUSH, 0); + + if (!is_secondary(i2s)) { + i2s_rxctrl(i2s, 0); + i2s_fifo(i2s, FIC_RXFLUSH, 1); + } + + if (is_secondary(i2s) || is_srp_enabled(i2s, 0)) + idma_init((void *)i2s->addr); /* Gate CDCLK by default */ if (!is_opened(other)) i2s_set_sysclk(dai, SAMSUNG_I2S_CDCLK, 0, SND_SOC_CLOCK_IN); +#ifdef USE_ALT_REG_RECOVER +#else + i2s_reg_save(dai); +#endif + i2s->reg_saved_by_pm = false; + i2s_clk_enable(i2s, false); + return 0; } static int samsung_i2s_dai_remove(struct snd_soc_dai *dai) { struct i2s_dai *i2s = snd_soc_dai_get_drvdata(dai); - struct i2s_dai *other = i2s->pri_dai ? : i2s->sec_dai; - if (!other || !other->clk) { - - if (i2s->quirks & QUIRK_NEED_RSTCLR) - writel(0, i2s->addr + I2SCON); - - clk_disable(i2s->clk); - clk_put(i2s->clk); - - iounmap(i2s->addr); - } + if (i2s->quirks & QUIRK_NEED_RSTCLR) + writel(0, i2s->addr + I2SCON); - i2s->clk = NULL; + iounmap(i2s->addr); return 0; } @@ -1054,12 +1190,12 @@ struct i2s_dai *i2s_alloc_dai(struct platform_device *pdev, bool sec) i2s->i2s_dai_drv.suspend = i2s_suspend; i2s->i2s_dai_drv.resume = i2s_resume; i2s->i2s_dai_drv.playback.channels_min = 2; - i2s->i2s_dai_drv.playback.channels_max = 2; + i2s->i2s_dai_drv.playback.channels_max = 6; i2s->i2s_dai_drv.playback.rates = SAMSUNG_I2S_RATES; i2s->i2s_dai_drv.playback.formats = SAMSUNG_I2S_FMTS; if (!sec) { - i2s->i2s_dai_drv.capture.channels_min = 2; + i2s->i2s_dai_drv.capture.channels_min = 1; i2s->i2s_dai_drv.capture.channels_max = 2; i2s->i2s_dai_drv.capture.rates = SAMSUNG_I2S_RATES; i2s->i2s_dai_drv.capture.formats = SAMSUNG_I2S_FMTS; @@ -1159,6 +1295,11 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev) pri_dai->dma_capture.dma_size = 4; pri_dai->base = regs_base; pri_dai->quirks = quirks; + if (pdev->id == 0) { + pri_dai->audss_clk_enable = audss_clk_enable; + pri_dai->audss_suspend = audss_suspend; + pri_dai->audss_resume = audss_resume; + } if (quirks & QUIRK_PRI_6CHAN) pri_dai->i2s_dai_drv.playback.channels_max = 6; @@ -1179,8 +1320,14 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev) sec_dai->dma_playback.dma_size = 4; sec_dai->base = regs_base; sec_dai->quirks = quirks; + sec_dai->pri_dai = pri_dai; pri_dai->sec_dai = sec_dai; + if (pdev->id == 0) { + sec_dai->audss_clk_enable = audss_clk_enable; + sec_dai->audss_suspend = audss_suspend; + sec_dai->audss_resume = audss_resume; + } } if (i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) { diff --git a/sound/soc/samsung/i2s.h b/sound/soc/samsung/i2s.h index 8e15f6a..8235bf7 100644 --- a/sound/soc/samsung/i2s.h +++ b/sound/soc/samsung/i2s.h @@ -24,6 +24,122 @@ #define SAMSUNG_I2S_RCLKSRC_0 0 #define SAMSUNG_I2S_RCLKSRC_1 1 -#define SAMSUNG_I2S_CDCLK 2 +#define SAMSUNG_I2S_CDCLK 2 +#define SAMSUNG_I2S_OPCLK 3 + +#define I2SCON 0x0 +#define I2SMOD 0x4 +#define I2SFIC 0x8 +#define I2SPSR 0xc +#define I2STXD 0x10 +#define I2SRXD 0x14 +#define I2SFICS 0x18 +#define I2STXDS 0x1c + +#define CON_RSTCLR (1 << 31) +#define CON_FRXOFSTATUS (1 << 26) /* ver5: i2s0 */ +#define CON_FRXOFINTEN (1 << 25) /* ver5: i2s0 */ +#define CON_FRXOFSTATUS_L (1 << 19) /* ver2: i2s1, i2s2 */ +#define CON_FRXOFINTEN_L (1 << 18) /* ver2: i2s1, i2s2 */ + +/* Secondary TX FIFO only */ +#define CON_FTXSURSTAT (1 << 24) +#define CON_FTXSURINTEN (1 << 23) +#define CON_TXSFIFO_EMPTY (1 << 22) +#define CON_TXSFIFO_FULL (1 << 21) +#define CON_TXSDMA_PAUSE (1 << 20) +#define CON_TXSDMA_ACTIVE (1 << 18) + +#define CON_FTXURSTATUS (1 << 17) +#define CON_FTXURINTEN (1 << 16) +#define CON_TXFIFO2_EMPTY (1 << 15) +#define CON_TXFIFO1_EMPTY (1 << 14) +#define CON_TXFIFO2_FULL (1 << 13) +#define CON_TXFIFO1_FULL (1 << 12) + +#define CON_LRINDEX (1 << 11) +#define CON_TXFIFO_EMPTY (1 << 10) +#define CON_RXFIFO_EMPTY (1 << 9) +#define CON_TXFIFO_FULL (1 << 8) +#define CON_RXFIFO_FULL (1 << 7) +#define CON_TXDMA_PAUSE (1 << 6) +#define CON_RXDMA_PAUSE (1 << 5) +#define CON_TXCH_PAUSE (1 << 4) +#define CON_RXCH_PAUSE (1 << 3) +#define CON_TXDMA_ACTIVE (1 << 2) +#define CON_RXDMA_ACTIVE (1 << 1) +#define CON_ACTIVE (1 << 0) + +#define MOD_OPCLK_CDCLK_OUT (0 << 30) +#define MOD_OPCLK_CDCLK_IN (1 << 30) +#define MOD_OPCLK_BCLK_OUT (2 << 30) +#define MOD_OPCLK_PCLK (3 << 30) +#define MOD_OPCLK_MASK (3 << 30) +#define MOD_TXS_IDMA (1 << 28) /* Sec_TXFIFO use I-DMA */ + +#define MOD_BLCS_SHIFT 26 +#define MOD_BLCS_16BIT (0 << MOD_BLCS_SHIFT) +#define MOD_BLCS_8BIT (1 << MOD_BLCS_SHIFT) +#define MOD_BLCS_24BIT (2 << MOD_BLCS_SHIFT) +#define MOD_BLCS_MASK (3 << MOD_BLCS_SHIFT) +#define MOD_BLCP_SHIFT 24 +#define MOD_BLCP_16BIT (0 << MOD_BLCP_SHIFT) +#define MOD_BLCP_8BIT (1 << MOD_BLCP_SHIFT) +#define MOD_BLCP_24BIT (2 << MOD_BLCP_SHIFT) +#define MOD_BLCP_MASK (3 << MOD_BLCP_SHIFT) + +#define MOD_C2DD_HHALF (1 << 21) /* Discard Higher-half */ +#define MOD_C2DD_LHALF (1 << 20) /* Discard Lower-half */ +#define MOD_C1DD_HHALF (1 << 19) +#define MOD_C1DD_LHALF (1 << 18) +#define MOD_DC2_EN (1 << 17) +#define MOD_DC1_EN (1 << 16) +#define MOD_BLC_16BIT (0 << 13) +#define MOD_BLC_8BIT (1 << 13) +#define MOD_BLC_24BIT (2 << 13) +#define MOD_BLC_MASK (3 << 13) + +#define MOD_RCLK_I2SCLK (1<<10) +#define MOD_RCLK_PCLK (0<<10) +#define MOD_IMS_SYSMUX (1 << 10) +#define MOD_SLAVE (1 << 11) +#define MOD_TXONLY (0 << 8) +#define MOD_RXONLY (1 << 8) +#define MOD_TXRX (2 << 8) +#define MOD_MASK (3 << 8) +#define MOD_LR_LLOW (0 << 7) +#define MOD_LR_RLOW (1 << 7) +#define MOD_SDF_IIS (0 << 5) +#define MOD_SDF_MSB (1 << 5) +#define MOD_SDF_LSB (2 << 5) +#define MOD_SDF_MASK (3 << 5) +#define MOD_RCLK_256FS (0 << 3) +#define MOD_RCLK_512FS (1 << 3) +#define MOD_RCLK_384FS (2 << 3) +#define MOD_RCLK_768FS (3 << 3) +#define MOD_RCLK_MASK (3 << 3) +#define MOD_BCLK_32FS (0 << 1) +#define MOD_BCLK_48FS (1 << 1) +#define MOD_BCLK_16FS (2 << 1) +#define MOD_BCLK_24FS (3 << 1) +#define MOD_BCLK_MASK (3 << 1) +#define MOD_8BIT (1 << 0) + +#define MOD_CDCLK_IN (1<<12) +#define MOD_CDCLK_OUT (0<<12) +#define MOD_CDCLKCON (1 << 12) + +#define PSR_PSREN (1 << 15) + +#define FIC_TX2COUNT(x) (((x) >> 24) & 0xf) +#define FIC_TX1COUNT(x) (((x) >> 16) & 0xf) + +#define FIC_TXFLUSH (1 << 15) +#define FIC_RXFLUSH (1 << 7) +#define FIC_TXCOUNT(x) (((x) >> 8) & 0xf) +#define FIC_RXCOUNT(x) (((x) >> 0) & 0xf) +#define FICS_TXCOUNT(x) (((x) >> 8) & 0x7f) + +#define msecs_to_loops(t) (loops_per_jiffy / 1000 * HZ * t) #endif /* __SND_SOC_SAMSUNG_I2S_H */ diff --git a/sound/soc/samsung/idma.c b/sound/soc/samsung/idma.c new file mode 100644 index 0000000..e45dd90 --- /dev/null +++ b/sound/soc/samsung/idma.c @@ -0,0 +1,596 @@ +/* + * idma.c -- I2S0's Internal Dma driver + * + * Copyright (c) 2010 Samsung Electronics Co. Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include <linux/interrupt.h> +#include <linux/platform_device.h> +#include <linux/dma-mapping.h> +#include <linux/slab.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> +#include <sound/soc.h> + +#include <mach/map.h> +#include <plat/cpu.h> + +#include "i2s.h" +#include "idma.h" +#include "dma.h" + +/*#define ENABLE_REG_LOG*/ + +#define ST_RUNNING (1<<0) +#define ST_OPENED (1<<1) + +static const struct snd_pcm_hardware idma_hardware = { + .info = SNDRV_PCM_INFO_INTERLEAVED | + SNDRV_PCM_INFO_BLOCK_TRANSFER | + SNDRV_PCM_INFO_MMAP | + SNDRV_PCM_INFO_MMAP_VALID | + SNDRV_PCM_INFO_PAUSE | + SNDRV_PCM_INFO_RESUME, + .formats = SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_U16_LE | + SNDRV_PCM_FMTBIT_S24_LE | + SNDRV_PCM_FMTBIT_U24_LE | + SNDRV_PCM_FMTBIT_U8 | + SNDRV_PCM_FMTBIT_S8, + .channels_min = 1, + .channels_max = 2, + .buffer_bytes_max = LP_TXBUFF_MAX, + .period_bytes_min = 1024, + .period_bytes_max = PAGE_SIZE * 2, + .periods_min = 2, + .periods_max = 128, + .fifo_size = 32, +}; + +struct idma_ctrl { + spinlock_t lock; + int state; + dma_addr_t start; + dma_addr_t pos; + dma_addr_t end; + dma_addr_t period; + dma_addr_t periodsz; + void *token; + void (*cb)(void *dt, int bytes_xfer); +}; + +static struct idma_info { + spinlock_t lock; + void __iomem *regs; + int trigger_stat; +} idma; + +static void idma_getpos(dma_addr_t *src, struct snd_pcm_substream *substream) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + struct idma_ctrl *prtd = runtime->private_data; + + *src = prtd->start + (readl(idma.regs + I2STRNCNT) & 0xffffff) * 4; +} + +static int idma_enqueue(struct snd_pcm_substream *substream) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + struct idma_ctrl *prtd = substream->runtime->private_data; + u32 val = prtd->start; + unsigned long flags; + + spin_lock_irqsave(&prtd->lock, flags); + prtd->token = (void *) substream; + spin_unlock_irqrestore(&prtd->lock, flags); + + /* Start address0 of I2S internal DMA operation. */ + writel(val, idma.regs + I2SSTR0); + + /* Internal DMA Level0 Interrupt Address */ + val = prtd->start + prtd->periodsz; + writel(val, idma.regs + I2SLVL0ADDR); + + /* + * Transfer block size for I2S internal DMA. + * Should decide transfer size before start dma operation + */ + val = readl(idma.regs + I2SSIZE); + val &= ~(I2SSIZE_TRNMSK << I2SSIZE_SHIFT); + + val |= (((runtime->dma_bytes >> 2) & + I2SSIZE_TRNMSK) << I2SSIZE_SHIFT); + writel(val, idma.regs + I2SSIZE); + + return 0; +} + +static void idma_setcallbk(struct snd_pcm_substream *substream, + void (*cb)(void *, int)) +{ + struct idma_ctrl *prtd = substream->runtime->private_data; + unsigned long flags; + + spin_lock_irqsave(&prtd->lock, flags); + prtd->cb = cb; + spin_unlock_irqrestore(&prtd->lock, flags); + + pr_debug("%s:%d dma_period=%x\n", __func__, __LINE__, prtd->periodsz); +} + +static void idma_ctrl(int op) +{ + u32 val = readl(idma.regs + I2SAHB); + unsigned long flags; + + spin_lock_irqsave(&idma.lock, flags); + + switch (op) { + case LPAM_DMA_START: + val |= (AHB_INTENLVL0 | AHB_DMAEN); + break; + case LPAM_DMA_STOP: + val &= ~(AHB_INTENLVL0 | AHB_DMAEN); + break; + default: + spin_unlock(&idma.lock); + return; + } + + writel(val, idma.regs + I2SAHB); + spin_unlock_irqrestore(&idma.lock, flags); +} + +static void idma_done(void *id, int bytes_xfer) +{ + struct snd_pcm_substream *substream = id; + struct idma_ctrl *prtd = substream->runtime->private_data; + + if (prtd && (prtd->state & ST_RUNNING)) + snd_pcm_period_elapsed(substream); +} + +static int idma_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + struct idma_ctrl *prtd = substream->runtime->private_data; + u32 ahb = readl(idma.regs + I2SAHB); + + pr_debug("Entered %s\n", __func__); + + ahb |= (AHB_DMARLD | AHB_INTMASK); + writel(ahb, idma.regs + I2SAHB); + + snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer); + runtime->dma_bytes = params_buffer_bytes(params); + memset(runtime->dma_area, 0, runtime->dma_bytes); + + prtd->start = prtd->pos = runtime->dma_addr; + prtd->period = params_periods(params); + prtd->periodsz = params_period_bytes(params); + prtd->end = prtd->start + runtime->dma_bytes; + + idma_setcallbk(substream, idma_done); + + pr_info("I:%s:DmaAddr=@%x Total=%d PrdSz=%d #Prds=%d dma_area=0x%x\n", + (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ? "P" : "C", + prtd->start, runtime->dma_bytes, prtd->periodsz, + prtd->period, (unsigned int)runtime->dma_area); + + return 0; +} + +static int idma_hw_free(struct snd_pcm_substream *substream) +{ + pr_debug("Entered %s\n", __func__); + + snd_pcm_set_runtime_buffer(substream, NULL); + + return 0; +} + +static int idma_prepare(struct snd_pcm_substream *substream) +{ + struct idma_ctrl *prtd = substream->runtime->private_data; + + pr_debug("Entered %s\n", __func__); + + prtd->pos = prtd->start; + + /* flush the DMA channel */ + idma_ctrl(LPAM_DMA_STOP); + idma_enqueue(substream); + + return 0; +} + +static int idma_trigger(struct snd_pcm_substream *substream, int cmd) +{ + struct idma_ctrl *prtd = substream->runtime->private_data; + int ret = 0; + unsigned long flags; + + pr_debug("Entered %s\n", __func__); + + spin_lock_irqsave(&prtd->lock, flags); + + switch (cmd) { + case SNDRV_PCM_TRIGGER_RESUME: + case SNDRV_PCM_TRIGGER_START: + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + prtd->state |= ST_RUNNING; + idma.trigger_stat = LPAM_DMA_START; + idma_ctrl(LPAM_DMA_START); + break; + + case SNDRV_PCM_TRIGGER_SUSPEND: + case SNDRV_PCM_TRIGGER_STOP: + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: + prtd->state &= ~ST_RUNNING; + idma.trigger_stat = LPAM_DMA_STOP; + idma_ctrl(LPAM_DMA_STOP); + break; + + default: + ret = -EINVAL; + break; + } + + spin_unlock_irqrestore(&prtd->lock, flags); + + return ret; +} + +static snd_pcm_uframes_t + idma_pointer(struct snd_pcm_substream *substream) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + struct idma_ctrl *prtd = runtime->private_data; + dma_addr_t src; + unsigned long res, flags; + + spin_lock_irqsave(&prtd->lock, flags); + + idma_getpos(&src, substream); + res = src - prtd->start; + + spin_unlock_irqrestore(&prtd->lock, flags); + + if (res >= snd_pcm_lib_buffer_bytes(substream)) { + if (res == snd_pcm_lib_buffer_bytes(substream)) + res = 0; + } + + return bytes_to_frames(substream->runtime, res); +} + +static int idma_mmap(struct snd_pcm_substream *substream, + struct vm_area_struct *vma) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + unsigned long size, offset; + int ret; + + pr_debug("Entered %s\n", __func__); + + /* From snd_pcm_lib_mmap_iomem */ + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + vma->vm_flags |= VM_IO; + size = vma->vm_end - vma->vm_start; + offset = vma->vm_pgoff << PAGE_SHIFT; + ret = io_remap_pfn_range(vma, vma->vm_start, + (runtime->dma_addr + offset) >> PAGE_SHIFT, + size, vma->vm_page_prot); + + return ret; +} + +#ifdef ENABLE_REG_LOG +u32 iis_reg_addr[8] = { + I2SCON, I2SMOD, I2SFIC, I2SFICS, I2SAHB, I2SSTR0, I2SSIZE, I2SLVL0ADDR +}; +struct { + u32 before; + u32 after; +} iis_reg_log[16][8]; +int iis_reg_idx = 0; +#endif +static irqreturn_t iis_irq(int irqno, void *dev_id) +{ + struct idma_ctrl *prtd = (struct idma_ctrl *)dev_id; + u32 iiscon = readl(idma.regs + I2SCON); + u32 iisahb = readl(idma.regs + I2SAHB); + u32 addr = 0; + u32 val = 0; + +#ifdef ENABLE_REG_LOG + for (val = 0; val < 8; val++) { + addr = iis_reg_addr[val]; + iis_reg_log[iis_reg_idx][val].before = readl(idma.regs + addr); + } +#endif + + /* Check RX Overflow INT */ + if (iiscon & CON_FRXOFSTATUS) { + pr_err("RX overflow occurs!! I2SCON[0x%08x])\n", iiscon); + iiscon |= CON_FRXOFSTATUS; + writel(iiscon, idma.regs + I2SCON); + } + + /* Check TX_P Underrun INT */ + if (iiscon & CON_FTXURSTATUS) { + pr_err("Tx_P underrun occurs!! I2SCON[0x%08x])\n", iiscon); + iiscon |= CON_FTXURSTATUS; + writel(iiscon, idma.regs + I2SCON); + } + + /* Check TX_S Underrun INT */ + if (iiscon & CON_FTXSURSTAT) { + pr_err("Tx_S underrun occurs!! I2SCON[0x%08x])\n", iiscon); + iiscon |= CON_FTXSURSTAT; + writel(iiscon, idma.regs + I2SCON); + } + + /* Check I2SAHB Level[0~3] INT */ + if (iisahb & AHB_LVL0INT) + val = AHB_CLRLVL0INT; + else if (iisahb & AHB_LVL1INT) + val = AHB_CLRLVL1INT; + else if (iisahb & AHB_LVL2INT) + val = AHB_CLRLVL2INT; + else if (iisahb & AHB_LVL3INT) + val = AHB_CLRLVL3INT; + + if (val) { + iisahb |= val; + writel(iisahb, idma.regs + I2SAHB); + + addr = readl(idma.regs + I2SLVL0ADDR); + addr += prtd->periodsz; + + if (addr >= prtd->end) + addr = prtd->start; + + writel(addr, idma.regs + I2SLVL0ADDR); + + /* Finished dma transfer ? */ + if (iisahb & AHB_LVLINTMASK) { + if (prtd->cb) + prtd->cb(prtd->token, prtd->periodsz); + } + } + +#ifdef ENABLE_REG_LOG + for (val = 0; val < 8; val++) { + addr = iis_reg_addr[val]; + iis_reg_log[iis_reg_idx][val].after = readl(idma.regs + addr); + } + iis_reg_idx++; + iis_reg_idx &= 0x0F; +#endif + + return IRQ_HANDLED; +} + +static int idma_open(struct snd_pcm_substream *substream) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + struct idma_ctrl *prtd; + int ret; + + pr_debug("Entered %s\n", __func__); + + snd_soc_set_runtime_hwparams(substream, &idma_hardware); + + /* Clear AHB register */ + writel(0, idma.regs + I2SAHB); + + prtd = kzalloc(sizeof(struct idma_ctrl), GFP_KERNEL); + if (prtd == NULL) + return -ENOMEM; + + ret = request_irq(IRQ_I2S0, iis_irq, 0, "i2s", prtd); + if (ret < 0) { + pr_err("fail to claim i2s irq , ret = %d\n", ret); + kfree(prtd); + return ret; + } + + spin_lock_init(&prtd->lock); + + runtime->private_data = prtd; + + return 0; +} + +static int idma_close(struct snd_pcm_substream *substream) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + struct idma_ctrl *prtd = runtime->private_data; + + pr_debug("Entered %s, prtd = %p\n", __func__, prtd); + + free_irq(IRQ_I2S0, prtd); + + if (!prtd) + pr_err("idma_close called with prtd == NULL\n"); + + kfree(prtd); + + return 0; +} + +static struct snd_pcm_ops idma_ops = { + .open = idma_open, + .close = idma_close, + .ioctl = snd_pcm_lib_ioctl, + .trigger = idma_trigger, + .pointer = idma_pointer, + .mmap = idma_mmap, + .hw_params = idma_hw_params, + .hw_free = idma_hw_free, + .prepare = idma_prepare, +}; + +static void idma_free(struct snd_pcm *pcm) +{ + struct snd_pcm_substream *substream; + struct snd_dma_buffer *buf; + + pr_debug("Entered %s\n", __func__); + + substream = pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream; + if (!substream) + return; + + buf = &substream->dma_buffer; + if (!buf->area) + return; + + iounmap(buf->area); + + buf->area = NULL; + buf->addr = 0; +} + +static int preallocate_idma_buffer(struct snd_pcm *pcm, int stream) +{ + struct snd_pcm_substream *substream = pcm->streams[stream].substream; + struct snd_dma_buffer *buf = &substream->dma_buffer; + + pr_debug("Entered %s\n", __func__); + buf->dev.dev = pcm->card->dev; + buf->private_data = NULL; + + /* Assign PCM buffer pointers */ + buf->dev.type = SNDRV_DMA_TYPE_CONTINUOUS; + buf->addr = LP_TXBUFF_ADDR; + buf->bytes = idma_hardware.buffer_bytes_max; + buf->area = (unsigned char *)ioremap(buf->addr, buf->bytes); + pr_debug("%s: VA-%p PA-%X %ubytes\n", + __func__, buf->area, buf->addr, buf->bytes); + + return 0; +} + +static u64 idma_mask = DMA_BIT_MASK(32); + +static int idma_new(struct snd_card *card, + struct snd_soc_dai *dai, struct snd_pcm *pcm) +{ + int ret = 0; + + pr_debug("Entered %s\n", __func__); + if (!card->dev->dma_mask) + card->dev->dma_mask = &idma_mask; + if (!card->dev->coherent_dma_mask) + card->dev->coherent_dma_mask = DMA_BIT_MASK(32); + + if (dai->driver->playback.channels_min) + ret = preallocate_idma_buffer(pcm, + SNDRV_PCM_STREAM_PLAYBACK); + + return ret; +} + +void idma_init(void *regs) +{ + spin_lock_init(&idma.lock); + idma.regs = regs; +} + +#ifdef CONFIG_SND_SAMSUNG_RP +int idma_irq_callback(void) +{ + u32 iisahb; + int ret = 0; + + iisahb = readl(idma.regs + I2SAHB); + + if (iisahb & AHB_LVL0INT) { + iisahb |= AHB_CLRLVL0INT; + ret = 1; + } + + if (iisahb & AHB_LVL1INT) { + iisahb |= AHB_CLRLVL1INT; + ret = 1; + } + + if (ret) + writel(iisahb, idma.regs + I2SAHB); + + return ret; +} +EXPORT_SYMBOL(idma_irq_callback); + +void idma_stop(void) +{ + u32 val; + + val = readl(idma.regs + I2SAHB); + val &= ~AHB_DMARLD; + val |= AHB_DMA_STRADDRRST; + val &= ~AHB_DMAEN; + val &= ~(AHB_LVL0INT | AHB_LVL1INT); + val |= AHB_CLRLVL0INT | AHB_CLRLVL1INT; + writel(val, idma.regs + I2SAHB); + + writel(0, idma.regs + I2SAHB); + writel(0x00000000, idma.regs + I2SLVL0ADDR); + writel(0x00000000, idma.regs + I2SLVL1ADDR); +} +EXPORT_SYMBOL(idma_stop); +#endif + +struct snd_soc_platform_driver samsung_asoc_idma_platform = { + .ops = &idma_ops, + .pcm_new = idma_new, + .pcm_free = idma_free, +}; + +#ifndef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER +static int __devinit +samsung_asoc_idma_platform_probe(struct platform_device *pdev) +{ + return snd_soc_register_platform(&pdev->dev, &samsung_asoc_idma_platform); +} + +static int __devexit +samsung_asoc_idma_platform_remove(struct platform_device *pdev) +{ + snd_soc_unregister_platform(&pdev->dev); + return 0; +} + +static struct platform_driver asoc_idma_driver = { + .driver = { + .name = "samsung-audio-idma", + .owner = THIS_MODULE, + }, + + .probe = samsung_asoc_idma_platform_probe, + .remove = __devexit_p(samsung_asoc_idma_platform_remove), +}; + +static int __init samsung_idma_init(void) +{ + return platform_driver_register(&asoc_idma_driver); +} +module_init(samsung_idma_init); + +static void __exit samsung_idma_exit(void) +{ + platform_driver_unregister(&asoc_idma_driver); +} +module_exit(samsung_idma_exit); +#endif + +MODULE_DESCRIPTION("Samsung ASoC IDMA Driver"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/idma.h b/sound/soc/samsung/idma.h new file mode 100644 index 0000000..0480974 --- /dev/null +++ b/sound/soc/samsung/idma.h @@ -0,0 +1,84 @@ +/* + * idma.h -- I2S0's Internal Dma driver + * + * Copyright (c) 2010 Samsung Electronics Co. Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ + +#ifndef __S3C_IDMA_H_ +#define __S3C_IDMA_H_ + +#ifdef CONFIG_SND_SAMSUNG_ALP +#include "srp_alp/srp_alp.h" +#endif + +#define I2SAHB 0x20 +#define I2SSTR0 0x24 +#define I2SSIZE 0x28 +#define I2STRNCNT 0x2c +#define I2SLVL0ADDR 0x30 +#define I2SLVL1ADDR 0x34 +#define I2SLVL2ADDR 0x38 +#define I2SLVL3ADDR 0x3c +#define I2SSTR1 0x40 + +#define AHB_DMAEN (1 << 0) +#define AHB_DMACLR (1 << 1) +#define AHB_INTMASK (1 << 3) +#define AHB_DMARLD (1 << 5) +#define AHB_DMA_STRADDRTOG (1 << 6) +#define AHB_DMA_STRADDRRST (1 << 7) +#define AHB_CLRLVL0INT (1 << 16) +#define AHB_CLRLVL1INT (1 << 17) +#define AHB_CLRLVL2INT (1 << 18) +#define AHB_CLRLVL3INT (1 << 19) +#define AHB_LVL0INT (1 << 20) +#define AHB_LVL1INT (1 << 21) +#define AHB_LVL2INT (1 << 22) +#define AHB_LVL3INT (1 << 23) +#define AHB_INTENLVL0 (1 << 24) +#define AHB_INTENLVL1 (1 << 25) +#define AHB_INTENLVL2 (1 << 26) +#define AHB_INTENLVL3 (1 << 27) +#define AHB_LVLINTMASK (0xf << 20) + +#define I2SSIZE_TRNMSK (0xffff) +#define I2SSIZE_SHIFT (16) + +/* If enabled ALP Audio */ +#if defined(CONFIG_SND_SAMSUNG_ALP) +#if defined(CONFIG_ARCH_EXYNOS4) +#define LP_TXBUFF_OFFSET ((soc_is_exynos4412() || soc_is_exynos4212()) ? \ + (0x38000) : (0x18000)) +#elif defined(CONFIG_ARCH_EXYNOS5) +#define LP_TXBUFF_OFFSET (0x4) +#endif + +#define LP_TXBUFF_ADDR (soc_is_exynos5250() ? \ + (SRP_DMEM_BASE + LP_TXBUFF_OFFSET) : \ + (SRP_IRAM_BASE + LP_TXBUFF_OFFSET)) +#define LP_TXBUFF_MAX (32 * 1024) +/* If only enabled LP Audio */ +#else +#define LP_TXBUFF_ADDR (0x03000000) +#define LP_TXBUFF_MAX (128 * 1024) +#endif + +/* idma_state */ +#define LPAM_DMA_STOP 0 +#define LPAM_DMA_START 1 + +#ifdef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER +extern struct snd_soc_platform_driver samsung_asoc_idma_platform; +#endif +extern void idma_init(void *regs); + +/* These functions are used for srp driver. */ +extern int idma_irq_callback(void); +extern void idma_stop(void); +#endif /* __S3C_IDMA_H_ */ diff --git a/sound/soc/samsung/lungo_wm1811.c b/sound/soc/samsung/lungo_wm1811.c new file mode 100644 index 0000000..ca91d74 --- /dev/null +++ b/sound/soc/samsung/lungo_wm1811.c @@ -0,0 +1,1213 @@ +/* + * lungo_wm1811.c + * + * Copyright (c) 2011 Samsung Electronics Co. Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ +#include <linux/platform_device.h> +#include <linux/clk.h> +#include <linux/io.h> +#include <linux/gpio.h> +#include <linux/delay.h> +#include <linux/slab.h> +#include <linux/workqueue.h> +#include <linux/input.h> +#include <linux/wakelock.h> +#include <linux/suspend.h> + +#include <sound/soc.h> +#include <sound/soc-dapm.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> +#include <sound/jack.h> + +#include <mach/regs-clock.h> +#include <mach/pmu.h> + +#include <linux/mfd/wm8994/core.h> +#include <linux/mfd/wm8994/registers.h> +#include <linux/mfd/wm8994/pdata.h> + +#include "i2s.h" +#include "s3c-i2s-v2.h" +#include "../codecs/wm8994.h" + + +/* SMDK has a 16.934MHZ crystal attached to WM8994 */ +#define SMDK_WM8994_OSC_FREQ 16934400 +#define WM8994_DAI_AIF1 0 +#define WM8994_DAI_AIF2 1 +#define WM8994_DAI_AIF3 2 + +#define WM1811_JACKDET_MODE_NONE 0x0000 +#define WM1811_JACKDET_MODE_JACK 0x0100 +#define WM1811_JACKDET_MODE_MIC 0x0080 +#define WM1811_JACKDET_MODE_AUDIO 0x0180 + +#define WM1811_JACKDET_BTN0 0x04 +#define WM1811_JACKDET_BTN1 0x10 +#define WM1811_JACKDET_BTN2 0x08 + +static const struct wm8958_micd_rate lungo_det_rates[] = { + { 32768, true, 0, 0 }, + { 32768, false, 0, 0 }, + { 44100 * 256, true, 7, 7 }, + { 44100 * 256, false, 7, 7 }, +}; + +static const struct wm8958_micd_rate lungo_jackdet_rates[] = { + { 32768, true, 0, 0 }, + { 32768, false, 0, 0 }, + { 44100 * 256, true, 7, 7 }, + { 44100 * 256, false, 7, 7 }, +}; + +static int aif2_mode; +const char *aif2_mode_text[] = { + "Slave", "Master" +}; +#ifndef CONFIG_SEC_DEV_JACK +/* To support PBA function test */ +static struct class *jack_class; +static struct device *jack_dev; +#endif + +static bool lungo_fll1_active; + +struct wm1811_machine_priv { + struct snd_soc_jack jack; + struct snd_soc_codec *codec; + struct delayed_work mic_work; + struct wake_lock jackdet_wake_lock; +}; + +static bool xclkout_enabled; + +static void lungo_set_mclk(int on) +{ +#if defined(CONFIG_ARCH_EXYNOS4) + static int ipwron = -1; + + if (ipwron == on) + return; + + ipwron = on; + + if (on) { + exynos4_pmu_xclkout_set(1, XCLKOUT_XUSBXTI); + xclkout_enabled = true; + } else { + exynos4_pmu_xclkout_set(0, XCLKOUT_XUSBXTI); + xclkout_enabled = false; + } +#else + if (on) { + exynos5_pmu_xclkout_set(1, XCLKOUT_XXTI); + xclkout_enabled = true; + } else { + exynos5_pmu_xclkout_set(0, XCLKOUT_XXTI); + xclkout_enabled = false; + } +#endif + mdelay(10); +} +#if defined(CONFIG_SND_SOC_USE_EXTERNAL_MIC_BIAS) +static void lungo_gpio_init(void) +{ + int err; + + /* Main Microphone BIAS */ + err = gpio_request(GPIO_MIC_BIAS_EN, "MAIN MIC"); + if (err) { + pr_err(KERN_ERR "MIC_BIAS_EN GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_MIC_BIAS_EN, 1); + gpio_set_value(GPIO_MIC_BIAS_EN, 0); + gpio_free(GPIO_MIC_BIAS_EN); +} + +static int lungo_ext_micbias(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + + dev_dbg(codec->dev, "%s event is %02X", w->name, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + gpio_set_value(GPIO_MIC_BIAS_EN, 1); + break; + case SND_SOC_DAPM_POST_PMD: + gpio_set_value(GPIO_MIC_BIAS_EN, 0); + break; + } + + return 0; +} +#endif + +static const struct soc_enum aif2_mode_enum[] = { + SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aif2_mode_text), aif2_mode_text), +}; + +static int get_aif2_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = aif2_mode; + return 0; +} + +static int set_aif2_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + if (aif2_mode == ucontrol->value.integer.value[0]) + return 0; + + aif2_mode = ucontrol->value.integer.value[0]; + + pr_info("set aif2 mode : %s\n", aif2_mode_text[aif2_mode]); + + return 0; +} +static void lungo_micd_set_rate(struct snd_soc_codec *codec) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + int best, i, sysclk, val; + bool idle; + const struct wm8958_micd_rate *rates = NULL; + int num_rates = 0; + + idle = !wm8994->jack_mic; + + sysclk = snd_soc_read(codec, WM8994_CLOCKING_1); + if (sysclk & WM8994_SYSCLK_SRC) + sysclk = wm8994->aifclk[1]; + else + sysclk = wm8994->aifclk[0]; + + if (wm8994->jackdet) { + rates = lungo_jackdet_rates; + num_rates = ARRAY_SIZE(lungo_jackdet_rates); + } else { + rates = lungo_det_rates; + num_rates = ARRAY_SIZE(lungo_det_rates); + } + + best = 0; + for (i = 0; i < num_rates; i++) { + if (rates[i].idle != idle) + continue; + if (abs(rates[i].sysclk - sysclk) < + abs(rates[best].sysclk - sysclk)) + best = i; + else if (rates[best].idle != idle) + best = i; + } + + val = rates[best].start << WM8958_MICD_BIAS_STARTTIME_SHIFT + | rates[best].rate << WM8958_MICD_RATE_SHIFT; + + snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, + WM8958_MICD_BIAS_STARTTIME_MASK | + WM8958_MICD_RATE_MASK, val); +} + +static void lungo_start_fll1(struct snd_soc_dai *aif1_dai) +{ + int ret; + if (lungo_fll1_active) + return; + + dev_info(aif1_dai->dev, "Moving to audio clocking settings\n"); + + /* Switch AIF1 to MCLK2 while we bring stuff up */ + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_MCLK2, + 32768, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to switch to MCLK2: %d\n", ret); + + /* Start the 24MHz clock to provide a high frequency reference to + * provide a high frequency reference for the FLL, giving improved + * performance. + */ + lungo_set_mclk(3); /* forced enable MCLK */ + /* Switch the FLL */ + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, WM8994_FLL_SRC_MCLK1, + 24000000, 44100 * 256); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to start FLL1: %d\n", ret); + +#ifdef MANAGE_MCLK1 + /* Now the FLL is running we can stop the reference clock, the + * FLL will maintain frequency with no reference so this saves + * power from the reference clock. + */ + lungo_set_mclk(0); +#endif + + /* Then switch AIF1CLK to it */ + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_FLL1, + 44100 * 256, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to switch to FLL1: %d\n", ret); + + lungo_micd_set_rate(aif1_dai->codec); + + lungo_fll1_active = true; +} + +static void lungo_micdet(u16 status, void *data) +{ + struct wm1811_machine_priv *wm1811 = data; + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(wm1811->codec); + int report; + + dev_info(wm1811->codec->dev, "%s\n", __func__); + wake_lock_timeout(&wm1811->jackdet_wake_lock, 5 * HZ); + + /* Either nothing present or just starting detection */ + if (!(status & WM8958_MICD_STS)) { + if (!wm8994->jackdet) { + /* If nothing present then clear our statuses */ + dev_dbg(wm1811->codec->dev, "Detected open circuit\n"); + wm8994->jack_mic = false; + wm8994->mic_detecting = true; + + lungo_micd_set_rate(wm1811->codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, 0, + wm8994->btn_mask | + SND_JACK_HEADSET); + } + return; + } + + /* If the measurement is showing a high impedence we've got a + * microphone. + */ + if (wm8994->mic_detecting && (status & 0x400)) { + dev_info(wm1811->codec->dev, "Detected microphone\n"); + + wm8994->mic_detecting = false; + wm8994->jack_mic = true; + + lungo_micd_set_rate(wm1811->codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADSET, + SND_JACK_HEADSET); + } + + if (wm8994->mic_detecting && status & 0x4) { + dev_info(wm1811->codec->dev, "Detected headphone\n"); + wm8994->mic_detecting = false; + + lungo_micd_set_rate(wm1811->codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADPHONE, + SND_JACK_HEADSET); + + /* If we have jackdet that will detect removal */ + if (wm8994->jackdet) { + snd_soc_update_bits(wm1811->codec, WM8958_MIC_DETECT_1, + WM8958_MICD_ENA, 0); + + if (wm8994->active_refcount) { + snd_soc_update_bits(wm1811->codec, + WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + WM1811_JACKDET_MODE_AUDIO); + } else { + snd_soc_update_bits(wm1811->codec, + WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + WM1811_JACKDET_MODE_JACK); + } + } + } + + /* Report short circuit as a button */ + if (wm8994->jack_mic) { + report = 0; + if (status & WM1811_JACKDET_BTN0) + report |= SND_JACK_BTN_0; + + if (status & WM1811_JACKDET_BTN1) + report |= SND_JACK_BTN_1; + + if (status & WM1811_JACKDET_BTN2) + report |= SND_JACK_BTN_2; + + dev_dbg(wm1811->codec->dev, "Detected Button: %08x (%08X)\n", + report, status); + + snd_soc_jack_report(wm8994->micdet[0].jack, report, + wm8994->btn_mask); + } +} + +#ifdef CONFIG_SND_SAMSUNG_I2S_MASTER +static int set_epll_rate(unsigned long rate) +{ + struct clk *fout_epll; + + fout_epll = clk_get(NULL, "fout_epll"); + if (IS_ERR(fout_epll)) { + printk(KERN_ERR "%s: failed to get fout_epll\n", __func__); + return -ENOENT; + } + + if (rate == clk_get_rate(fout_epll)) + goto out; + + clk_set_rate(fout_epll, rate); +out: + clk_put(fout_epll); + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ + +#ifndef CONFIG_SND_SAMSUNG_I2S_MASTER +static int lungo_wm1811_aif1_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + unsigned int pll_out; + int ret; + + /* AIF1CLK should be >=3MHz for optimal performance */ + if (params_rate(params) == 8000 || params_rate(params) == 11025) + pll_out = params_rate(params) * 512; + else + pll_out = params_rate(params) * 256; + + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; + + /* Set the cpu DAI configuration */ + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; + +#if 0 + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL1, + pll_out, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_OPCLK, + 0, MOD_OPCLK_PCLK); + if (ret < 0) + return ret; +#else + lungo_start_fll1(codec_dai); +#endif + + if (ret < 0) + return ret; + + return 0; +} +#else /* CONFIG_SND_SAMSUNG_I2S_MASTER */ +static int lungo_wm1811_aif1_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + int bfs, psr, rfs, ret; + unsigned long rclk; + + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_U24: + case SNDRV_PCM_FORMAT_S24: + bfs = 48; + break; + case SNDRV_PCM_FORMAT_U16_LE: + case SNDRV_PCM_FORMAT_S16_LE: + bfs = 32; + break; + default: + return -EINVAL; + } + + switch (params_rate(params)) { + case 16000: + case 22050: + case 24000: + case 32000: + case 44100: + case 48000: + case 88200: + case 96000: + if (bfs == 48) + rfs = 384; + else + rfs = 256; + break; + case 64000: + rfs = 384; + break; + case 8000: + case 11025: + case 12000: + if (bfs == 48) + rfs = 768; + else + rfs = 512; + break; + default: + return -EINVAL; + } + + rclk = params_rate(params) * rfs; + + switch (rclk) { + case 4096000: + case 5644800: + case 6144000: + case 8467200: + case 9216000: + psr = 8; + break; + case 8192000: + case 11289600: + case 12288000: + case 16934400: + case 18432000: + psr = 4; + break; + case 22579200: + case 24576000: + case 33868800: + case 36864000: + psr = 2; + break; + case 67737600: + case 73728000: + psr = 1; + break; + default: + printk(KERN_INFO "Not yet supported!\n"); + return -EINVAL; + } + + set_epll_rate(rclk * psr); + + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_MCLK1, + rclk, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_CDCLK, + 0, SND_SOC_CLOCK_OUT); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_clkdiv(cpu_dai, SAMSUNG_I2S_DIV_BCLK, bfs); + if (ret < 0) + return ret; + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ + +/* + * lungo WM1811 DAI operations. + */ +static struct snd_soc_ops lungo_wm1811_aif1_ops = { + .hw_params = lungo_wm1811_aif1_hw_params, +}; + +static int lungo_wm1811_aif2_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + int ret; + int prate; + int bclk; + + prate = params_rate(params); + switch (params_rate(params)) { + case 8000: + case 16000: + break; + default: + dev_warn(codec_dai->dev, "Unsupported LRCLK %d, falling back to 8000Hz\n", + (int)params_rate(params)); + prate = 8000; + } + + /* Set the codec DAI configuration, aif2_mode:0 is slave */ + if (aif2_mode == 0) { + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + } else { + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + } + if (ret < 0) + return ret; + + switch (prate) { + case 8000: + bclk = 256000; + break; + case 16000: + bclk = 512000; + break; + default: + return -EINVAL; + } + if (aif2_mode == 0) { + ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL2, + WM8994_FLL_SRC_BCLK, + bclk, prate * 256); + } else { + lungo_set_mclk(3); /* forced enable MCLK */ + ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL2, + WM8994_FLL_SRC_MCLK1, + 24000000, prate * 256); + } + if (ret < 0) + dev_err(codec_dai->dev, "Unable to configure FLL2: %d\n", ret); + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL2, + prate * 256, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec_dai->dev, "Unable to switch to FLL2: %d\n", ret); + + return 0; +} + +static struct snd_soc_ops lungo_wm1811_aif2_ops = { + .hw_params = lungo_wm1811_aif2_hw_params, +}; + +static int lungo_wm1811_aif3_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + pr_err("%s: enter\n", __func__); + return 0; +} + +static struct snd_soc_ops lungo_wm1811_aif3_ops = { + .hw_params = lungo_wm1811_aif3_hw_params, +}; + +static const struct snd_kcontrol_new lungo_controls[] = { + SOC_DAPM_PIN_SWITCH("HP"), + SOC_DAPM_PIN_SWITCH("SPK"), + SOC_DAPM_PIN_SWITCH("RCV"), + SOC_DAPM_PIN_SWITCH("LINE"), + SOC_DAPM_PIN_SWITCH("HDMI"), + SOC_DAPM_PIN_SWITCH("Main Mic"), + SOC_DAPM_PIN_SWITCH("Headset Mic"), + SOC_ENUM_EXT("AIF2 Mode", aif2_mode_enum[0], + get_aif2_mode, set_aif2_mode), +}; + +const struct snd_soc_dapm_widget lungo_dapm_widgets[] = { + SND_SOC_DAPM_HP("HP", NULL), + SND_SOC_DAPM_SPK("SPK", NULL), + SND_SOC_DAPM_SPK("RCV", NULL), + SND_SOC_DAPM_LINE("LINE", NULL), + SND_SOC_DAPM_LINE("HDMI", NULL), + + SND_SOC_DAPM_MIC("Headset Mic", NULL), +#if defined(CONFIG_SND_SOC_USE_EXTERNAL_MIC_BIAS) + SND_SOC_DAPM_MIC("Main Mic", lungo_ext_micbias), +#else + SND_SOC_DAPM_MIC("Main Mic", NULL), +#endif + SND_SOC_DAPM_MIC("Sub Mic", NULL), + + SND_SOC_DAPM_INPUT("S5P RP"), +}; + +const struct snd_soc_dapm_route lungo_dapm_routes[] = { + { "HP", NULL, "HPOUT1L" }, + { "HP", NULL, "HPOUT1R" }, + + { "SPK", NULL, "SPKOUTLN" }, + { "SPK", NULL, "SPKOUTLP" }, + { "SPK", NULL, "SPKOUTRN" }, + { "SPK", NULL, "SPKOUTRP" }, + + { "RCV", NULL, "HPOUT2N" }, + { "RCV", NULL, "HPOUT2P" }, + + { "LINE", NULL, "LINEOUT2N" }, + { "LINE", NULL, "LINEOUT2P" }, + + { "IN1LP", NULL, "MICBIAS1" }, + { "IN1LN", NULL, "MICBIAS1" }, + { "MICBIAS1", NULL, "Main Mic" }, + + { "IN2LP:VXRN", NULL, "MICBIAS2" }, + { "MICBIAS2", NULL, "Headset Mic" }, + + { "AIF1DAC1L", NULL, "S5P RP" }, + { "AIF1DAC1R", NULL, "S5P RP" }, +}; + +static void wm1811_mic_work(struct work_struct *work) +{ + int report = 0; + struct wm1811_machine_priv *wm1811; + struct snd_soc_codec *codec; + int status; + + wm1811 = container_of(work, struct wm1811_machine_priv, + mic_work.work); + codec = wm1811->codec; + + status = snd_soc_read(codec, WM8958_MIC_DETECT_3); + if (status < 0) { + dev_err(codec->dev, "Failed to read mic detect status: %d\n", + status); + return; + } + + /* If nothing present then clear our statuses */ + if (!(status & WM8958_MICD_STS)) + goto done; + + report = SND_JACK_HEADSET; + + /* Everything else is buttons; just assign slots */ + if (status & WM1811_JACKDET_BTN0) + report |= SND_JACK_BTN_0; + if (status & WM1811_JACKDET_BTN1) + report |= SND_JACK_BTN_1; + if (status & WM1811_JACKDET_BTN2) + report |= SND_JACK_BTN_2; + + if (report & SND_JACK_MICROPHONE) + dev_crit(codec->dev, "Reporting microphone\n"); + if (report & SND_JACK_HEADPHONE) + dev_crit(codec->dev, "Reporting headphone\n"); + if (report & SND_JACK_BTN_0) + dev_crit(codec->dev, "Reporting button 0\n"); + if (report & SND_JACK_BTN_1) + dev_crit(codec->dev, "Reporting button 1\n"); + if (report & SND_JACK_BTN_2) + dev_crit(codec->dev, "Reporting button 2\n"); + +done: + if (!report) + dev_crit(codec->dev, "Reporting open circuit\n"); + + snd_soc_jack_report(&wm1811->jack, report, + SND_JACK_BTN_0 | SND_JACK_BTN_1 | + SND_JACK_BTN_2 | SND_JACK_HEADSET); +} + +static struct snd_soc_dai_driver lungo_ext_dai[] = { + { + .name = "lungo.cp", + .playback = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + .capture = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + }, + { + .name = "lungo.bt", + .playback = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + .capture = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + }, +}; +#ifndef CONFIG_SEC_DEV_JACK +static ssize_t earjack_state_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + + int status; + int report = 0; + + status = snd_soc_read(codec, WM8958_MIC_DETECT_3); + + if (status < 0) { + dev_err(codec->dev, "Failed to read mic detect status: %d\n", + status); + goto done; + } + + /* If nothing present then clear our statuses */ + if (!(status & WM8958_MICD_STS)) + goto done; + + report = 1; + +done: + return sprintf(buf, "%d\n", report); +} + +static ssize_t earjack_state_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + pr_info("%s : operate nothing\n", __func__); + + return size; +} + +static ssize_t earjack_key_state_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + + int status; + int report = 0; + + status = snd_soc_read(codec, WM8958_MIC_DETECT_3); + + if (status < 0) { + dev_err(codec->dev, "Failed to read mic detect status: %d\n", + status); + goto done; + } + + /* If nothing present then clear our statuses */ + if (!(status & WM8958_MICD_STS)) + goto done; + + if (status & WM1811_JACKDET_BTN0) + report = 1; + +done: + return sprintf(buf, "%d\n", report); +} + +static ssize_t earjack_key_state_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + pr_info("%s : operate nothing\n", __func__); + + return size; +} + +static ssize_t earjack_select_jack_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + pr_info("%s : operate nothing\n", __func__); + + return 0; +} + +static ssize_t earjack_select_jack_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + dev_info(codec->dev, "Forced detect microphone\n"); + + wm8994->mic_detecting = false; + wm8994->jack_mic = true; + + lungo_micd_set_rate(codec); + + if ((!size) || (buf[0] != '1')) { + snd_soc_jack_report(wm8994->micdet[0].jack, 0, + SND_JACK_HEADSET); + } + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADSET, + SND_JACK_HEADSET); + + return size; +} + +static DEVICE_ATTR(select_jack, S_IRUGO | S_IWUSR | S_IWGRP, + earjack_select_jack_show, earjack_select_jack_store); + +static DEVICE_ATTR(key_state, S_IRUGO | S_IWUSR | S_IWGRP, + earjack_key_state_show, earjack_key_state_store); + +static DEVICE_ATTR(state, S_IRUGO | S_IWUSR | S_IWGRP, + earjack_state_show, earjack_state_store); +#endif +static int lungo_wm1811_init_paiftx(struct snd_soc_pcm_runtime *rtd) +{ + struct wm1811_machine_priv *wm1811; + struct snd_soc_codec *codec = rtd->codec; + struct snd_soc_dai *aif1_dai = rtd->codec_dai; + struct wm8994 *wm8994 = codec->control_data; + int ret; + +#ifndef MANAGE_MCLK1 + lungo_set_mclk(1); +#endif + + rtd->codec_dai->driver->playback.channels_max = + rtd->cpu_dai->driver->playback.channels_max; + + ret = snd_soc_add_controls(codec, lungo_controls, + ARRAY_SIZE(lungo_controls)); + + ret = snd_soc_dapm_new_controls(&codec->dapm, lungo_dapm_widgets, + ARRAY_SIZE(lungo_dapm_widgets)); + if (ret != 0) + dev_err(codec->dev, "Failed to add DAPM widgets: %d\n", ret); + + ret = snd_soc_dapm_add_routes(&codec->dapm, lungo_dapm_routes, + ARRAY_SIZE(lungo_dapm_routes)); + if (ret != 0) + dev_err(codec->dev, "Failed to add DAPM routes: %d\n", ret); + + ret = snd_soc_dai_set_sysclk(aif1_dai, WM8994_SYSCLK_MCLK2, + 32768, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, "Failed to boot clocking\n"); + + /* Force AIF1CLK on as it will be master for jack detection */ + ret = snd_soc_dapm_force_enable_pin(&codec->dapm, "AIF1CLK"); + if (ret < 0) + dev_err(codec->dev, "Failed to enable AIF1CLK: %d\n", ret); + + ret = snd_soc_dapm_disable_pin(&codec->dapm, "S5P RP"); + if (ret < 0) + dev_err(codec->dev, "Failed to disable S5P RP: %d\n", ret); + + wm1811 = kmalloc(sizeof *wm1811, GFP_KERNEL); + if (!wm1811) { + dev_err(codec->dev, "Failed to allocate memory!"); + return -ENOMEM; + } + + snd_soc_dapm_ignore_suspend(&codec->dapm, "RCV"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "SPK"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "HP"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Headset Mic"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Sub Mic"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Main Mic"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF1DACDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF2DACDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF3DACDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF1ADCDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF2ADCDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF3ADCDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "LINE"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "HDMI"); + + wm1811->codec = codec; + INIT_DELAYED_WORK(&wm1811->mic_work, wm1811_mic_work); + + ret = snd_soc_jack_new(codec, "lungo Jack", + SND_JACK_HEADSET | SND_JACK_BTN_0 | + SND_JACK_BTN_1 | SND_JACK_BTN_2, + &wm1811->jack); + + if (ret < 0) + dev_err(codec->dev, "Failed to create jack: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_0, KEY_MEDIA); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_MEDIA: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_1, + KEY_VOLUMEDOWN); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_VOLUMEUP: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_2, + KEY_VOLUMEUP); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_VOLUMEDOWN: %d\n", ret); + + ret = wm8958_mic_detect(codec, &wm1811->jack, lungo_micdet, wm1811); + if (ret < 0) + dev_err(codec->dev, "Failed start detection: %d\n", ret); + + /* To wakeup for earjack event in suspend mode */ + enable_irq_wake(wm8994->irq); + + wake_lock_init(&wm1811->jackdet_wake_lock, + WAKE_LOCK_SUSPEND, "lungo_jackdet"); + +#ifndef CONFIG_SEC_DEV_JACK + /* To support PBA function test */ + jack_class = class_create(THIS_MODULE, "audio"); + + if (IS_ERR(jack_class)) + pr_err("Failed to create class\n"); + + jack_dev = device_create(jack_class, NULL, 0, codec, "earjack"); + + if (device_create_file(jack_dev, &dev_attr_select_jack) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_select_jack.attr.name); + + if (device_create_file(jack_dev, &dev_attr_key_state) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_key_state.attr.name); + + if (device_create_file(jack_dev, &dev_attr_state) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_state.attr.name); +#endif + return snd_soc_dapm_sync(&codec->dapm); +} + +static struct snd_soc_dai_link lungo_dai[] = { + { /* Sec_Fifo DAI i/f */ + .name = "Sec_FIFO TX", + .stream_name = "Sec_Dai", + .cpu_dai_name = "samsung-i2s.4", + .codec_dai_name = "wm8994-aif1", +#ifndef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER + .platform_name = "samsung-audio-idma", +#else + .platform_name = "samsung-audio", +#endif + .codec_name = "wm8994-codec", + .init = lungo_wm1811_init_paiftx, + .ops = &lungo_wm1811_aif1_ops, + }, + { + .name = "lungo_WM1811 Voice", + .stream_name = "Voice Tx/Rx", + .cpu_dai_name = "lungo.cp", + .codec_dai_name = "wm8994-aif2", + .platform_name = "snd-soc-dummy", + .codec_name = "wm8994-codec", + .ops = &lungo_wm1811_aif2_ops, + .ignore_suspend = 1, + }, + { + .name = "lungo_WM1811 BT", + .stream_name = "BT Tx/Rx", + .cpu_dai_name = "lungo.bt", + .codec_dai_name = "wm8994-aif3", + .platform_name = "snd-soc-dummy", + .codec_name = "wm8994-codec", + .ops = &lungo_wm1811_aif3_ops, + .ignore_suspend = 1, + }, + { /* Primary DAI i/f */ + .name = "WM8994 AIF1", + .stream_name = "Pri_Dai", + .cpu_dai_name = "samsung-i2s.0", + .codec_dai_name = "wm8994-aif1", + .platform_name = "samsung-audio", + .codec_name = "wm8994-codec", + .ops = &lungo_wm1811_aif1_ops, + }, +}; + +static int lungo_card_suspend(struct snd_soc_card *card) +{ + lungo_set_mclk(0); +#if defined(CONFIG_ARCH_EXYNOS4) + exynos4_sys_powerdown_xusbxti_control(xclkout_enabled ? 1 : 0); +#else + exynos5_sys_powerdown_xxti_control(xclkout_enabled ? 1 : 0); +#endif + + return 0; +} + +static int lungo_card_resume(struct snd_soc_card *card) +{ + lungo_set_mclk(1); + + return 0; +} + +static int lungo_set_bias_level(struct snd_soc_card *card, + struct snd_soc_dapm_context *dapm, + enum snd_soc_bias_level level) +{ + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + + if (dapm->dev != aif1_dai->dev) + return 0; + + switch (level) { + case SND_SOC_BIAS_PREPARE: + /* When transitioning to active modes set AIF1 up for + * 44.1kHz so we can always activate AIF1 without reclocking. + */ + lungo_start_fll1(aif1_dai); + break; + + default: + break; + } + + return 0; +} + +static int lungo_set_bias_level_post(struct snd_soc_card *card, + struct snd_soc_dapm_context *dapm, + enum snd_soc_bias_level level) +{ + struct snd_soc_codec *codec = card->rtd->codec; + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + struct snd_soc_dai *aif2_dai = card->rtd[1].codec_dai; + int ret; + + if (dapm->dev != aif1_dai->dev) + return 0; + + switch (level) { + case SND_SOC_BIAS_STANDBY: + /* When going idle stop FLL1 and revert to using MCLK2 + * directly for minimum power consumptin for accessory + * detection. + */ + if (card->dapm.bias_level == SND_SOC_BIAS_PREPARE) { + dev_info(aif1_dai->dev, "Moving to STANDBY\n"); + + ret = snd_soc_dai_set_sysclk(aif2_dai, + WM8994_SYSCLK_MCLK2, + 32768, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, "Failed to switch to MCLK2\n"); + + ret = snd_soc_dai_set_pll(aif2_dai, WM8994_FLL2, + 0, 0, 0); + + if (ret < 0) + dev_err(codec->dev, + "Failed to change FLL2\n"); + + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_MCLK2, + 32768, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, + "Failed to switch to MCLK2\n"); + + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, + 0, 0, 0); + if (ret < 0) + dev_err(codec->dev, + "Failed to stop FLL1\n"); + + lungo_fll1_active = false; + + lungo_micd_set_rate(codec); + lungo_set_mclk(0); + } + break; + default: + break; + } + + card->dapm.bias_level = level; + + return 0; +} + +static struct snd_soc_card lungo = { + .name = "lungo_WM1811", + .dai_link = lungo_dai, + + /* If you want to use sec_fifo device, + * changes the num_link = 2 or ARRAY_SIZE(lungo_dai). */ + .num_links = ARRAY_SIZE(lungo_dai), + + .set_bias_level = lungo_set_bias_level, + .set_bias_level_post = lungo_set_bias_level_post, + + .suspend_post = lungo_card_suspend, + .resume_pre = lungo_card_resume +}; + +static struct platform_device *lungo_snd_device; + +static int __init lungo_audio_init(void) +{ + int ret; + xclkout_enabled = false; + lungo_snd_device = platform_device_alloc("soc-audio", -1); + if (!lungo_snd_device) + return -ENOMEM; + + ret = snd_soc_register_dais(&lungo_snd_device->dev, + lungo_ext_dai, ARRAY_SIZE(lungo_ext_dai)); + if (ret != 0) + pr_err("Failed to register external DAIs: %d\n", ret); + + platform_set_drvdata(lungo_snd_device, &lungo); + + ret = platform_device_add(lungo_snd_device); + if (ret) + platform_device_put(lungo_snd_device); +#if defined(CONFIG_SND_SOC_USE_EXTERNAL_MIC_BIAS) + lungo_gpio_init(); +#endif + return ret; +} +module_init(lungo_audio_init); + +static void __exit lungo_audio_exit(void) +{ + platform_device_unregister(lungo_snd_device); +} +module_exit(lungo_audio_exit); + +MODULE_AUTHOR("JS. Park <aitdark.park@samsung.com>"); +MODULE_DESCRIPTION("ALSA SoC Lungo WM1811"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/midas_wm1811.c b/sound/soc/samsung/midas_wm1811.c new file mode 100644 index 0000000..dd8a43a --- /dev/null +++ b/sound/soc/samsung/midas_wm1811.c @@ -0,0 +1,1629 @@ +/* + * midas_wm1811.c + * + * Copyright (c) 2011 Samsung Electronics Co. Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ +#include <linux/platform_device.h> +#include <linux/clk.h> +#include <linux/io.h> +#include <linux/gpio.h> +#include <linux/delay.h> +#include <linux/slab.h> +#include <linux/workqueue.h> +#include <linux/input.h> +#include <linux/wakelock.h> +#include <linux/suspend.h> + +#include <sound/soc.h> +#include <sound/soc-dapm.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> +#include <sound/jack.h> + +#include <mach/regs-clock.h> +#include <mach/pmu.h> +#include <mach/midas-sound.h> + +#include <linux/mfd/wm8994/core.h> +#include <linux/mfd/wm8994/registers.h> +#include <linux/mfd/wm8994/pdata.h> + +#if defined(CONFIG_SND_USE_MUIC_SWITCH) +#include <linux/mfd/max77693-private.h> +#endif + + +#include "i2s.h" +#include "s3c-i2s-v2.h" +#include "../codecs/wm8994.h" + + +#define MIDAS_DEFAULT_MCLK1 24000000 +#define MIDAS_DEFAULT_MCLK2 32768 +#define MIDAS_DEFAULT_SYNC_CLK 11289600 + +#define WM1811_JACKDET_MODE_NONE 0x0000 +#define WM1811_JACKDET_MODE_JACK 0x0100 +#define WM1811_JACKDET_MODE_MIC 0x0080 +#define WM1811_JACKDET_MODE_AUDIO 0x0180 + +#define WM1811_JACKDET_BTN0 0x04 +#define WM1811_JACKDET_BTN1 0x10 +#define WM1811_JACKDET_BTN2 0x08 + + +static struct wm8958_micd_rate midas_det_rates[] = { + { MIDAS_DEFAULT_MCLK2, true, 0, 0 }, + { MIDAS_DEFAULT_MCLK2, false, 0, 0 }, + { MIDAS_DEFAULT_SYNC_CLK, true, 7, 7 }, + { MIDAS_DEFAULT_SYNC_CLK, false, 7, 7 }, +}; + +static struct wm8958_micd_rate midas_jackdet_rates[] = { + { MIDAS_DEFAULT_MCLK2, true, 0, 0 }, + { MIDAS_DEFAULT_MCLK2, false, 0, 0 }, + { MIDAS_DEFAULT_SYNC_CLK, true, 12, 12 }, + { MIDAS_DEFAULT_SYNC_CLK, false, 7, 8 }, +}; + +static int aif2_mode; +const char *aif2_mode_text[] = { + "Slave", "Master" +}; + +static int kpcs_mode = 1; +const char *kpcs_mode_text[] = { + "Off", "On" +}; + +static int input_clamp; +const char *input_clamp_text[] = { + "Off", "On" +}; + +static int lineout_mode; +const char *lineout_mode_text[] = { + "Off", "On" +}; + +#ifndef CONFIG_SEC_DEV_JACK +/* To support PBA function test */ +static struct class *jack_class; +static struct device *jack_dev; +#endif + +#ifdef SND_USE_BIAS_LEVEL +static bool midas_fll1_active; +struct snd_soc_dai *midas_aif1_dai; +#endif + +struct wm1811_machine_priv { + struct snd_soc_jack jack; + struct snd_soc_codec *codec; + struct delayed_work mic_work; + struct wake_lock jackdet_wake_lock; +}; + + +static void midas_gpio_init(void) +{ + int err; +#ifdef CONFIG_SND_SOC_USE_EXTERNAL_MIC_BIAS + /* Main Microphone BIAS */ + err = gpio_request(GPIO_MIC_BIAS_EN, "MAIN MIC"); + if (err) { + pr_err(KERN_ERR "MIC_BIAS_EN GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_MIC_BIAS_EN, 1); + gpio_set_value(GPIO_MIC_BIAS_EN, 0); + gpio_free(GPIO_MIC_BIAS_EN); +#endif + +#ifdef CONFIG_SND_USE_SUB_MIC + /* Sub Microphone BIAS */ + err = gpio_request(GPIO_SUB_MIC_BIAS_EN, "SUB MIC"); + if (err) { + pr_err(KERN_ERR "SUB_MIC_BIAS_EN GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_SUB_MIC_BIAS_EN, 1); + gpio_set_value(GPIO_SUB_MIC_BIAS_EN, 0); + gpio_free(GPIO_SUB_MIC_BIAS_EN); +#endif + +#ifdef CONFIG_SND_USE_THIRD_MIC + /* Third Microphone BIAS */ + err = gpio_request(GPIO_THIRD_MIC_BIAS_EN, "THIRD MIC"); + if (err) { + pr_err(KERN_ERR "THIRD_MIC_BIAS_EN GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_THIRD_MIC_BIAS_EN, 1); + gpio_set_value(GPIO_THIRD_MIC_BIAS_EN, 0); + gpio_free(GPIO_THIRD_MIC_BIAS_EN); +#endif + +#ifdef CONFIG_FM_RADIO + /* FM/Third Mic GPIO */ + err = gpio_request(GPIO_FM_MIC_SW, "GPL0"); + if (err) { + pr_err(KERN_ERR "FM/THIRD_MIC Switch GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_FM_MIC_SW, 1); + gpio_set_value(GPIO_FM_MIC_SW, 0); + gpio_free(GPIO_FM_MIC_SW); +#endif + +#ifdef CONFIG_SND_USE_LINEOUT_SWITCH + err = gpio_request(GPIO_LINEOUT_EN, "LINEOUT_EN"); + if (err) { + pr_err(KERN_ERR "LINEOUT_EN GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_LINEOUT_EN, 1); + gpio_set_value(GPIO_LINEOUT_EN, 0); + gpio_free(GPIO_LINEOUT_EN); +#endif +} + +static const struct soc_enum lineout_mode_enum[] = { + SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lineout_mode_text), lineout_mode_text), +}; + +static int get_lineout_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = lineout_mode; + return 0; +} + +static int set_lineout_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); + + lineout_mode = ucontrol->value.integer.value[0]; + +#ifdef CONFIG_SND_USE_LINEOUT_SWITCH + if (lineout_mode) { + wm8994_vmid_mode(codec, WM8994_VMID_FORCE); + gpio_set_value(GPIO_LINEOUT_EN, 1); + } else { + wm8994_vmid_mode(codec, WM8994_VMID_NORMAL); + gpio_set_value(GPIO_LINEOUT_EN, 0); + } +#endif + dev_dbg(codec->dev, "set lineout mode : %s\n", + lineout_mode_text[lineout_mode]); + return 0; + +} +static const struct soc_enum aif2_mode_enum[] = { + SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aif2_mode_text), aif2_mode_text), +}; + +static const struct soc_enum kpcs_mode_enum[] = { + SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(kpcs_mode_text), kpcs_mode_text), +}; + +static const struct soc_enum input_clamp_enum[] = { + SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(input_clamp_text), input_clamp_text), +}; + +static int get_aif2_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = aif2_mode; + return 0; +} + +static int set_aif2_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + if (aif2_mode == ucontrol->value.integer.value[0]) + return 0; + + aif2_mode = ucontrol->value.integer.value[0]; + + pr_info("set aif2 mode : %s\n", aif2_mode_text[aif2_mode]); + + return 0; +} + +static int get_kpcs_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = kpcs_mode; + return 0; +} + +static int set_kpcs_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + + kpcs_mode = ucontrol->value.integer.value[0]; + + pr_info("set kpcs mode : %s\n", kpcs_mode_text[kpcs_mode]); + + return 0; +} + +static int get_input_clamp(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = input_clamp; + return 0; +} + +static int set_input_clamp(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); + + input_clamp = ucontrol->value.integer.value[0]; + + if (input_clamp) { + snd_soc_update_bits(codec, WM8994_INPUT_MIXER_1, + WM8994_INPUTS_CLAMP, WM8994_INPUTS_CLAMP); + msleep(100); + } else { + snd_soc_update_bits(codec, WM8994_INPUT_MIXER_1, + WM8994_INPUTS_CLAMP, 0); + } + pr_info("set fm input_clamp : %s\n", input_clamp_text[input_clamp]); + + return 0; +} + + +static int midas_ext_micbias(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + + dev_dbg(codec->dev, "%s event is %02X", w->name, event); + +#ifdef CONFIG_SND_SOC_USE_EXTERNAL_MIC_BIAS + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + gpio_set_value(GPIO_MIC_BIAS_EN, 1); + msleep(150); + break; + case SND_SOC_DAPM_POST_PMD: + gpio_set_value(GPIO_MIC_BIAS_EN, 0); + break; + } +#endif + return 0; +} + +static int midas_ext_submicbias(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + + dev_dbg(codec->dev, "%s event is %02X", w->name, event); + +#ifdef CONFIG_SND_USE_SUB_MIC + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + gpio_set_value(GPIO_SUB_MIC_BIAS_EN, 1); + msleep(150); + break; + case SND_SOC_DAPM_POST_PMD: + gpio_set_value(GPIO_SUB_MIC_BIAS_EN, 0); + break; + } +#endif + return 0; +} + +static int midas_ext_thirdmicbias(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + + dev_dbg(codec->dev, "%s event is %02X", w->name, event); + +#ifdef CONFIG_SND_USE_THIRD_MIC + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + gpio_set_value(GPIO_THIRD_MIC_BIAS_EN, 1); + break; + case SND_SOC_DAPM_POST_PMD: + gpio_set_value(GPIO_THIRD_MIC_BIAS_EN, 0); + break; + } +#endif + return 0; +} + +/* + * midas_ext_spkmode : + * For phone device have 1 external speaker + * should mix LR data in a speaker mixer (mono setting) + */ +static int midas_ext_spkmode(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + int ret = 0; +#ifndef CONFIG_SND_USE_STEREO_SPEAKER + struct snd_soc_codec *codec = w->codec; + + ret = snd_soc_update_bits(codec, WM8994_SPKOUT_MIXERS, + WM8994_SPKMIXR_TO_SPKOUTL_MASK, + WM8994_SPKMIXR_TO_SPKOUTL); +#endif + return ret; +} + +static int midas_lineout_switch(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + + dev_dbg(codec->dev, "%s event is %02X", w->name, event); + +#if defined(CONFIG_SND_USE_MUIC_SWITCH) + switch (event) { + case SND_SOC_DAPM_POST_PMU: + msleep(50); + max77693_muic_set_audio_switch(1); + break; + case SND_SOC_DAPM_PRE_PMD: + max77693_muic_set_audio_switch(0); + break; + } +#endif + + return 0; +} + +static void midas_micd_set_rate(struct snd_soc_codec *codec) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + int best, i, sysclk, val; + bool idle; + const struct wm8958_micd_rate *rates = NULL; + int num_rates = 0; + + idle = !wm8994->jack_mic; + + sysclk = snd_soc_read(codec, WM8994_CLOCKING_1); + if (sysclk & WM8994_SYSCLK_SRC) + sysclk = wm8994->aifclk[1]; + else + sysclk = wm8994->aifclk[0]; + + if (wm8994->jackdet) { + rates = midas_jackdet_rates; + num_rates = ARRAY_SIZE(midas_jackdet_rates); + wm8994->pdata->micd_rates = midas_jackdet_rates; + wm8994->pdata->num_micd_rates = num_rates; + } else { + rates = midas_det_rates; + num_rates = ARRAY_SIZE(midas_det_rates); + wm8994->pdata->micd_rates = midas_det_rates; + wm8994->pdata->num_micd_rates = num_rates; + } + + best = 0; + for (i = 0; i < num_rates; i++) { + if (rates[i].idle != idle) + continue; + if (abs(rates[i].sysclk - sysclk) < + abs(rates[best].sysclk - sysclk)) + best = i; + else if (rates[best].idle != idle) + best = i; + } + + val = rates[best].start << WM8958_MICD_BIAS_STARTTIME_SHIFT + | rates[best].rate << WM8958_MICD_RATE_SHIFT; + + snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, + WM8958_MICD_BIAS_STARTTIME_MASK | + WM8958_MICD_RATE_MASK, val); +} + +#ifdef SND_USE_BIAS_LEVEL +static void midas_start_fll1(struct snd_soc_dai *aif1_dai) +{ + int ret; + if (midas_fll1_active) + return; + + dev_info(aif1_dai->dev, "Moving to audio clocking settings\n"); + + /* Switch AIF1 to MCLK2 while we bring stuff up */ + ret = snd_soc_dai_set_sysclk(aif1_dai, WM8994_SYSCLK_MCLK2, + MIDAS_DEFAULT_MCLK2, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to switch to MCLK2: %d\n", ret); + + /* Start the 24MHz clock to provide a high frequency reference to + * provide a high frequency reference for the FLL, giving improved + * performance. + */ + midas_snd_set_mclk(true, true); + + /* Switch the FLL */ + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, + WM8994_FLL_SRC_MCLK1, MIDAS_DEFAULT_MCLK1, + MIDAS_DEFAULT_SYNC_CLK); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to start FLL1: %d\n", ret); + + /* Then switch AIF1CLK to it */ + ret = snd_soc_dai_set_sysclk(aif1_dai, WM8994_SYSCLK_FLL1, + MIDAS_DEFAULT_SYNC_CLK, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to switch to FLL1: %d\n", ret); + + midas_fll1_active = true; +} +#endif + +static void midas_micdet(u16 status, void *data) +{ + struct wm1811_machine_priv *wm1811 = data; + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(wm1811->codec); + int report; + + + wake_lock_timeout(&wm1811->jackdet_wake_lock, 5 * HZ); + + /* Either nothing present or just starting detection */ + if (!(status & WM8958_MICD_STS)) { + if (!wm8994->jackdet) { + /* If nothing present then clear our statuses */ + dev_dbg(wm1811->codec->dev, "Detected open circuit\n"); + wm8994->jack_mic = false; + wm8994->mic_detecting = true; + + midas_micd_set_rate(wm1811->codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, 0, + wm8994->btn_mask | + SND_JACK_HEADSET); + } + /*ToDo*/ + /*return;*/ + } + + /* If the measurement is showing a high impedence we've got a + * microphone. + */ + if (wm8994->mic_detecting && (status & 0x400)) { + dev_info(wm1811->codec->dev, "Detected microphone\n"); + + wm8994->mic_detecting = false; + wm8994->jack_mic = true; + + midas_micd_set_rate(wm1811->codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADSET, + SND_JACK_HEADSET); + } + + if (wm8994->mic_detecting && status & 0x4) { + dev_info(wm1811->codec->dev, "Detected headphone\n"); + wm8994->mic_detecting = false; + + midas_micd_set_rate(wm1811->codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADPHONE, + SND_JACK_HEADSET); + + /* If we have jackdet that will detect removal */ + if (wm8994->jackdet) { + mutex_lock(&wm8994->accdet_lock); + + snd_soc_update_bits(wm1811->codec, WM8958_MIC_DETECT_1, + WM8958_MICD_ENA, 0); + + if (wm8994->active_refcount) { + snd_soc_update_bits(wm1811->codec, + WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + WM1811_JACKDET_MODE_AUDIO); + } + + mutex_unlock(&wm8994->accdet_lock); + + if (wm8994->pdata->jd_ext_cap) { + mutex_lock(&wm1811->codec->mutex); + snd_soc_dapm_disable_pin(&wm1811->codec->dapm, + "MICBIAS2"); + snd_soc_dapm_sync(&wm1811->codec->dapm); + mutex_unlock(&wm1811->codec->mutex); + } + } + } + + /* Report short circuit as a button */ + if (wm8994->jack_mic) { + report = 0; + if (status & WM1811_JACKDET_BTN0) + report |= SND_JACK_BTN_0; + + if (status & WM1811_JACKDET_BTN1) + report |= SND_JACK_BTN_1; + + if (status & WM1811_JACKDET_BTN2) + report |= SND_JACK_BTN_2; + + dev_dbg(wm1811->codec->dev, "Detected Button: %08x (%08X)\n", + report, status); + + snd_soc_jack_report(wm8994->micdet[0].jack, report, + wm8994->btn_mask); + } +} + +#ifdef CONFIG_SND_SAMSUNG_I2S_MASTER +static int set_epll_rate(unsigned long rate) +{ + struct clk *fout_epll; + + fout_epll = clk_get(NULL, "fout_epll"); + if (IS_ERR(fout_epll)) { + printk(KERN_ERR "%s: failed to get fout_epll\n", __func__); + return -ENOENT; + } + + if (rate == clk_get_rate(fout_epll)) + goto out; + + clk_set_rate(fout_epll, rate); +out: + clk_put(fout_epll); + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ + +#ifndef CONFIG_SND_SAMSUNG_I2S_MASTER +static int midas_wm1811_aif1_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + unsigned int pll_out; + int ret; + + dev_info(codec_dai->dev, "%s ++\n", __func__); + /* AIF1CLK should be >=3MHz for optimal performance */ + if (params_rate(params) == 8000 || params_rate(params) == 11025) + pll_out = params_rate(params) * 512; + else + pll_out = params_rate(params) * 256; + + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; + + /* Set the cpu DAI configuration */ + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; + +#ifndef SND_USE_BIAS_LEVEL + /* Switch the FLL */ + ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL1, + WM8994_FLL_SRC_MCLK1, MIDAS_DEFAULT_MCLK1, + pll_out); + if (ret < 0) + dev_err(codec_dai->dev, "Unable to start FLL1: %d\n", ret); + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL1, + pll_out, SND_SOC_CLOCK_IN); + if (ret < 0) { + dev_err(codec_dai->dev, "Unable to switch to FLL1: %d\n", ret); + return ret; + } + + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_OPCLK, + 0, MOD_OPCLK_PCLK); + if (ret < 0) + return ret; +#else + midas_start_fll1(codec_dai); +#endif + + if (ret < 0) + return ret; + + dev_info(codec_dai->dev, "%s --\n", __func__); + + return 0; +} +#else /* CONFIG_SND_SAMSUNG_I2S_MASTER */ +static int midas_wm1811_aif1_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + int bfs, psr, rfs, ret; + unsigned long rclk; + + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_U24: + case SNDRV_PCM_FORMAT_S24: + bfs = 48; + break; + case SNDRV_PCM_FORMAT_U16_LE: + case SNDRV_PCM_FORMAT_S16_LE: + bfs = 32; + break; + default: + return -EINVAL; + } + + switch (params_rate(params)) { + case 16000: + case 22050: + case 24000: + case 32000: + case 44100: + case 48000: + case 88200: + case 96000: + if (bfs == 48) + rfs = 384; + else + rfs = 256; + break; + case 64000: + rfs = 384; + break; + case 8000: + case 11025: + case 12000: + if (bfs == 48) + rfs = 768; + else + rfs = 512; + break; + default: + return -EINVAL; + } + + rclk = params_rate(params) * rfs; + + switch (rclk) { + case 4096000: + case 5644800: + case 6144000: + case 8467200: + case 9216000: + psr = 8; + break; + case 8192000: + case 11289600: + case 12288000: + case 16934400: + case 18432000: + psr = 4; + break; + case 22579200: + case 24576000: + case 33868800: + case 36864000: + psr = 2; + break; + case 67737600: + case 73728000: + psr = 1; + break; + default: + printk(KERN_INFO "Not yet supported!\n"); + return -EINVAL; + } + + set_epll_rate(rclk * psr); + + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_MCLK1, + rclk, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_CDCLK, + 0, SND_SOC_CLOCK_OUT); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_clkdiv(cpu_dai, SAMSUNG_I2S_DIV_BCLK, bfs); + if (ret < 0) + return ret; + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ + +/* + * Midas WM1811 DAI operations. + */ +static struct snd_soc_ops midas_wm1811_aif1_ops = { + .hw_params = midas_wm1811_aif1_hw_params, +}; + +static int midas_wm1811_aif2_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + int ret; + int prate; + int bclk; + + dev_info(codec_dai->dev, "%s ++\n", __func__); + prate = params_rate(params); + switch (params_rate(params)) { + case 8000: + case 16000: + break; + default: + dev_warn(codec_dai->dev, "Unsupported LRCLK %d, falling back to 8000Hz\n", + (int)params_rate(params)); + prate = 8000; + } + +#if defined(CONFIG_LTE_MODEM_CMC221) || defined(CONFIG_MACH_M0_CTC) +#if defined(CONFIG_MACH_C1_KOR_LGT) || defined(CONFIG_MACH_C1VZW) + /* Set the codec DAI configuration */ + if (aif2_mode == 0) { + if (kpcs_mode == 1) + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + else + ret = snd_soc_dai_set_fmt(codec_dai, + SND_SOC_DAIFMT_DSP_A + | SND_SOC_DAIFMT_IB_NF + | SND_SOC_DAIFMT_CBS_CFS); + } else + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); +#else + if (aif2_mode == 0) + /* Set the codec DAI configuration */ + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A + | SND_SOC_DAIFMT_IB_NF + | SND_SOC_DAIFMT_CBS_CFS); + else + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A + | SND_SOC_DAIFMT_IB_NF + | SND_SOC_DAIFMT_CBM_CFM); +#endif +#else + /* Set the codec DAI configuration, aif2_mode:0 is slave */ + if (aif2_mode == 0) + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + else + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); +#endif + + if (ret < 0) + return ret; + +#if defined(CONFIG_LTE_MODEM_CMC221) || defined(CONFIG_MACH_M0_CTC) + if (kpcs_mode == 1) { + switch (prate) { + case 8000: + bclk = 256000; + break; + case 16000: + bclk = 512000; + break; + default: + return -EINVAL; + } + } else { + bclk = 2048000; + } +#else + switch (prate) { + case 8000: + bclk = 256000; + break; + case 16000: + bclk = 512000; + break; + default: + return -EINVAL; + } +#endif + +#ifdef SND_USE_BIAS_LEVEL + if (!midas_fll1_active) + midas_start_fll1(midas_aif1_dai); +#endif + + if (aif2_mode == 0) { + ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL2, + WM8994_FLL_SRC_BCLK, + bclk, prate * 256); + } else { + ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL2, + WM8994_FLL_SRC_MCLK1, + MIDAS_DEFAULT_MCLK1, prate * 256); + } + + if (ret < 0) + dev_err(codec_dai->dev, "Unable to configure FLL2: %d\n", ret); + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL2, + prate * 256, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec_dai->dev, "Unable to switch to FLL2: %d\n", ret); + + dev_info(codec_dai->dev, "%s --\n", __func__); + return 0; +} + +static struct snd_soc_ops midas_wm1811_aif2_ops = { + .hw_params = midas_wm1811_aif2_hw_params, +}; + +static int midas_wm1811_aif3_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + pr_err("%s: enter\n", __func__); + return 0; +} + +static struct snd_soc_ops midas_wm1811_aif3_ops = { + .hw_params = midas_wm1811_aif3_hw_params, +}; + +static const struct snd_kcontrol_new midas_controls[] = { + SOC_DAPM_PIN_SWITCH("HP"), + SOC_DAPM_PIN_SWITCH("SPK"), + SOC_DAPM_PIN_SWITCH("RCV"), + SOC_DAPM_PIN_SWITCH("FM In"), + SOC_DAPM_PIN_SWITCH("LINE"), + SOC_DAPM_PIN_SWITCH("HDMI"), + SOC_DAPM_PIN_SWITCH("Main Mic"), + SOC_DAPM_PIN_SWITCH("Sub Mic"), + SOC_DAPM_PIN_SWITCH("Third Mic"), + SOC_DAPM_PIN_SWITCH("Headset Mic"), + + SOC_ENUM_EXT("AIF2 Mode", aif2_mode_enum[0], + get_aif2_mode, set_aif2_mode), + + SOC_ENUM_EXT("KPCS Mode", kpcs_mode_enum[0], + get_kpcs_mode, set_kpcs_mode), + + SOC_ENUM_EXT("Input Clamp", input_clamp_enum[0], + get_input_clamp, set_input_clamp), + + SOC_ENUM_EXT("LineoutSwitch Mode", lineout_mode_enum[0], + get_lineout_mode, set_lineout_mode), + +}; + +const struct snd_soc_dapm_widget midas_dapm_widgets[] = { + SND_SOC_DAPM_HP("HP", NULL), + SND_SOC_DAPM_SPK("SPK", midas_ext_spkmode), + SND_SOC_DAPM_SPK("RCV", NULL), + SND_SOC_DAPM_LINE("LINE", midas_lineout_switch), + SND_SOC_DAPM_LINE("HDMI", NULL), + + SND_SOC_DAPM_MIC("Headset Mic", NULL), + SND_SOC_DAPM_MIC("Main Mic", midas_ext_micbias), + SND_SOC_DAPM_MIC("Sub Mic", midas_ext_submicbias), + SND_SOC_DAPM_MIC("Third Mic", midas_ext_thirdmicbias), + SND_SOC_DAPM_LINE("FM In", NULL), + + SND_SOC_DAPM_INPUT("S5P RP"), +}; + +const struct snd_soc_dapm_route midas_dapm_routes[] = { + { "HP", NULL, "HPOUT1L" }, + { "HP", NULL, "HPOUT1R" }, + + { "SPK", NULL, "SPKOUTLN" }, + { "SPK", NULL, "SPKOUTLP" }, + { "SPK", NULL, "SPKOUTRN" }, + { "SPK", NULL, "SPKOUTRP" }, + + { "RCV", NULL, "HPOUT2N" }, + { "RCV", NULL, "HPOUT2P" }, + + { "LINE", NULL, "LINEOUT2N" }, + { "LINE", NULL, "LINEOUT2P" }, + + { "HDMI", NULL, "LINEOUT1N" }, + { "HDMI", NULL, "LINEOUT1P" }, + + { "IN1LP", NULL, "MICBIAS1" }, + { "IN1LN", NULL, "MICBIAS1" }, + { "MICBIAS1", NULL, "Main Mic" }, + + { "IN1RP", NULL, "Sub Mic" }, + { "IN1RN", NULL, "Sub Mic" }, + + { "IN2LP:VXRN", NULL, "MICBIAS2" }, + { "MICBIAS2", NULL, "Headset Mic" }, + + { "AIF1DAC1L", NULL, "S5P RP" }, + { "AIF1DAC1R", NULL, "S5P RP" }, + + { "IN2RN", NULL, "FM In" }, + { "IN2RP:VXRP", NULL, "FM In" }, + + { "IN2RN", NULL, "Third Mic" }, + { "IN2RP:VXRP", NULL, "Third Mic" }, +}; + +static struct snd_soc_dai_driver midas_ext_dai[] = { + { + .name = "midas.cp", + .playback = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + .capture = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + }, + { + .name = "midas.bt", + .playback = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + .capture = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + }, +}; + +#ifndef CONFIG_SEC_DEV_JACK +static ssize_t earjack_state_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + int report = 0; + + if ((wm8994->micdet[0].jack->status & SND_JACK_HEADPHONE) || + (wm8994->micdet[0].jack->status & SND_JACK_HEADSET)) { + report = 1; + } + + return sprintf(buf, "%d\n", report); +} + +static ssize_t earjack_state_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + pr_info("%s : operate nothing\n", __func__); + + return size; +} + +static ssize_t earjack_key_state_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + int report = 0; + + if (wm8994->micdet[0].jack->status & SND_JACK_BTN_0) + report = 1; + + return sprintf(buf, "%d\n", report); +} + +static ssize_t earjack_key_state_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + pr_info("%s : operate nothing\n", __func__); + + return size; +} + +static ssize_t earjack_select_jack_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + pr_info("%s : operate nothing\n", __func__); + + return 0; +} + +static ssize_t earjack_select_jack_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + wm8994->mic_detecting = false; + wm8994->jack_mic = true; + + midas_micd_set_rate(codec); + + if ((!size) || (buf[0] != '1')) { + snd_soc_jack_report(wm8994->micdet[0].jack, + 0, SND_JACK_HEADSET); + dev_info(codec->dev, "Forced remove microphone\n"); + } else { + + snd_soc_jack_report(wm8994->micdet[0].jack, + SND_JACK_HEADSET, SND_JACK_HEADSET); + dev_info(codec->dev, "Forced detect microphone\n"); + } + + return size; +} + +static ssize_t reselect_jack_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + pr_info("%s : operate nothing\n", __func__); + return 0; +} + +static ssize_t reselect_jack_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + int reg = 0; + + reg = snd_soc_read(codec, WM8958_MIC_DETECT_3); + if (reg == 0x402) { + dev_info(codec->dev, "Detected open circuit\n"); + + snd_soc_update_bits(codec, WM8958_MICBIAS2, + WM8958_MICB2_DISCH, WM8958_MICB2_DISCH); + /* Enable debounce while removed */ + snd_soc_update_bits(codec, WM1811_JACKDET_CTRL, + WM1811_JACKDET_DB, WM1811_JACKDET_DB); + + wm8994->mic_detecting = false; + wm8994->jack_mic = false; + snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, + WM8958_MICD_ENA, 0); + + if (wm8994->active_refcount) { + snd_soc_update_bits(codec, + WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + WM1811_JACKDET_MODE_AUDIO); + } else { + snd_soc_update_bits(codec, + WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + WM1811_JACKDET_MODE_JACK); + } + + snd_soc_jack_report(wm8994->micdet[0].jack, 0, + SND_JACK_MECHANICAL | SND_JACK_HEADSET | + wm8994->btn_mask); + } + return size; +} + +static DEVICE_ATTR(reselect_jack, S_IRUGO | S_IWUSR | S_IWGRP, + reselect_jack_show, reselect_jack_store); + +static DEVICE_ATTR(select_jack, S_IRUGO | S_IWUSR | S_IWGRP, + earjack_select_jack_show, earjack_select_jack_store); + +static DEVICE_ATTR(key_state, S_IRUGO | S_IWUSR | S_IWGRP, + earjack_key_state_show, earjack_key_state_store); + +static DEVICE_ATTR(state, S_IRUGO | S_IWUSR | S_IWGRP, + earjack_state_show, earjack_state_store); +#endif + +static int midas_wm1811_init_paiftx(struct snd_soc_pcm_runtime *rtd) +{ + + struct wm1811_machine_priv *wm1811; + struct snd_soc_codec *codec = rtd->codec; + struct snd_soc_dai *aif1_dai = rtd->codec_dai; + struct wm8994 *control = codec->control_data; + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + int ret; + +#ifdef SND_USE_BIAS_LEVEL + midas_aif1_dai = aif1_dai; +#endif + + midas_snd_set_mclk(true, false); + + rtd->codec_dai->driver->playback.channels_max = + rtd->cpu_dai->driver->playback.channels_max; + + ret = snd_soc_add_controls(codec, midas_controls, + ARRAY_SIZE(midas_controls)); + + ret = snd_soc_dapm_new_controls(&codec->dapm, midas_dapm_widgets, + ARRAY_SIZE(midas_dapm_widgets)); + if (ret != 0) + dev_err(codec->dev, "Failed to add DAPM widgets: %d\n", ret); + + ret = snd_soc_dapm_add_routes(&codec->dapm, midas_dapm_routes, + ARRAY_SIZE(midas_dapm_routes)); + if (ret != 0) + dev_err(codec->dev, "Failed to add DAPM routes: %d\n", ret); + + ret = snd_soc_dai_set_sysclk(aif1_dai, WM8994_SYSCLK_MCLK2, + MIDAS_DEFAULT_MCLK2, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, "Failed to boot clocking\n"); +#ifndef CONFIG_SEC_DEV_JACK + /* Force AIF1CLK on as it will be master for jack detection */ + if (wm8994->revision > 1) { + ret = snd_soc_dapm_force_enable_pin(&codec->dapm, "AIF1CLK"); + if (ret < 0) + dev_err(codec->dev, "Failed to enable AIF1CLK: %d\n", + ret); + } +#endif + ret = snd_soc_dapm_disable_pin(&codec->dapm, "S5P RP"); + if (ret < 0) + dev_err(codec->dev, "Failed to disable S5P RP: %d\n", ret); + + wm1811 = kmalloc(sizeof *wm1811, GFP_KERNEL); + if (!wm1811) { + dev_err(codec->dev, "Failed to allocate memory!"); + return -ENOMEM; + } + + snd_soc_dapm_ignore_suspend(&codec->dapm, "RCV"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "SPK"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "HP"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Headset Mic"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Sub Mic"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Main Mic"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF1DACDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF2DACDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF3DACDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF1ADCDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF2ADCDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF3ADCDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "FM In"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "LINE"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "HDMI"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Third Mic"); + + wm1811->codec = codec; + + midas_micd_set_rate(codec); + +#ifdef CONFIG_SEC_DEV_JACK + /* By default use idle_bias_off, will override for WM8994 */ + codec->dapm.idle_bias_off = 0; +#else /* CONFIG_SEC_DEV_JACK */ + wm1811->jack.status = 0; + + ret = snd_soc_jack_new(codec, "Midas Jack", + SND_JACK_HEADSET | SND_JACK_BTN_0 | + SND_JACK_BTN_1 | SND_JACK_BTN_2, + &wm1811->jack); + + if (ret < 0) + dev_err(codec->dev, "Failed to create jack: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_0, KEY_MEDIA); + + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_MEDIA: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_1, + KEY_VOLUMEDOWN); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_VOLUMEUP: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_2, + KEY_VOLUMEUP); + + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_VOLUMEDOWN: %d\n", ret); + + if (wm8994->revision > 1) { + dev_info(codec->dev, "wm1811: Rev %c support mic detection\n", + 'A' + wm8994->revision); + ret = wm8958_mic_detect(codec, &wm1811->jack, midas_micdet, + wm1811); + + if (ret < 0) + dev_err(codec->dev, "Failed start detection: %d\n", + ret); + } else { + dev_info(codec->dev, "wm1811: Rev %c doesn't support mic detection\n", + 'A' + wm8994->revision); + codec->dapm.idle_bias_off = 0; + } + /* To wakeup for earjack event in suspend mode */ + enable_irq_wake(control->irq); + + wake_lock_init(&wm1811->jackdet_wake_lock, + WAKE_LOCK_SUSPEND, "midas_jackdet"); + + /* To support PBA function test */ + jack_class = class_create(THIS_MODULE, "audio"); + + if (IS_ERR(jack_class)) + pr_err("Failed to create class\n"); + + jack_dev = device_create(jack_class, NULL, 0, codec, "earjack"); + + if (device_create_file(jack_dev, &dev_attr_select_jack) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_select_jack.attr.name); + + if (device_create_file(jack_dev, &dev_attr_key_state) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_key_state.attr.name); + + if (device_create_file(jack_dev, &dev_attr_state) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_state.attr.name); + + if (device_create_file(jack_dev, &dev_attr_reselect_jack) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_reselect_jack.attr.name); + +#endif /* CONFIG_SEC_DEV_JACK */ + return snd_soc_dapm_sync(&codec->dapm); +} + +static struct snd_soc_dai_link midas_dai[] = { + { /* Sec_Fifo DAI i/f */ + .name = "Sec_FIFO TX", + .stream_name = "Sec_Dai", + .cpu_dai_name = "samsung-i2s.4", + .codec_dai_name = "wm8994-aif1", +#ifndef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER + .platform_name = "samsung-audio-idma", +#else + .platform_name = "samsung-audio", +#endif + .codec_name = "wm8994-codec", + .init = midas_wm1811_init_paiftx, + .ops = &midas_wm1811_aif1_ops, + }, + { + .name = "Midas_WM1811 Voice", + .stream_name = "Voice Tx/Rx", + .cpu_dai_name = "midas.cp", + .codec_dai_name = "wm8994-aif2", + .platform_name = "snd-soc-dummy", + .codec_name = "wm8994-codec", + .ops = &midas_wm1811_aif2_ops, + .ignore_suspend = 1, + }, + { + .name = "Midas_WM1811 BT", + .stream_name = "BT Tx/Rx", + .cpu_dai_name = "midas.bt", + .codec_dai_name = "wm8994-aif3", + .platform_name = "snd-soc-dummy", + .codec_name = "wm8994-codec", + .ops = &midas_wm1811_aif3_ops, + .ignore_suspend = 1, + }, + { /* Primary DAI i/f */ + .name = "WM8994 AIF1", + .stream_name = "Pri_Dai", + .cpu_dai_name = "samsung-i2s.0", + .codec_dai_name = "wm8994-aif1", + .platform_name = "samsung-audio", + .codec_name = "wm8994-codec", + .ops = &midas_wm1811_aif1_ops, + }, +}; + +static int midas_card_suspend_pre(struct snd_soc_card *card) +{ +#ifdef CONFIG_SND_USE_LINEOUT_SWITCH + struct snd_soc_codec *codec = card->rtd->codec; + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + if (lineout_mode == 1 && + wm8994->vmid_mode == WM8994_VMID_FORCE) { + dev_dbg(codec->dev, + "%s: entering force vmid mode\n", __func__); + gpio_set_value(GPIO_LINEOUT_EN, 0); + wm8994_vmid_mode(codec, WM8994_VMID_NORMAL); + } +#endif + + return 0; +} + +static int midas_card_suspend_post(struct snd_soc_card *card) +{ + struct snd_soc_codec *codec = card->rtd->codec; + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + struct snd_soc_dai *aif2_dai = card->rtd[1].codec_dai; + int ret; + + if (!codec->active) { +#ifndef SND_USE_BIAS_LEVEL + ret = snd_soc_dai_set_sysclk(aif2_dai, + WM8994_SYSCLK_MCLK2, + MIDAS_DEFAULT_MCLK2, + SND_SOC_CLOCK_IN); + + if (ret < 0) + dev_err(codec->dev, "Unable to switch to MCLK2: %d\n", + ret); + + ret = snd_soc_dai_set_pll(aif2_dai, WM8994_FLL2, 0, 0, 0); + + if (ret < 0) + dev_err(codec->dev, "Unable to stop FLL2\n"); + + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_MCLK2, + MIDAS_DEFAULT_MCLK2, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, "Unable to switch to MCLK2\n"); + + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, 0, 0, 0); + + if (ret < 0) + dev_err(codec->dev, "Unable to stop FLL1\n"); +#endif + + midas_snd_set_mclk(false, true); + } + +#ifdef CONFIG_ARCH_EXYNOS5 + exynos5_sys_powerdown_xxti_control(midas_snd_get_mclk() ? 1 : 0); +#else /* for CONFIG_ARCH_EXYNOS5 */ + exynos4_sys_powerdown_xusbxti_control(midas_snd_get_mclk() ? 1 : 0); +#endif + + return 0; +} + +static int midas_card_resume_pre(struct snd_soc_card *card) +{ + struct snd_soc_codec *codec = card->rtd->codec; + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + int ret; + + midas_snd_set_mclk(true, false); + +#ifndef SND_USE_BIAS_LEVEL + /* Switch the FLL */ + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, + WM8994_FLL_SRC_MCLK1, + MIDAS_DEFAULT_MCLK1, + MIDAS_DEFAULT_SYNC_CLK); + + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to start FLL1: %d\n", ret); + + /* Then switch AIF1CLK to it */ + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_FLL1, + MIDAS_DEFAULT_SYNC_CLK, + SND_SOC_CLOCK_IN); + + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to switch to FLL1: %d\n", ret); +#endif + + return 0; +} + +static int midas_card_resume_post(struct snd_soc_card *card) +{ +#ifdef CONFIG_SND_USE_LINEOUT_SWITCH + struct snd_soc_codec *codec = card->rtd->codec; + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + if (lineout_mode == 1 && + wm8994->vmid_mode == WM8994_VMID_NORMAL) { + dev_dbg(codec->dev, + "%s: entering normal vmid mode\n", __func__); + wm8994_vmid_mode(codec, WM8994_VMID_FORCE); + gpio_set_value(GPIO_LINEOUT_EN, 1); + } +#endif + + return 0; +} + +#ifdef SND_USE_BIAS_LEVEL +static int midas_set_bias_level(struct snd_soc_card *card, + struct snd_soc_dapm_context *dapm, + enum snd_soc_bias_level level) +{ + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + + if (dapm->dev != aif1_dai->dev) + return 0; + + switch (level) { + case SND_SOC_BIAS_PREPARE: + midas_start_fll1(card->rtd[0].codec_dai); + break; + + default: + break; + } + + return 0; +} + +static int midas_set_bias_level_post(struct snd_soc_card *card, + struct snd_soc_dapm_context *dapm, + enum snd_soc_bias_level level) +{ + struct snd_soc_codec *codec = card->rtd->codec; + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + struct snd_soc_dai *aif2_dai = card->rtd[1].codec_dai; + int ret; + + if (dapm->dev != aif1_dai->dev) + return 0; + + switch (level) { + case SND_SOC_BIAS_STANDBY: + + /* When going idle stop FLL1 and revert to using MCLK2 + * directly for minimum power consumptin for accessory + * detection. + */ + if (card->dapm.bias_level == SND_SOC_BIAS_PREPARE) { + dev_info(aif1_dai->dev, "Moving to STANDBY\n"); + + ret = snd_soc_dai_set_sysclk(aif2_dai, + WM8994_SYSCLK_MCLK2, + MIDAS_DEFAULT_MCLK2, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, "Failed to switch to MCLK2\n"); + + ret = snd_soc_dai_set_pll(aif2_dai, WM8994_FLL2, + 0, 0, 0); + + if (ret < 0) + dev_err(codec->dev, + "Failed to change FLL2\n"); + + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_MCLK2, + MIDAS_DEFAULT_MCLK2, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, + "Failed to switch to MCLK2\n"); + + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, + 0, 0, 0); + if (ret < 0) + dev_err(codec->dev, + "Failed to stop FLL1\n"); + + + midas_fll1_active = false; + midas_snd_set_mclk(false, false); + } + + break; + default: + break; + } + + card->dapm.bias_level = level; + + return 0; +} +#endif + +static struct snd_soc_card midas = { + .name = "Midas_WM1811", + .dai_link = midas_dai, + + /* If you want to use sec_fifo device, + * changes the num_link = 2 or ARRAY_SIZE(midas_dai). */ + .num_links = ARRAY_SIZE(midas_dai), + +#ifdef SND_USE_BIAS_LEVEL + .set_bias_level = midas_set_bias_level, + .set_bias_level_post = midas_set_bias_level_post, +#endif + + .suspend_post = midas_card_suspend_post, + .resume_pre = midas_card_resume_pre, + .suspend_pre = midas_card_suspend_pre, + .resume_post = midas_card_resume_post +}; + +static struct platform_device *midas_snd_device; + +static int __init midas_audio_init(void) +{ + int ret; + + midas_snd_device = platform_device_alloc("soc-audio", -1); + if (!midas_snd_device) + return -ENOMEM; + + ret = snd_soc_register_dais(&midas_snd_device->dev, midas_ext_dai, + ARRAY_SIZE(midas_ext_dai)); + if (ret != 0) + pr_err("Failed to register external DAIs: %d\n", ret); + + platform_set_drvdata(midas_snd_device, &midas); + + ret = platform_device_add(midas_snd_device); + if (ret) + platform_device_put(midas_snd_device); + + midas_gpio_init(); + + return ret; +} +module_init(midas_audio_init); + +static void __exit midas_audio_exit(void) +{ + platform_device_unregister(midas_snd_device); +} +module_exit(midas_audio_exit); + +MODULE_AUTHOR("JS. Park <aitdark.park@samsung.com>"); +MODULE_DESCRIPTION("ALSA SoC Midas WM1811"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/midas_wm1811_slsi.c b/sound/soc/samsung/midas_wm1811_slsi.c new file mode 100644 index 0000000..f049d8b --- /dev/null +++ b/sound/soc/samsung/midas_wm1811_slsi.c @@ -0,0 +1,1314 @@ +/* + * midas_wm1811.c + * + * Copyright (c) 2011 Samsung Electronics Co. Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ +#include <linux/platform_device.h> +#include <linux/clk.h> +#include <linux/io.h> +#include <linux/gpio.h> +#include <linux/delay.h> +#include <linux/slab.h> +#include <linux/workqueue.h> +#include <linux/input.h> +#include <linux/wakelock.h> +#include <linux/suspend.h> + +#include <sound/soc.h> +#include <sound/soc-dapm.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> +#include <sound/jack.h> + +#include <mach/regs-clock.h> +#include <mach/pmu.h> + +#include <linux/mfd/wm8994/core.h> +#include <linux/mfd/wm8994/registers.h> +#include <linux/mfd/wm8994/pdata.h> + +#include "i2s.h" +#include "s3c-i2s-v2.h" +#include "../codecs/wm8994.h" + + +/* SMDK has a 16.934MHZ crystal attached to WM8994 */ +#define SMDK_WM8994_OSC_FREQ 16934400 +#define WM8994_DAI_AIF1 0 +#define WM8994_DAI_AIF2 1 +#define WM8994_DAI_AIF3 2 + +#define WM1811_JACKDET_MODE_NONE 0x0000 +#define WM1811_JACKDET_MODE_JACK 0x0100 +#define WM1811_JACKDET_MODE_MIC 0x0080 +#define WM1811_JACKDET_MODE_AUDIO 0x0180 + +#define WM1811_JACKDET_BTN0 0x04 +#define WM1811_JACKDET_BTN1 0x10 +#define WM1811_JACKDET_BTN2 0x08 + + +static const struct wm8958_micd_rate midas_det_rates[] = { + { 32768, true, 0, 0 }, + { 32768, false, 0, 0 }, + { 44100 * 256, true, 7, 7 }, + { 44100 * 256, false, 7, 7 }, +}; + +static const struct wm8958_micd_rate midas_jackdet_rates[] = { + { 32768, true, 0, 0 }, + { 32768, false, 0, 0 }, + { 44100 * 256, true, 7, 7 }, + { 44100 * 256, false, 7, 7 }, +}; + +static int aif2_mode; +const char *aif2_mode_text[] = { + "Slave", "Master" +}; + +/* To support PBA function test */ +static struct class *jack_class; +static struct device *jack_dev; + +static bool midas_fll1_active; + +static bool xclkout_enabled = false; + +struct wm1811_machine_priv { + struct snd_soc_jack jack; + struct snd_soc_codec *codec; + struct delayed_work mic_work; + struct wake_lock jackdet_wake_lock; +}; + + +static void midas_set_mclk(int on) +{ + static int ipwron = -1; + + if (ipwron == on) + return; + + ipwron = on; + if (on) { + exynos4_pmu_xclkout_set(1, XCLKOUT_XUSBXTI); + xclkout_enabled = true; + } else { + exynos4_pmu_xclkout_set(0, XCLKOUT_XUSBXTI); + xclkout_enabled = false; + } + + mdelay(10); +} + +static void midas_gpio_init(void) +{ + int err; + + /* Main Microphone BIAS */ + err = gpio_request(GPIO_MIC_BIAS_EN, "GPF1"); + if (err) { + pr_err(KERN_ERR "MIC_BIAS_EN GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_MIC_BIAS_EN, 1); + gpio_set_value(GPIO_MIC_BIAS_EN, 0); + gpio_free(GPIO_MIC_BIAS_EN); + + /* Sub Microphone BIAS */ + err = gpio_request(GPIO_SUB_MIC_BIAS_EN, "GPF2"); + if (err) { + pr_err(KERN_ERR "SUB_MIC_BIAS_EN GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_SUB_MIC_BIAS_EN, 1); + gpio_set_value(GPIO_SUB_MIC_BIAS_EN, 0); + gpio_free(GPIO_SUB_MIC_BIAS_EN); + +#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_M0_CTC) + /* Third Microphone BIAS */ + err = gpio_request(GPIO_THIRD_MIC_BIAS_EN, "GPJ0"); + if (err) { + pr_err(KERN_ERR "THIRD_MIC_BIAS_EN GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_THIRD_MIC_BIAS_EN, 1); + gpio_set_value(GPIO_THIRD_MIC_BIAS_EN, 0); + gpio_free(GPIO_THIRD_MIC_BIAS_EN); + + /* FM/Third Mic GPIO */ + err = gpio_request(GPIO_FM_MIC_SW, "GPL0"); + if (err) { + pr_err(KERN_ERR "FM/THIRD_MIC Switch GPIO set error!\n"); + return; + } + gpio_direction_output(GPIO_FM_MIC_SW, 1); + gpio_set_value(GPIO_FM_MIC_SW, 0); + gpio_free(GPIO_FM_MIC_SW); +#endif +} + +static const struct soc_enum aif2_mode_enum[] = { + SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aif2_mode_text), aif2_mode_text), +}; + +static int get_aif2_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = aif2_mode; + return 0; +} + +static int set_aif2_mode(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + if (aif2_mode == ucontrol->value.integer.value[0]) + return 0; + + aif2_mode = ucontrol->value.integer.value[0]; + + pr_info("set aif2 mode : %s\n", aif2_mode_text[aif2_mode]); + + return 0; +} + +static int midas_ext_micbias(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + + dev_dbg(codec->dev, "%s event is %02X", w->name, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + gpio_set_value(GPIO_MIC_BIAS_EN, 1); + break; + case SND_SOC_DAPM_POST_PMD: + gpio_set_value(GPIO_MIC_BIAS_EN, 0); + break; + } + +#if 0 + gpio_set_value(GPIO_MIC_BIAS_EN, SND_SOC_DAPM_EVENT_ON(event)); +#endif + + return 0; +} + +static int midas_ext_submicbias(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + + dev_dbg(codec->dev, "%s event is %02X", w->name, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + gpio_set_value(GPIO_SUB_MIC_BIAS_EN, 1); + break; + case SND_SOC_DAPM_POST_PMD: + gpio_set_value(GPIO_SUB_MIC_BIAS_EN, 0); + break; + } + +#if 0 + gpio_set_value(GPIO_SUB_MIC_BIAS_EN, SND_SOC_DAPM_EVENT_ON(event)); +#endif + + return 0; +} + +#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_M0_CTC) +static int midas_ext_thirdmicbias(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + + dev_dbg(codec->dev, "%s event is %02X", w->name, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + gpio_set_value(GPIO_THIRD_MIC_BIAS_EN, 1); + break; + case SND_SOC_DAPM_POST_PMD: + gpio_set_value(GPIO_THIRD_MIC_BIAS_EN, 0); + break; + } + +#if 0 + gpio_set_value(GPIO_SUB_MIC_BIAS_EN, SND_SOC_DAPM_EVENT_ON(event)); +#endif + + return 0; +} +#endif + +static int midas_ext_spkmode(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = w->codec; + int ret = 0; + + ret = snd_soc_update_bits(codec, WM8994_SPKOUT_MIXERS, + WM8994_SPKMIXR_TO_SPKOUTL_MASK, + WM8994_SPKMIXR_TO_SPKOUTL); + + return ret; +} + +static void midas_micd_set_rate(struct snd_soc_codec *codec) +{ + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + int best, i, sysclk, val; + bool idle; + const struct wm8958_micd_rate *rates = NULL; + int num_rates = 0; + + idle = !wm8994->jack_mic; + + sysclk = snd_soc_read(codec, WM8994_CLOCKING_1); + if (sysclk & WM8994_SYSCLK_SRC) + sysclk = wm8994->aifclk[1]; + else + sysclk = wm8994->aifclk[0]; + + if (wm8994->jackdet) { + rates = midas_jackdet_rates; + num_rates = ARRAY_SIZE(midas_jackdet_rates); + } else { + rates = midas_det_rates; + num_rates = ARRAY_SIZE(midas_det_rates); + } + + best = 0; + for (i = 0; i < num_rates; i++) { + if (rates[i].idle != idle) + continue; + if (abs(rates[i].sysclk - sysclk) < + abs(rates[best].sysclk - sysclk)) + best = i; + else if (rates[best].idle != idle) + best = i; + } + + val = rates[best].start << WM8958_MICD_BIAS_STARTTIME_SHIFT + | rates[best].rate << WM8958_MICD_RATE_SHIFT; + + snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, + WM8958_MICD_BIAS_STARTTIME_MASK | + WM8958_MICD_RATE_MASK, val); +} + +static void midas_start_fll1(struct snd_soc_dai *aif1_dai) +{ + int ret; + if (midas_fll1_active) + return; + + dev_info(aif1_dai->dev, "Moving to audio clocking settings\n"); + + /* Switch AIF1 to MCLK2 while we bring stuff up */ + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_MCLK2, + 32768, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to switch to MCLK2: %d\n", ret); + + /* Start the 24MHz clock to provide a high frequency reference to + * provide a high frequency reference for the FLL, giving improved + * performance. + */ + midas_set_mclk(3); /* forced enable MCLK */ + + /* Switch the FLL */ + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, WM8994_FLL_SRC_MCLK1, + 24000000, 44100 * 256); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to start FLL1: %d\n", ret); + + /* Then switch AIF1CLK to it */ + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_FLL1, + 44100 * 256, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to switch to FLL1: %d\n", ret); + + midas_micd_set_rate(aif1_dai->codec); + + midas_fll1_active = true; +} + +static void midas_micdet(u16 status, void *data) +{ + struct wm1811_machine_priv *wm1811 = data; + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(wm1811->codec); + int report; + + + wake_lock_timeout(&wm1811->jackdet_wake_lock, 5 * HZ); + + /* Either nothing present or just starting detection */ + if (!(status & WM8958_MICD_STS)) { + if (!wm8994->jackdet) { + /* If nothing present then clear our statuses */ + dev_dbg(wm1811->codec->dev, "Detected open circuit\n"); + wm8994->jack_mic = false; + wm8994->mic_detecting = true; + + midas_micd_set_rate(wm1811->codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, 0, + wm8994->btn_mask | + SND_JACK_HEADSET); + } + return; + } + + /* If the measurement is showing a high impedence we've got a + * microphone. + */ + if (wm8994->mic_detecting && (status & 0x400)) { + dev_info(wm1811->codec->dev, "Detected microphone\n"); + + wm8994->mic_detecting = false; + wm8994->jack_mic = true; + + midas_micd_set_rate(wm1811->codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADSET, + SND_JACK_HEADSET); + } + + if (wm8994->mic_detecting && status & 0x4) { + dev_info(wm1811->codec->dev, "Detected headphone\n"); + wm8994->mic_detecting = false; + + midas_micd_set_rate(wm1811->codec); + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADPHONE, + SND_JACK_HEADSET); + + /* If we have jackdet that will detect removal */ + if (wm8994->jackdet) { + snd_soc_update_bits(wm1811->codec, WM8958_MIC_DETECT_1, + WM8958_MICD_ENA, 0); + + if (wm8994->active_refcount) { + snd_soc_update_bits(wm1811->codec, + WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + WM1811_JACKDET_MODE_AUDIO); + } else { + snd_soc_update_bits(wm1811->codec, + WM8994_ANTIPOP_2, + WM1811_JACKDET_MODE_MASK, + WM1811_JACKDET_MODE_JACK); + } + } + } + + /* Report short circuit as a button */ + if (wm8994->jack_mic) { + report = 0; + if (status & WM1811_JACKDET_BTN0) + report |= SND_JACK_BTN_0; + + if (status & WM1811_JACKDET_BTN1) + report |= SND_JACK_BTN_1; + + if (status & WM1811_JACKDET_BTN2) + report |= SND_JACK_BTN_2; + + dev_dbg(wm1811->codec->dev, "Detected Button: %08x (%08X)\n", + report, status); + + snd_soc_jack_report(wm8994->micdet[0].jack, report, + wm8994->btn_mask); + } +} + +#ifdef CONFIG_SND_SAMSUNG_I2S_MASTER +static int set_epll_rate(unsigned long rate) +{ + struct clk *fout_epll; + + fout_epll = clk_get(NULL, "fout_epll"); + if (IS_ERR(fout_epll)) { + printk(KERN_ERR "%s: failed to get fout_epll\n", __func__); + return -ENOENT; + } + + if (rate == clk_get_rate(fout_epll)) + goto out; + + clk_set_rate(fout_epll, rate); +out: + clk_put(fout_epll); + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ + +#ifndef CONFIG_SND_SAMSUNG_I2S_MASTER +static int midas_wm1811_aif1_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + unsigned int pll_out; + int ret; + + /* AIF1CLK should be >=3MHz for optimal performance */ + if (params_rate(params) == 8000 || params_rate(params) == 11025) + pll_out = params_rate(params) * 512; + else + pll_out = params_rate(params) * 256; + + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; + + /* Set the cpu DAI configuration */ + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_OPCLK, + 0, MOD_OPCLK_PCLK); + if (ret < 0) + return ret; + +#if 0 + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL1, + pll_out, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; +#else + midas_start_fll1(codec_dai); +#endif + + if (ret < 0) + return ret; + + return 0; +} +#else /* CONFIG_SND_SAMSUNG_I2S_MASTER */ +static int midas_wm1811_aif1_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + int bfs, psr, rfs, ret; + unsigned long rclk; + + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_U24: + case SNDRV_PCM_FORMAT_S24: + bfs = 48; + break; + case SNDRV_PCM_FORMAT_U16_LE: + case SNDRV_PCM_FORMAT_S16_LE: + bfs = 32; + break; + default: + return -EINVAL; + } + + switch (params_rate(params)) { + case 16000: + case 22050: + case 24000: + case 32000: + case 44100: + case 48000: + case 88200: + case 96000: + if (bfs == 48) + rfs = 384; + else + rfs = 256; + break; + case 64000: + rfs = 384; + break; + case 8000: + case 11025: + case 12000: + if (bfs == 48) + rfs = 768; + else + rfs = 512; + break; + default: + return -EINVAL; + } + + rclk = params_rate(params) * rfs; + + switch (rclk) { + case 4096000: + case 5644800: + case 6144000: + case 8467200: + case 9216000: + psr = 8; + break; + case 8192000: + case 11289600: + case 12288000: + case 16934400: + case 18432000: + psr = 4; + break; + case 22579200: + case 24576000: + case 33868800: + case 36864000: + psr = 2; + break; + case 67737600: + case 73728000: + psr = 1; + break; + default: + printk(KERN_INFO "Not yet supported!\n"); + return -EINVAL; + } + + set_epll_rate(rclk * psr); + + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_MCLK1, + rclk, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_CDCLK, + 0, SND_SOC_CLOCK_OUT); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_clkdiv(cpu_dai, SAMSUNG_I2S_DIV_BCLK, bfs); + if (ret < 0) + return ret; + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ + +/* + * Midas WM1811 DAI operations. + */ +static struct snd_soc_ops midas_wm1811_aif1_ops = { + .hw_params = midas_wm1811_aif1_hw_params, +}; + +static int midas_wm1811_aif2_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + int ret; + int prate; + int bclk; + + prate = params_rate(params); + switch (params_rate(params)) { + case 8000: + case 16000: + break; + default: + dev_warn(codec_dai->dev, "Unsupported LRCLK %d, falling back to 8000Hz\n", + (int)params_rate(params)); + prate = 8000; + } + +#if defined(CONFIG_LTE_MODEM_CMC221) || defined(CONFIG_MACH_M0_CTC) + /* Set the codec DAI configuration */ + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A + | SND_SOC_DAIFMT_IB_NF + | SND_SOC_DAIFMT_CBS_CFS); +#else + /* Set the codec DAI configuration, aif2_mode:0 is slave */ + if (aif2_mode == 0) { + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + } else { + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + } +#endif + + if (ret < 0) + return ret; + +#if defined(CONFIG_LTE_MODEM_CMC221) || defined(CONFIG_MACH_M0_CTC) + bclk = 2048000; +#else + switch (prate) { + case 8000: + bclk = 256000; + break; + case 16000: + bclk = 512000; + break; + default: + return -EINVAL; + } +#endif + if (aif2_mode == 0) { + ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL2, + WM8994_FLL_SRC_BCLK, + bclk, prate * 256); + } else { + ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL2, + WM8994_FLL_SRC_MCLK1, + 24000000, prate * 256); + } + if (ret < 0) + dev_err(codec_dai->dev, "Unable to configure FLL2: %d\n", ret); + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL2, + prate * 256, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec_dai->dev, "Unable to switch to FLL2: %d\n", ret); + + return 0; +} + +static struct snd_soc_ops midas_wm1811_aif2_ops = { + .hw_params = midas_wm1811_aif2_hw_params, +}; + +static int midas_wm1811_aif3_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + pr_err("%s: enter\n", __func__); + return 0; +} + +static struct snd_soc_ops midas_wm1811_aif3_ops = { + .hw_params = midas_wm1811_aif3_hw_params, +}; + +static const struct snd_kcontrol_new midas_controls[] = { + SOC_DAPM_PIN_SWITCH("HP"), + SOC_DAPM_PIN_SWITCH("SPK"), + SOC_DAPM_PIN_SWITCH("RCV"), + SOC_DAPM_PIN_SWITCH("FM In"), + SOC_DAPM_PIN_SWITCH("LINE"), + SOC_DAPM_PIN_SWITCH("Main Mic"), + SOC_DAPM_PIN_SWITCH("Sub Mic"), + SOC_DAPM_PIN_SWITCH("Third Mic"), + SOC_DAPM_PIN_SWITCH("Headset Mic"), + + SOC_ENUM_EXT("AIF2 Mode", aif2_mode_enum[0], + get_aif2_mode, set_aif2_mode), +}; + +const struct snd_soc_dapm_widget midas_dapm_widgets[] = { + SND_SOC_DAPM_HP("HP", NULL), + SND_SOC_DAPM_SPK("SPK", midas_ext_spkmode), + SND_SOC_DAPM_SPK("RCV", NULL), + SND_SOC_DAPM_LINE("LINE", NULL), + + SND_SOC_DAPM_MIC("Headset Mic", NULL), + SND_SOC_DAPM_MIC("Main Mic", midas_ext_micbias), + SND_SOC_DAPM_MIC("Sub Mic", midas_ext_submicbias), +#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_M0_CTC) + SND_SOC_DAPM_MIC("Third Mic", midas_ext_thirdmicbias), +#endif + SND_SOC_DAPM_LINE("FM In", NULL), + + SND_SOC_DAPM_INPUT("S5P RP"), +}; + +const struct snd_soc_dapm_route midas_dapm_routes[] = { + { "HP", NULL, "HPOUT1L" }, + { "HP", NULL, "HPOUT1R" }, + + { "SPK", NULL, "SPKOUTLN" }, + { "SPK", NULL, "SPKOUTLP" }, + { "SPK", NULL, "SPKOUTRN" }, + { "SPK", NULL, "SPKOUTRP" }, + + { "RCV", NULL, "HPOUT2N" }, + { "RCV", NULL, "HPOUT2P" }, + + { "LINE", NULL, "LINEOUT2N" }, + { "LINE", NULL, "LINEOUT2P" }, + + { "IN1LP", NULL, "Main Mic" }, + { "IN1LN", NULL, "Main Mic" }, + + { "IN1RP", NULL, "Sub Mic" }, + { "IN1RN", NULL, "Sub Mic" }, + + { "IN2LP:VXRN", NULL, "MICBIAS2" }, + { "MICBIAS2", NULL, "Headset Mic" }, + + { "AIF1DAC1L", NULL, "S5P RP" }, + { "AIF1DAC1R", NULL, "S5P RP" }, + + { "IN2RN", NULL, "FM In" }, + { "IN2RP:VXRP", NULL, "FM In" }, + +#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_M0_CTC) + { "IN2RN", NULL, "Third Mic" }, + { "IN2RP:VXRP", NULL, "Third Mic" }, +#endif +}; + +static void wm1811_mic_work(struct work_struct *work) +{ + int report = 0; + struct wm1811_machine_priv *wm1811; + struct snd_soc_codec *codec; + int status; + + wm1811 = container_of(work, struct wm1811_machine_priv, + mic_work.work); + codec = wm1811->codec; + + status = snd_soc_read(codec, WM8958_MIC_DETECT_3); + if (status < 0) { + dev_err(codec->dev, "Failed to read mic detect status: %d\n", + status); + return; + } + + /* If nothing present then clear our statuses */ + if (!(status & WM8958_MICD_STS)) + goto done; + + report = SND_JACK_HEADSET; + + /* Everything else is buttons; just assign slots */ + if (status & WM1811_JACKDET_BTN0) + report |= SND_JACK_BTN_0; + if (status & WM1811_JACKDET_BTN1) + report |= SND_JACK_BTN_1; + if (status & WM1811_JACKDET_BTN2) + report |= SND_JACK_BTN_2; + + if (report & SND_JACK_MICROPHONE) + dev_crit(codec->dev, "Reporting microphone\n"); + if (report & SND_JACK_HEADPHONE) + dev_crit(codec->dev, "Reporting headphone\n"); + if (report & SND_JACK_BTN_0) + dev_crit(codec->dev, "Reporting button 0\n"); + if (report & SND_JACK_BTN_1) + dev_crit(codec->dev, "Reporting button 1\n"); + if (report & SND_JACK_BTN_2) + dev_crit(codec->dev, "Reporting button 2\n"); + +done: + if (!report) + dev_crit(codec->dev, "Reporting open circuit\n"); + + snd_soc_jack_report(&wm1811->jack, report, + SND_JACK_BTN_0 | SND_JACK_BTN_1 | + SND_JACK_BTN_2 | SND_JACK_HEADSET); +} + +static struct snd_soc_dai_driver midas_ext_dai[] = { + { + .name = "midas.cp", + .playback = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + .capture = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + }, + { + .name = "midas.bt", + .playback = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + .capture = { + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 16000, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + }, +}; + +static ssize_t earjack_state_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + + int status; + int report = 0; + + status = snd_soc_read(codec, WM8958_MIC_DETECT_3); + + if (status < 0) { + dev_err(codec->dev, "Failed to read mic detect status: %d\n", + status); + goto done; + } + + /* If nothing present then clear our statuses */ + if (!(status & WM8958_MICD_STS)) + goto done; + + report = 1; + +done: + return sprintf(buf, "%d\n", report); +} + +static ssize_t earjack_state_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + pr_info("%s : operate nothing\n", __func__); + + return size; +} + +static ssize_t earjack_key_state_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + + int status; + int report = 0; + + status = snd_soc_read(codec, WM8958_MIC_DETECT_3); + + if (status < 0) { + dev_err(codec->dev, "Failed to read mic detect status: %d\n", + status); + goto done; + } + + /* If nothing present then clear our statuses */ + if (!(status & WM8958_MICD_STS)) + goto done; + + if (status & WM1811_JACKDET_BTN0) + report = 1; + +done: + return sprintf(buf, "%d\n", report); +} + +static ssize_t earjack_key_state_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + pr_info("%s : operate nothing\n", __func__); + + return size; +} + +static ssize_t earjack_select_jack_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + pr_info("%s : operate nothing\n", __func__); + + return 0; +} + +static ssize_t earjack_select_jack_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) +{ + struct snd_soc_codec *codec = dev_get_drvdata(dev); + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + + dev_info(codec->dev, "Forced detect microphone\n"); + + wm8994->mic_detecting = false; + wm8994->jack_mic = true; + + midas_micd_set_rate(codec); + + if ((!size) || (buf[0] != '1')) { + snd_soc_jack_report(wm8994->micdet[0].jack, 0, + SND_JACK_HEADSET); + } + + snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADSET, + SND_JACK_HEADSET); + + return size; +} + +static DEVICE_ATTR(select_jack, S_IRUGO | S_IWUSR | S_IWGRP, + earjack_select_jack_show, earjack_select_jack_store); + +static DEVICE_ATTR(key_state, S_IRUGO | S_IWUSR | S_IWGRP, + earjack_key_state_show, earjack_key_state_store); + +static DEVICE_ATTR(state, S_IRUGO | S_IWUSR | S_IWGRP, + earjack_state_show, earjack_state_store); + +static int midas_wm1811_init_paiftx(struct snd_soc_pcm_runtime *rtd) +{ + + struct wm1811_machine_priv *wm1811; + struct snd_soc_codec *codec = rtd->codec; + struct snd_soc_dai *aif1_dai = rtd->codec_dai; + struct wm8994 *wm8994 = codec->control_data; + int ret; + + midas_set_mclk(1); + + ret = snd_soc_add_controls(codec, midas_controls, + ARRAY_SIZE(midas_controls)); + + ret = snd_soc_dapm_new_controls(&codec->dapm, midas_dapm_widgets, + ARRAY_SIZE(midas_dapm_widgets)); + if (ret != 0) + dev_err(codec->dev, "Failed to add DAPM widgets: %d\n", ret); + + ret = snd_soc_dapm_add_routes(&codec->dapm, midas_dapm_routes, + ARRAY_SIZE(midas_dapm_routes)); + if (ret != 0) + dev_err(codec->dev, "Failed to add DAPM routes: %d\n", ret); + + ret = snd_soc_dai_set_sysclk(aif1_dai, WM8994_SYSCLK_MCLK2, + 32768, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, "Failed to boot clocking\n"); + + /* Force AIF1CLK on as it will be master for jack detection */ + ret = snd_soc_dapm_force_enable_pin(&codec->dapm, "AIF1CLK"); + if (ret < 0) + dev_err(codec->dev, "Failed to enable AIF1CLK: %d\n", ret); + + ret = snd_soc_dapm_disable_pin(&codec->dapm, "S5P RP"); + if (ret < 0) + dev_err(codec->dev, "Failed to disable S5P RP: %d\n", ret); + + wm1811 = kmalloc(sizeof *wm1811, GFP_KERNEL); + if (!wm1811) { + dev_err(codec->dev, "Failed to allocate memory!"); + return -ENOMEM; + } + + snd_soc_dapm_ignore_suspend(&codec->dapm, "RCV"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "SPK"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "HP"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Headset Mic"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Sub Mic"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "Main Mic"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF1DACDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF2DACDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF3DACDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF1ADCDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF2ADCDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "AIF3ADCDAT"); + snd_soc_dapm_ignore_suspend(&codec->dapm, "FM In"); +#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_M0_CTC) + snd_soc_dapm_ignore_suspend(&codec->dapm, "Third Mic"); +#endif + + + wm1811->codec = codec; + + INIT_DELAYED_WORK(&wm1811->mic_work, wm1811_mic_work); + + ret = snd_soc_jack_new(codec, "Midas Jack", + SND_JACK_HEADSET | SND_JACK_BTN_0 | + SND_JACK_BTN_1 | SND_JACK_BTN_2, + &wm1811->jack); + + if (ret < 0) + dev_err(codec->dev, "Failed to create jack: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_0, KEY_MEDIA); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_MEDIA: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_1, + KEY_VOLUMEDOWN); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_VOLUMEUP: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_2, + KEY_VOLUMEUP); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_VOLUMEDOWN: %d\n", ret); + + ret = wm8958_mic_detect(codec, &wm1811->jack, midas_micdet, wm1811); + if (ret < 0) + dev_err(codec->dev, "Failed start detection: %d\n", ret); + + /* To wakeup for earjack event in suspend mode */ + enable_irq_wake(wm8994->irq); + + wake_lock_init(&wm1811->jackdet_wake_lock, + WAKE_LOCK_SUSPEND, "midas_jackdet"); + + /* To support PBA function test */ + jack_class = class_create(THIS_MODULE, "audio"); + + if (IS_ERR(jack_class)) + pr_err("Failed to create class\n"); + + jack_dev = device_create(jack_class, NULL, 0, codec, "earjack"); + + if (device_create_file(jack_dev, &dev_attr_select_jack) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_select_jack.attr.name); + + if (device_create_file(jack_dev, &dev_attr_key_state) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_key_state.attr.name); + + if (device_create_file(jack_dev, &dev_attr_state) < 0) + pr_err("Failed to create device file (%s)!\n", + dev_attr_state.attr.name); + + return snd_soc_dapm_sync(&codec->dapm); +} + +static struct snd_soc_dai_link midas_dai[] = { + { /* Sec_Fifo DAI i/f */ + .name = "Sec_FIFO TX", + .stream_name = "Sec_Dai", + .cpu_dai_name = "samsung-i2s.4", + .codec_dai_name = "wm8994-aif1", +#ifndef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER + .platform_name = "samsung-audio-idma", +#else + .platform_name = "samsung-audio", +#endif + .codec_name = "wm8994-codec", + .init = midas_wm1811_init_paiftx, + .ops = &midas_wm1811_aif1_ops, + }, + { + .name = "Midas_WM1811 Voice", + .stream_name = "Voice Tx/Rx", + .cpu_dai_name = "midas.cp", + .codec_dai_name = "wm8994-aif2", + .platform_name = "snd-soc-dummy", + .codec_name = "wm8994-codec", + .ops = &midas_wm1811_aif2_ops, + .ignore_suspend = 1, + }, + { + .name = "Midas_WM1811 BT", + .stream_name = "BT Tx/Rx", + .cpu_dai_name = "midas.bt", + .codec_dai_name = "wm8994-aif3", + .platform_name = "snd-soc-dummy", + .codec_name = "wm8994-codec", + .ops = &midas_wm1811_aif3_ops, + .ignore_suspend = 1, + }, + { /* Primary DAI i/f */ + .name = "WM8994 AIF1", + .stream_name = "Pri_Dai", + .cpu_dai_name = "samsung-i2s.0", + .codec_dai_name = "wm8994-aif1", + .platform_name = "samsung-audio", + .codec_name = "wm8994-codec", + .ops = &midas_wm1811_aif1_ops, + }, +}; + +static int midas_card_suspend(struct snd_soc_card *card) +{ + struct snd_soc_codec *codec = card->rtd->codec; + + if (!codec->active) + midas_set_mclk(0); + + exynos4_sys_powerdown_xusbxti_control(xclkout_enabled ? 1 : 0); + + return 0; +} + +static int midas_card_resume(struct snd_soc_card *card) +{ + midas_set_mclk(1); + + return 0; +} + +static int midas_set_bias_level(struct snd_soc_card *card, + struct snd_soc_dapm_context *dapm, + enum snd_soc_bias_level level) +{ + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + + if (dapm->dev != aif1_dai->dev) + return 0; + + switch (level) { + case SND_SOC_BIAS_PREPARE: + midas_start_fll1(card->rtd[0].codec_dai); + break; + + default: + break; + } + + return 0; +} + +static int midas_set_bias_level_post(struct snd_soc_card *card, + struct snd_soc_dapm_context *dapm, + enum snd_soc_bias_level level) +{ + struct snd_soc_codec *codec = card->rtd->codec; + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + struct snd_soc_dai *aif2_dai = card->rtd[1].codec_dai; + int ret; + + if (dapm->dev != aif1_dai->dev) + return 0; + + switch (level) { + case SND_SOC_BIAS_STANDBY: + /* When going idle stop FLL1 and revert to using MCLK2 + * directly for minimum power consumptin for accessory + * detection. + */ + if (card->dapm.bias_level == SND_SOC_BIAS_PREPARE) { + dev_info(aif1_dai->dev, "Moving to STANDBY\n"); + + ret = snd_soc_dai_set_sysclk(aif2_dai, + WM8994_SYSCLK_MCLK2, + 32768, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, "Failed to switch to MCLK2\n"); + + ret = snd_soc_dai_set_pll(aif2_dai, WM8994_FLL2, + 0, 0, 0); + + if (ret < 0) + dev_err(codec->dev, + "Failed to change FLL2\n"); + + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_MCLK2, + 32768, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, + "Failed to switch to MCLK2\n"); + + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, + 0, 0, 0); + if (ret < 0) + dev_err(codec->dev, + "Failed to stop FLL1\n"); + + + midas_fll1_active = false; + + midas_micd_set_rate(codec); + midas_set_mclk(0); + } + break; + default: + break; + } + + card->dapm.bias_level = level; + + return 0; +} + +static struct snd_soc_card midas = { + .name = "Midas_WM1811", + .dai_link = midas_dai, + + /* If you want to use sec_fifo device, + * changes the num_link = 2 or ARRAY_SIZE(midas_dai). */ + .num_links = ARRAY_SIZE(midas_dai), + + .set_bias_level = midas_set_bias_level, + .set_bias_level_post = midas_set_bias_level_post, + + .suspend_post = midas_card_suspend, + .resume_pre = midas_card_resume +}; + +static struct platform_device *midas_snd_device; + +static int __init midas_audio_init(void) +{ + int ret; + + midas_snd_device = platform_device_alloc("soc-audio", -1); + if (!midas_snd_device) + return -ENOMEM; + + ret = snd_soc_register_dais(&midas_snd_device->dev, + midas_ext_dai, ARRAY_SIZE(midas_ext_dai)); + if (ret != 0) + pr_err("Failed to register external DAIs: %d\n", ret); + + platform_set_drvdata(midas_snd_device, &midas); + + ret = platform_device_add(midas_snd_device); + if (ret) + platform_device_put(midas_snd_device); + + midas_gpio_init(); + + return ret; +} +module_init(midas_audio_init); + +static void __exit midas_audio_exit(void) +{ + platform_device_unregister(midas_snd_device); +} +module_exit(midas_audio_exit); + +MODULE_AUTHOR("JS. Park <aitdark.park@samsung.com>"); +MODULE_DESCRIPTION("ALSA SoC Midas WM1811"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/p10_wm1811_slsi.c b/sound/soc/samsung/p10_wm1811_slsi.c new file mode 100644 index 0000000..5085b2a --- /dev/null +++ b/sound/soc/samsung/p10_wm1811_slsi.c @@ -0,0 +1,872 @@ +/* + * p10_wm1811.c + * + * Copyright (c) 2011 Samsung Electronics Co. Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include <linux/platform_device.h> +#include <linux/clk.h> +#include <linux/io.h> +#include <linux/gpio.h> +#include <linux/delay.h> +#include <linux/slab.h> +#include <linux/workqueue.h> +#include <linux/mfd/wm8994/registers.h> +#include <linux/input.h> +#include <linux/suspend.h> + +#include <sound/soc.h> +#include <sound/soc-dapm.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> +#include <sound/jack.h> + +#include <mach/regs-clock.h> +#include <mach/pmu.h> + +#include "i2s.h" +#include "s3c-i2s-v2.h" +#include "../codecs/wm8994.h" + + +/* SMDK has a 16.934MHZ crystal attached to WM8994 */ +#define SMDK_WM8994_OSC_FREQ 16934400 +#define WM8994_DAI_AIF1 0 +#define WM8994_DAI_AIF2 1 +#define WM8994_DAI_AIF3 2 + +#define EAR_SEL EXYNOS4210_GPJ0(4) +/* +#define MANAGE_MCLK1 +*/ + +static bool p10_fll1_active; + +static bool xclkout_enabled = false; + +static void p10_set_mclk(bool on) +{ + if (on) { + exynos5_pmu_xclkout_set(1, XCLKOUT_XXTI); + xclkout_enabled = true; + } else { + exynos5_pmu_xclkout_set(0, XCLKOUT_XXTI); + xclkout_enabled = false; + } + + mdelay(10); +} + +static void p10_start_fll1(struct snd_soc_dai *aif1_dai) +{ + int ret; + + if (p10_fll1_active) + return; + + dev_info(aif1_dai->dev, "Moving to audio clocking settings\n"); + + /* Switch AIF1 to MCLK2 while we bring stuff up */ + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_MCLK2, + 32768, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to switch to MCLK2: %d\n", ret); + + /* Start the 24MHz clock to provide a high frequency reference to + * provide a high frequency reference for the FLL, giving improved + * performance. + */ + p10_set_mclk(1); /* forced enable MCLK */ + + /* Switch the FLL */ + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, WM8994_FLL_SRC_MCLK1, + 24000000, 44100 * 256); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to start FLL1: %d\n", ret); + +#ifdef MANAGE_MCLK1 + /* Now the FLL is running we can stop the reference clock, the + * FLL will maintain frequency with no reference so this saves + * power from the reference clock. + */ + p10_set_mclk(false); +#endif + + /* Then switch AIF1CLK to it */ + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_FLL1, + 44100 * 256, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(aif1_dai->dev, "Unable to switch to FLL1: %d\n", ret); + + p10_fll1_active = true; +} + +#ifdef CONFIG_SND_SAMSUNG_I2S_MASTER +static int set_epll_rate(unsigned long rate) +{ + struct clk *fout_epll; + + fout_epll = clk_get(NULL, "fout_epll"); + if (IS_ERR(fout_epll)) { + printk(KERN_ERR "%s: failed to get fout_epll\n", __func__); + return -ENOENT; + } + + if (rate == clk_get_rate(fout_epll)) + goto out; + + clk_set_rate(fout_epll, rate); +out: + clk_put(fout_epll); + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ + +#ifndef CONFIG_SND_SAMSUNG_I2S_MASTER +static int p10_wm1811_aif1_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + unsigned int pll_out; + int ret; + + /* AIF1CLK should be >=3MHz for optimal performance */ + if (params_rate(params) == 8000 || params_rate(params) == 11025) + pll_out = params_rate(params) * 512; + else + pll_out = params_rate(params) * 256; + + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; + + /* Set the cpu DAI configuration */ + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_OPCLK, + 0, MOD_OPCLK_PCLK); + if (ret < 0) + return ret; + +#if 0 + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL1, + pll_out, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; +#else + p10_start_fll1(codec_dai); +#endif + + if (ret < 0) + return ret; + + return 0; +} +#else /* CONFIG_SND_SAMSUNG_I2S_MASTER */ +static int p10_wm1811_aif1_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + int bfs, psr, rfs, ret; + unsigned long rclk; + + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_U24: + case SNDRV_PCM_FORMAT_S24: + bfs = 48; + break; + case SNDRV_PCM_FORMAT_U16_LE: + case SNDRV_PCM_FORMAT_S16_LE: + bfs = 32; + break; + default: + return -EINVAL; + } + + switch (params_rate(params)) { + case 16000: + case 22050: + case 24000: + case 32000: + case 44100: + case 48000: + case 88200: + case 96000: + if (bfs == 48) + rfs = 384; + else + rfs = 256; + break; + case 64000: + rfs = 384; + break; + case 8000: + case 11025: + case 12000: + if (bfs == 48) + rfs = 768; + else + rfs = 512; + break; + default: + return -EINVAL; + } + + rclk = params_rate(params) * rfs; + + switch (rclk) { + case 4096000: + case 5644800: + case 6144000: + case 8467200: + case 9216000: + psr = 8; + break; + case 8192000: + case 11289600: + case 12288000: + case 16934400: + case 18432000: + psr = 4; + break; + case 22579200: + case 24576000: + case 33868800: + case 36864000: + psr = 2; + break; + case 67737600: + case 73728000: + psr = 1; + break; + default: + printk(KERN_INFO "Not yet supported!\n"); + return -EINVAL; + } + + set_epll_rate(rclk * psr); + + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_MCLK1, + rclk, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_CDCLK, + 0, SND_SOC_CLOCK_OUT); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_clkdiv(cpu_dai, SAMSUNG_I2S_DIV_BCLK, bfs); + if (ret < 0) + return ret; + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ + +/* + * P10 WM1811 DAI operations. + */ +static struct snd_soc_ops p10_wm1811_aif1_ops = { + .hw_params = p10_wm1811_aif1_hw_params, +}; + +static int p10_wm1811_aif2_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + int ret; + int prate; + int bclk; + + prate = params_rate(params); + switch (params_rate(params)) { + case 8000: + case 16000: + break; + default: + dev_warn(codec_dai->dev, "Unsupported LRCLK %d, falling back to 8000Hz\n", + (int)params_rate(params)); + prate = 8000; + } + + /* Set the codec DAI configuration */ + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_IB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + switch (prate) { + case 8000: + bclk = 256000; + break; + case 16000: + bclk = 512000; + break; + default: + return -EINVAL; + } + + ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL2, + WM8994_FLL_SRC_BCLK, + bclk, prate * 256); + if (ret < 0) + dev_err(codec_dai->dev, "Unable to configure FLL2: %d\n", ret); + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL2, + prate * 256, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec_dai->dev, "Unable to switch to FLL2: %d\n", ret); + + return 0; +} + +static struct snd_soc_ops p10_wm1811_aif2_ops = { + .hw_params = p10_wm1811_aif2_hw_params, +}; + +static int p10_wm1811_aif3_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + pr_err("%s: enter\n", __func__); + return 0; +} + +static struct snd_soc_ops p10_wm1811_aif3_ops = { + .hw_params = p10_wm1811_aif3_hw_params, +}; + +static int mic_sel; + +static int mic_sel_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = mic_sel; + + return 0; +} + +static int mic_sel_set(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + int val = ucontrol->value.integer.value[0]; + + if (val < 0 || val > 1) + return -EINVAL; + + if (val == mic_sel) + return 0; + +#if 0 + gpio_set_value(EAR_SEL, val); + mic_sel = val; +#endif + + return 1; +} + +const char *mic_sel_text[] = { + "Sub", "Headset" +}; + +static const struct soc_enum mic_sel_enum = + SOC_ENUM_SINGLE_EXT(2, mic_sel_text); + +static const struct snd_kcontrol_new p10_controls[] = { + SOC_DAPM_PIN_SWITCH("HP"), + SOC_DAPM_PIN_SWITCH("SPK"), + SOC_DAPM_PIN_SWITCH("RCV"), + SOC_DAPM_PIN_SWITCH("LINE"), + SOC_ENUM_EXT("MIC Select", mic_sel_enum, mic_sel_get, mic_sel_set), +}; + +const struct snd_soc_dapm_widget p10_dapm_widgets[] = { + SND_SOC_DAPM_HP("HP", NULL), + SND_SOC_DAPM_SPK("SPK", NULL), + SND_SOC_DAPM_SPK("RCV", NULL), + SND_SOC_DAPM_SPK("LINE", NULL), + SND_SOC_DAPM_MIC("Headset Mic", NULL), + SND_SOC_DAPM_MIC("Main Mic", NULL), + SND_SOC_DAPM_MIC("Sub Mic", NULL), + + SND_SOC_DAPM_INPUT("S5P RP"), +}; + +const struct snd_soc_dapm_route p10_dapm_routes[] = { + { "HP", NULL, "HPOUT1L" }, + { "HP", NULL, "HPOUT1R" }, + + { "SPK", NULL, "SPKOUTLN" }, + { "SPK", NULL, "SPKOUTLP" }, + { "SPK", NULL, "SPKOUTRN" }, + { "SPK", NULL, "SPKOUTRP" }, + + { "RCV", NULL, "HPOUT2N" }, + { "RCV", NULL, "HPOUT2P" }, + + { "LINE", NULL, "LINEOUT1N" }, + { "LINE", NULL, "LINEOUT1P" }, + + { "IN1LP", NULL, "MICBIAS1" }, + { "IN1LN", NULL, "MICBIAS1" }, + { "MICBIAS1", NULL, "Main Mic" }, + + { "IN1RP", NULL, "MICBIAS1" }, + { "IN1RN", NULL, "MICBIAS1" }, + { "MICBIAS1", NULL, "Sub Mic" }, + + { "IN2RP:VXRP", NULL, "MICBIAS2" }, + { "MICBIAS2", NULL, "Headset Mic" }, + + { "AIF1DAC1L", NULL, "S5P RP" }, + { "AIF1DAC1R", NULL, "S5P RP" }, +}; + +struct wm1811_machine_priv { + struct snd_soc_jack jack; + struct snd_soc_codec *codec; + struct delayed_work mic_work; +}; + +static void wm1811_mic_work(struct work_struct *work) +{ + int report = 0; + struct wm1811_machine_priv *wm1811; + struct snd_soc_codec *codec; + int status; + + wm1811 = container_of(work, struct wm1811_machine_priv, + mic_work.work); + codec = wm1811->codec; + + status = snd_soc_read(codec, WM8958_MIC_DETECT_3); + if (status < 0) { + dev_err(codec->dev, "Failed to read mic detect status: %d\n", + status); + return; + } + + /* If nothing present then clear our statuses */ + if (!(status & WM8958_MICD_STS)) + goto done; + + report = SND_JACK_HEADSET; + + /* Everything else is buttons; just assign slots */ + if (status & 0x4) + report |= SND_JACK_BTN_0; + if (status & 0x8) + report |= SND_JACK_BTN_1; + if (status & 0x10) + report |= SND_JACK_BTN_2; + + if (report & SND_JACK_MICROPHONE) + dev_crit(codec->dev, "Reporting microphone\n"); + if (report & SND_JACK_HEADPHONE) + dev_crit(codec->dev, "Reporting headphone\n"); + if (report & SND_JACK_BTN_0) + dev_crit(codec->dev, "Reporting button 0\n"); + if (report & SND_JACK_BTN_1) + dev_crit(codec->dev, "Reporting button 1\n"); + if (report & SND_JACK_BTN_2) + dev_crit(codec->dev, "Reporting button 2\n"); + +done: + if (!report) + dev_crit(codec->dev, "Reporting open circuit\n"); + + snd_soc_jack_report(&wm1811->jack, report, + SND_JACK_BTN_0 | SND_JACK_BTN_1 | + SND_JACK_BTN_2 | SND_JACK_HEADSET); +} + +static struct snd_soc_dai_driver p10_ext_dai[] = { + { + .name = "p10.cp", + .playback = { + .channels_min = 1, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + .capture = { + .channels_min = 1, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + }, + { + .name = "p10.bt", + .playback = { + .channels_min = 1, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + .capture = { + .channels_min = 1, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, + }, +}; + +static int p10_wm1811_init_paiftx(struct snd_soc_pcm_runtime *rtd) +{ +#if 0 + struct snd_soc_codec *codec = rtd->codec; + struct snd_soc_dapm_context *dapm = &codec->dapm; + + /* HeadPhone */ + snd_soc_dapm_enable_pin(dapm, "HPOUT1R"); + snd_soc_dapm_enable_pin(dapm, "HPOUT1L"); + + /* MicIn */ + snd_soc_dapm_enable_pin(dapm, "IN1LN"); + snd_soc_dapm_enable_pin(dapm, "IN1RN"); + + /* LineIn */ + snd_soc_dapm_enable_pin(dapm, "IN2LN"); + snd_soc_dapm_enable_pin(dapm, "IN2RN"); + + /* Other pins NC */ + snd_soc_dapm_nc_pin(dapm, "HPOUT2P"); + snd_soc_dapm_nc_pin(dapm, "HPOUT2N"); + snd_soc_dapm_nc_pin(dapm, "SPKOUTLN"); + snd_soc_dapm_nc_pin(dapm, "SPKOUTLP"); + snd_soc_dapm_nc_pin(dapm, "SPKOUTRP"); + snd_soc_dapm_nc_pin(dapm, "SPKOUTRN"); + snd_soc_dapm_nc_pin(dapm, "LINEOUT1N"); + snd_soc_dapm_nc_pin(dapm, "LINEOUT1P"); + snd_soc_dapm_nc_pin(dapm, "LINEOUT2N"); + snd_soc_dapm_nc_pin(dapm, "LINEOUT2P"); + snd_soc_dapm_nc_pin(dapm, "IN1LP"); + snd_soc_dapm_nc_pin(dapm, "IN2LP:VXRN"); + snd_soc_dapm_nc_pin(dapm, "IN1RP"); + snd_soc_dapm_nc_pin(dapm, "IN2RP:VXRP"); + + snd_soc_dapm_sync(dapm); + + return 0; +#else + struct wm1811_machine_priv *wm1811; + struct snd_soc_codec *codec = rtd->codec; + struct snd_soc_dai *aif1_dai = rtd->codec_dai; + int ret; + +#ifndef MANAGE_MCLK1 + p10_set_mclk(true); +#endif + + ret = snd_soc_add_controls(codec, p10_controls, + ARRAY_SIZE(p10_controls)); + + ret = snd_soc_dapm_new_controls(&codec->dapm, p10_dapm_widgets, + ARRAY_SIZE(p10_dapm_widgets)); + if (ret != 0) + dev_err(codec->dev, "Failed to add DAPM widgets: %d\n", ret); + + ret = snd_soc_dapm_add_routes(&codec->dapm, p10_dapm_routes, + ARRAY_SIZE(p10_dapm_routes)); + if (ret != 0) + dev_err(codec->dev, "Failed to add DAPM routes: %d\n", ret); + + ret = snd_soc_dai_set_sysclk(aif1_dai, WM8994_SYSCLK_MCLK2, + 32768, SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, "Failed to boot clocking\n"); + + /* Force AIF1CLK on as it will be master for jack detection */ + ret = snd_soc_dapm_force_enable_pin(&codec->dapm, "AIF1CLK"); + if (ret < 0) + dev_err(codec->dev, "Failed to enable AIF1CLK: %d\n", ret); + + ret = snd_soc_dapm_disable_pin(&codec->dapm, "S5P RP"); + if (ret < 0) + dev_err(codec->dev, "Failed to disable S5P RP: %d\n", ret); + + wm1811 = kmalloc(sizeof *wm1811, GFP_KERNEL); + if (!wm1811) { + dev_err(codec->dev, "Failed to allocate memory!"); + return -ENOMEM; + } + + wm1811->codec = codec; + + INIT_DELAYED_WORK(&wm1811->mic_work, wm1811_mic_work); + + ret = snd_soc_jack_new(codec, "P10 Jack", + SND_JACK_HEADSET | SND_JACK_BTN_0 | + SND_JACK_BTN_1 | SND_JACK_BTN_2, + &wm1811->jack); + + if (ret < 0) + dev_err(codec->dev, "Failed to create jack: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_0, KEY_MEDIA); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_MEDIA: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_1, KEY_VOLUMEUP); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_VOLUMEUP: %d\n", ret); + + ret = snd_jack_set_key(wm1811->jack.jack, SND_JACK_BTN_2, + KEY_VOLUMEDOWN); + if (ret < 0) + dev_err(codec->dev, "Failed to set KEY_VOLUMEDOWN: %d\n", ret); + + ret = wm8958_mic_detect(codec, &wm1811->jack, NULL, NULL); + if (ret < 0) + dev_err(codec->dev, "Failed start detection: %d\n", ret); + + return snd_soc_dapm_sync(&codec->dapm); + +#endif +} + +static struct snd_soc_dai_link p10_dai[] = { + { /* Sec_Fifo DAI i/f */ + .name = "Sec_FIFO TX", + .stream_name = "Sec_Dai", + .cpu_dai_name = "samsung-i2s.4", + .codec_dai_name = "wm8994-aif1", +#ifndef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER + .platform_name = "samsung-audio-idma", +#else + .platform_name = "samsung-audio", +#endif + .codec_name = "wm8994-codec", + .init = p10_wm1811_init_paiftx, + .ops = &p10_wm1811_aif1_ops, + }, + { + .name = "P10_WM1811 Voice", + .stream_name = "Voice Tx/Rx", + .cpu_dai_name = "p10.cp", + .codec_dai_name = "wm8994-aif2", + .platform_name = "snd-soc-dummy", + .codec_name = "wm8994-codec", + .ops = &p10_wm1811_aif2_ops, + .ignore_suspend = 1, + }, + { + .name = "P10_WM1811 BT", + .stream_name = "BT Tx/Rx", + .cpu_dai_name = "p10.bt", + .codec_dai_name = "wm8994-aif3", + .platform_name = "snd-soc-dummy", + .codec_name = "wm8994-codec", + .ops = &p10_wm1811_aif3_ops, + .ignore_suspend = 1, + }, + { /* Primary DAI i/f */ + .name = "WM8994 AIF1", + .stream_name = "Pri_Dai", + .cpu_dai_name = "samsung-i2s.0", + .codec_dai_name = "wm8994-aif1", + .platform_name = "samsung-audio", + .codec_name = "wm8994-codec", + .ops = &p10_wm1811_aif1_ops, + }, +}; + +static int p10_card_suspend(struct snd_soc_card *card) +{ + p10_set_mclk(false); + exynos5_sys_powerdown_xxti_control(xclkout_enabled ? 1 : 0); + + return 0; +} + +static int p10_card_resume(struct snd_soc_card *card) +{ + p10_set_mclk(true); + + return 0; +} + +static int p10_set_bias_level(struct snd_soc_card *card, + struct snd_soc_dapm_context *dapm, + enum snd_soc_bias_level level) +{ + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + + if (dapm->dev != aif1_dai->dev) + return 0; + + switch (level) { + case SND_SOC_BIAS_PREPARE: + /* When transitioning to active modes set AIF1 up for + * 44.1kHz so we can always activate AIF1 without reclocking. + */ + p10_start_fll1(aif1_dai); + break; + + default: + break; + } + + return 0; +} + +static int p10_set_bias_level_post(struct snd_soc_card *card, + struct snd_soc_dapm_context *dapm, + enum snd_soc_bias_level level) +{ + struct snd_soc_codec *codec = card->rtd->codec; + struct snd_soc_dai *aif1_dai = card->rtd[0].codec_dai; + struct snd_soc_dai *aif2_dai = card->rtd[1].codec_dai; + int ret; + + if (dapm->dev != aif1_dai->dev) + return 0; + + switch (level) { + case SND_SOC_BIAS_STANDBY: + /* When going idle stop FLL1 and revert to using MCLK2 + * directly for minimum power consumptin for accessory + * detection. + */ + if (card->dapm.bias_level == SND_SOC_BIAS_PREPARE) { + dev_info(aif1_dai->dev, "Moving to STANDBY\n"); + + ret = snd_soc_dai_set_sysclk(aif2_dai, + WM8994_SYSCLK_MCLK2, + 32768, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, "Failed to switch to MCLK2\n"); + + ret = snd_soc_dai_set_pll(aif2_dai, WM8994_FLL2, + 0, 0, 0); + + if (ret < 0) + dev_err(codec->dev, + "Failed to change FLL2\n"); + + ret = snd_soc_dai_set_sysclk(aif1_dai, + WM8994_SYSCLK_MCLK2, + 32768, + SND_SOC_CLOCK_IN); + if (ret < 0) + dev_err(codec->dev, + "Failed to switch to MCLK2\n"); + + ret = snd_soc_dai_set_pll(aif1_dai, WM8994_FLL1, + 0, 0, 0); + if (ret < 0) + dev_err(codec->dev, + "Failed to stop FLL1\n"); + + p10_fll1_active = false; + + p10_set_mclk(false); + } + break; + default: + break; + } + + card->dapm.bias_level = level; + + return 0; +} + +static struct snd_soc_card p10 = { + .name = "P10_WM1811", + .dai_link = p10_dai, + + /* If you want to use sec_fifo device, + * changes the num_link = 2 or ARRAY_SIZE(p10_dai). */ + .num_links = ARRAY_SIZE(p10_dai), + + + .set_bias_level = p10_set_bias_level, + .set_bias_level_post = p10_set_bias_level_post, + + .suspend_post = p10_card_suspend, + .resume_pre = p10_card_resume +}; + +static struct platform_device *p10_snd_device; + +static int __init p10_audio_init(void) +{ + int ret; + +#if 0 + /* EAR_SEL switches SUB and EAR mics - force to SUB mic */ + ret = gpio_request(EAR_SEL, "EAR_SEL"); + if (ret < 0) + pr_err("Failed to request EAR_SEL: %d\n", ret); + + ret = gpio_direction_output(EAR_SEL, 0); + if (ret < 0) + pr_err("Failed to request EAR_SEL: %d\n", ret); +#endif + + p10_snd_device = platform_device_alloc("soc-audio", -1); + if (!p10_snd_device) + return -ENOMEM; + + ret = snd_soc_register_dais(&p10_snd_device->dev, + p10_ext_dai, ARRAY_SIZE(p10_ext_dai)); + if (ret != 0) + pr_err("Failed to register external DAIs: %d\n", ret); + + platform_set_drvdata(p10_snd_device, &p10); + + ret = platform_device_add(p10_snd_device); + if (ret) + platform_device_put(p10_snd_device); + + return ret; +} +module_init(p10_audio_init); + +static void __exit p10_audio_exit(void) +{ + platform_device_unregister(p10_snd_device); +} +module_exit(p10_audio_exit); + +MODULE_AUTHOR("JS. Park <aitdark.park@samsung.com>"); +MODULE_DESCRIPTION("ALSA SoC P10 WM1811"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/pcm.c b/sound/soc/samsung/pcm.c index 9c7e8b4..af4b521 100644 --- a/sound/soc/samsung/pcm.c +++ b/sound/soc/samsung/pcm.c @@ -17,6 +17,9 @@ #include <sound/soc.h> #include <sound/pcm_params.h> +#include <mach/regs-audss.h> +#include <mach/regs-clock.h> + #include <plat/audio.h> #include <plat/dma.h> @@ -128,6 +131,9 @@ struct s3c_pcm_info { struct s3c_dma_params *dma_playback; struct s3c_dma_params *dma_capture; + + u32 suspend_pcmctl; + u32 suspend_pcmclkctl; }; static struct s3c2410_dma_client s3c_pcm_dma_client_out = { @@ -289,6 +295,23 @@ static int s3c_pcm_hw_params(struct snd_pcm_substream *substream, snd_soc_dai_set_dma_data(rtd->cpu_dai, substream, dma_data); + switch (params_channels(params)) { + case 1: + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) + pcm->dma_playback->dma_size = 2; + else + pcm->dma_capture->dma_size = 2; + break; + case 2: + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) + pcm->dma_playback->dma_size = 4; + else + pcm->dma_capture->dma_size = 4; + break; + default: + break; + } + /* Strictly check for sample size */ switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: @@ -309,6 +332,8 @@ static int s3c_pcm_hw_params(struct snd_pcm_substream *substream, /* Set the SCLK divider */ sclk_div = clk_get_rate(clk) / pcm->sclk_per_fs / params_rate(params) / 2 - 1; + if (clk_get_rate(clk) != (pcm->sclk_per_fs*params_rate(params))) + clk_set_rate(clk, pcm->sclk_per_fs*params_rate(params)); clkctl &= ~(S3C_PCM_CLKCTL_SCLKDIV_MASK << S3C_PCM_CLKCTL_SCLKDIV_SHIFT); @@ -451,6 +476,33 @@ static int s3c_pcm_set_sysclk(struct snd_soc_dai *cpu_dai, return 0; } +#ifdef CONFIG_PM +static int s3c_pcm_suspend(struct snd_soc_dai *dai) +{ + struct s3c_pcm_info *pcm = snd_soc_dai_get_drvdata(dai); + void __iomem *regs = pcm->regs; + + pcm->suspend_pcmctl = readl(regs + S3C_PCM_CTL); + pcm->suspend_pcmclkctl = readl(regs + S3C_PCM_CLKCTL); + + return 0; +} + +static int s3c_pcm_resume(struct snd_soc_dai *dai) +{ + struct s3c_pcm_info *pcm = snd_soc_dai_get_drvdata(dai); + void __iomem *regs = pcm->regs; + + writel(pcm->suspend_pcmctl, regs + S3C_PCM_CTL); + writel(pcm->suspend_pcmclkctl, regs + S3C_PCM_CLKCTL); + + return 0; +} +#else +#define s3c_pcm_suspend NULL +#define s3c_pcm_resume NULL +#endif + static struct snd_soc_dai_ops s3c_pcm_dai_ops = { .set_sysclk = s3c_pcm_set_sysclk, .set_clkdiv = s3c_pcm_set_clkdiv, @@ -471,7 +523,7 @@ static struct snd_soc_dai_ops s3c_pcm_dai_ops = { .formats = SNDRV_PCM_FMTBIT_S16_LE, \ }, \ .capture = { \ - .channels_min = 2, \ + .channels_min = 1, \ .channels_max = 2, \ .rates = S3C_PCM_RATES, \ .formats = SNDRV_PCM_FMTBIT_S16_LE, \ @@ -480,10 +532,14 @@ static struct snd_soc_dai_ops s3c_pcm_dai_ops = { struct snd_soc_dai_driver s3c_pcm_dai[] = { [0] = { .name = "samsung-pcm.0", + .suspend = s3c_pcm_suspend, + .resume = s3c_pcm_resume, S3C_PCM_DAI_DECLARE, }, [1] = { .name = "samsung-pcm.1", + .suspend = s3c_pcm_suspend, + .resume = s3c_pcm_resume, S3C_PCM_DAI_DECLARE, }, }; @@ -564,7 +620,7 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev) pcm->pclk = clk_get(&pdev->dev, "pcm"); if (IS_ERR(pcm->pclk)) { dev_err(&pdev->dev, "failed to get pcm_clock\n"); - ret = -ENOENT; + ret = PTR_ERR(pcm->pclk); goto err4; } clk_enable(pcm->pclk); @@ -624,7 +680,7 @@ static __devexit int s3c_pcm_dev_remove(struct platform_device *pdev) static struct platform_driver s3c_pcm_driver = { .probe = s3c_pcm_dev_probe, - .remove = s3c_pcm_dev_remove, + .remove = __devexit_p(s3c_pcm_dev_remove), .driver = { .name = "samsung-pcm", .owner = THIS_MODULE, diff --git a/sound/soc/samsung/regs-i2s-v2.h b/sound/soc/samsung/regs-i2s-v2.h index 5e5e568..93e7696 100644 --- a/sound/soc/samsung/regs-i2s-v2.h +++ b/sound/soc/samsung/regs-i2s-v2.h @@ -25,7 +25,7 @@ #define S5PC1XX_IISCON_SW_RST (1 << 31) #define S5PC1XX_IISCON_FRXOFSTATUS (1 << 26) -#define S5PC1XX_IISCON_FRXORINTEN (1 << 25) +#define S5PC1XX_IISCON_FRXOFINTEN (1 << 25) #define S5PC1XX_IISCON_FTXSURSTAT (1 << 24) #define S5PC1XX_IISCON_FTXSURINTEN (1 << 23) #define S5PC1XX_IISCON_TXSDMAPAUSE (1 << 20) @@ -89,7 +89,7 @@ #define S3C2412_IISMOD_RCLK_512FS (1 << 3) #define S3C2412_IISMOD_RCLK_384FS (2 << 3) #define S3C2412_IISMOD_RCLK_768FS (3 << 3) -#define S3C2412_IISMOD_RCLK_MASK (3 << 3) +#define S3C2412_IISMOD_RCLK_MASK (3 << 3) #define S3C2412_IISMOD_BCLK_32FS (0 << 1) #define S3C2412_IISMOD_BCLK_48FS (1 << 1) #define S3C2412_IISMOD_BCLK_16FS (2 << 1) @@ -101,13 +101,10 @@ #define S3C2412_IISPSR_PSREN (1 << 15) -#define S3C64XX_IISFIC_TX2COUNT(x) (((x) >> 24) & 0xf) -#define S3C64XX_IISFIC_TX1COUNT(x) (((x) >> 16) & 0xf) - #define S3C2412_IISFIC_TXFLUSH (1 << 15) #define S3C2412_IISFIC_RXFLUSH (1 << 7) -#define S3C2412_IISFIC_TXCOUNT(x) (((x) >> 8) & 0xf) -#define S3C2412_IISFIC_RXCOUNT(x) (((x) >> 0) & 0xf) +#define S3C2412_IISFIC_TXCOUNT(x) (((x) >> 8) & 0x7f) +#define S3C2412_IISFIC_RXCOUNT(x) (((x) >> 0) & 0x7f) #define S5PC1XX_IISFICS_TXFLUSH (1 << 15) #define S5PC1XX_IISFICS_TXCOUNT(x) (((x) >> 8) & 0x7f) diff --git a/sound/soc/samsung/s3c-i2s-v2.c b/sound/soc/samsung/s3c-i2s-v2.c index 52074a2b..2e4b68a 100644 --- a/sound/soc/samsung/s3c-i2s-v2.c +++ b/sound/soc/samsung/s3c-i2s-v2.c @@ -659,7 +659,7 @@ int s3c_i2sv2_probe(struct snd_soc_dai *dai, if (IS_ERR(i2s->iis_pclk)) { dev_err(dev, "failed to get iis_clock\n"); iounmap(i2s->regs); - return -ENOENT; + return PTR_ERR(i2s->iis_pclk); } clk_enable(i2s->iis_pclk); diff --git a/sound/soc/samsung/s3c2412-i2s.c b/sound/soc/samsung/s3c2412-i2s.c index 841ab14..a6021b0 100644 --- a/sound/soc/samsung/s3c2412-i2s.c +++ b/sound/soc/samsung/s3c2412-i2s.c @@ -69,15 +69,19 @@ static int s3c2412_i2s_probe(struct snd_soc_dai *dai) s3c2412_i2s.dma_playback = &s3c2412_i2s_pcm_stereo_out; s3c2412_i2s.iis_cclk = clk_get(dai->dev, "i2sclk"); - if (s3c2412_i2s.iis_cclk == NULL) { + if (IS_ERR(s3c2412_i2s.iis_cclk)) { pr_err("failed to get i2sclk clock\n"); iounmap(s3c2412_i2s.regs); - return -ENODEV; + return PTR_ERR(s3c2412_i2s.iis_cclk); } /* Set MPLL as the source for IIS CLK */ - clk_set_parent(s3c2412_i2s.iis_cclk, clk_get(NULL, "mpll")); + if (clk_set_parent(s3c2412_i2s.iis_cclk, clk_get(NULL, "mpll"))) { + pr_err("unable to set parent %s of clock %s.\n", + "mpll", s3c2412_i2c.iis_cclk->name); + return -EINVAL; + } clk_enable(s3c2412_i2s.iis_cclk); s3c2412_i2s.iis_cclk = s3c2412_i2s.iis_pclk; diff --git a/sound/soc/samsung/s3c24xx-i2s.c b/sound/soc/samsung/s3c24xx-i2s.c index 63d8849..21c92e2 100644 --- a/sound/soc/samsung/s3c24xx-i2s.c +++ b/sound/soc/samsung/s3c24xx-i2s.c @@ -383,10 +383,10 @@ static int s3c24xx_i2s_probe(struct snd_soc_dai *dai) return -ENXIO; s3c24xx_i2s.iis_clk = clk_get(dai->dev, "iis"); - if (s3c24xx_i2s.iis_clk == NULL) { + if (IS_ERR(s3c24xx_i2s.iis_clk)) { pr_err("failed to get iis_clock\n"); iounmap(s3c24xx_i2s.regs); - return -ENODEV; + return PTR_ERR(s3c24xx_i2s.iis_clk); } clk_enable(s3c24xx_i2s.iis_clk); diff --git a/sound/soc/samsung/smdk_spdif.c b/sound/soc/samsung/smdk_spdif.c index e8ac961..a5d1808 100644 --- a/sound/soc/samsung/smdk_spdif.c +++ b/sound/soc/samsung/smdk_spdif.c @@ -11,6 +11,7 @@ */ #include <linux/clk.h> +#include <plat/clock.h> #include <sound/soc.h> @@ -29,22 +30,22 @@ static int set_audio_clock_heirachy(struct platform_device *pdev) if (IS_ERR(fout_epll)) { printk(KERN_WARNING "%s: Cannot find fout_epll.\n", __func__); - return -EINVAL; + return PTR_ERR(fout_epll); } mout_epll = clk_get(NULL, "mout_epll"); if (IS_ERR(mout_epll)) { printk(KERN_WARNING "%s: Cannot find mout_epll.\n", __func__); - ret = -EINVAL; + ret = PTR_ERR(mout_epll); goto out1; } - sclk_audio0 = clk_get(&pdev->dev, "sclk_audio"); + sclk_audio0 = clk_get(NULL, "audio-bus"); if (IS_ERR(sclk_audio0)) { printk(KERN_WARNING "%s: Cannot find sclk_audio.\n", __func__); - ret = -EINVAL; + ret = PTR_ERR(sclk_audio0); goto out2; } @@ -52,14 +53,26 @@ static int set_audio_clock_heirachy(struct platform_device *pdev) if (IS_ERR(sclk_spdif)) { printk(KERN_WARNING "%s: Cannot find sclk_spdif.\n", __func__); - ret = -EINVAL; + ret = PTR_ERR(sclk_spdif); goto out3; } /* Set audio clock hierarchy for S/PDIF */ - clk_set_parent(mout_epll, fout_epll); - clk_set_parent(sclk_audio0, mout_epll); - clk_set_parent(sclk_spdif, sclk_audio0); + if (clk_set_parent(mout_epll, fout_epll)) { + pr_err("unable to set parent %s of clock %s.\n", + fout_epll->name, mout_epll->name); + ret = -EINVAL; + } + if (clk_set_parent(sclk_audio0, mout_epll)) { + pr_err("unable to set parent %s of clock %s.\n", + mout_epll->name, sclk_audio0->name); + ret = -EINVAL; + } + if (clk_set_parent(sclk_spdif, sclk_audio0)) { + pr_err("unable to set parent %s of clock %s.\n", + sclk_audio0->name, sclk_spdif->name); + ret = -EINVAL; + } clk_put(sclk_spdif); out3: @@ -84,7 +97,7 @@ static int set_audio_clock_rate(unsigned long epll_rate, fout_epll = clk_get(NULL, "fout_epll"); if (IS_ERR(fout_epll)) { printk(KERN_ERR "%s: failed to get fout_epll\n", __func__); - return -ENOENT; + return PTR_ERR(fout_epll); } clk_set_rate(fout_epll, epll_rate); @@ -93,7 +106,7 @@ static int set_audio_clock_rate(unsigned long epll_rate, sclk_spdif = clk_get(NULL, "sclk_spdif"); if (IS_ERR(sclk_spdif)) { printk(KERN_ERR "%s: failed to get sclk_spdif\n", __func__); - return -ENOENT; + return PTR_ERR(sclk_spdif); } clk_set_rate(sclk_spdif, audio_rate); diff --git a/sound/soc/samsung/smdk_wm8994.c b/sound/soc/samsung/smdk_wm8994.c index e7c1009..bf794a9 100644 --- a/sound/soc/samsung/smdk_wm8994.c +++ b/sound/soc/samsung/smdk_wm8994.c @@ -7,7 +7,21 @@ * option) any later version. */ +#include <linux/platform_device.h> +#include <linux/clk.h> +#include <linux/io.h> + +#include <sound/soc.h> +#include <sound/soc-dapm.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> + +#include <mach/regs-clock.h> + +#include "i2s.h" +#include "s3c-i2s-v2.h" #include "../codecs/wm8994.h" +#include <sound/pcm_params.h> /* * Default CFG switch settings to use this driver: @@ -34,6 +48,29 @@ /* SMDK has a 16.934MHZ crystal attached to WM8994 */ #define SMDK_WM8994_FREQ 16934000 +#ifdef CONFIG_SND_SAMSUNG_I2S_MASTER +static int set_epll_rate(unsigned long rate) +{ + struct clk *fout_epll; + + fout_epll = clk_get(NULL, "fout_epll"); + if (IS_ERR(fout_epll)) { + printk(KERN_ERR "%s: failed to get fout_epll\n", __func__); + return PTR_ERR(fout_epll); + } + + if (rate == clk_get_rate(fout_epll)) + goto out; + + clk_set_rate(fout_epll, rate); +out: + clk_put(fout_epll); + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ + +#ifndef CONFIG_SND_SAMSUNG_I2S_MASTER static int smdk_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { @@ -44,7 +81,9 @@ static int smdk_hw_params(struct snd_pcm_substream *substream, int ret; /* AIF1CLK should be >=3MHz for optimal performance */ - if (params_rate(params) == 8000 || params_rate(params) == 11025) + if (params_format(params) == SNDRV_PCM_FORMAT_S24_LE) + pll_out = params_rate(params) * 384; + else if (params_rate(params) == 8000 || params_rate(params) == 11025) pll_out = params_rate(params) * 512; else pll_out = params_rate(params) * 256; @@ -71,8 +110,128 @@ static int smdk_hw_params(struct snd_pcm_substream *substream, if (ret < 0) return ret; + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_OPCLK, + 0, MOD_OPCLK_PCLK); + if (ret < 0) + return ret; + + return 0; +} +#else /* CONFIG_SND_SAMSUNG_I2S_MASTER */ +static int smdk_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + int bfs, psr, rfs, ret; + unsigned long rclk; + + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_U24: + case SNDRV_PCM_FORMAT_S24: + bfs = 48; + break; + case SNDRV_PCM_FORMAT_U16_LE: + case SNDRV_PCM_FORMAT_S16_LE: + bfs = 32; + break; + default: + return -EINVAL; + } + + switch (params_rate(params)) { + case 16000: + case 22050: + case 24000: + case 32000: + case 44100: + case 48000: + case 88200: + case 96000: + if (bfs == 48) + rfs = 384; + else + rfs = 256; + break; + case 64000: + rfs = 384; + break; + case 8000: + case 11025: + case 12000: + if (bfs == 48) + rfs = 768; + else + rfs = 512; + break; + default: + return -EINVAL; + } + + rclk = params_rate(params) * rfs; + + switch (rclk) { + case 4096000: + case 5644800: + case 6144000: + case 8467200: + case 9216000: + psr = 8; + break; + case 8192000: + case 11289600: + case 12288000: + case 16934400: + case 18432000: + psr = 4; + break; + case 22579200: + case 24576000: + case 33868800: + case 36864000: + psr = 2; + break; + case 67737600: + case 73728000: + psr = 1; + break; + default: + printk("Not yet supported!\n"); + return -EINVAL; + } + + set_epll_rate(rclk * psr); + + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_MCLK1, + rclk, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_CDCLK, + 0, SND_SOC_CLOCK_OUT); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_clkdiv(cpu_dai, SAMSUNG_I2S_DIV_BCLK, bfs); + if (ret < 0) + return ret; + return 0; } +#endif /* CONFIG_SND_SAMSUNG_I2S_MASTER */ /* * SMDK WM8994 DAI operations. @@ -129,20 +288,29 @@ static struct snd_soc_dai_link smdk_dai[] = { .codec_name = "wm8994-codec", .init = smdk_wm8994_init_paiftx, .ops = &smdk_ops, - }, { /* Sec_Fifo Playback i/f */ + }, { /* Sec_Fifo DAI i/f */ .name = "Sec_FIFO TX", .stream_name = "Sec_Dai", .cpu_dai_name = "samsung-i2s.4", .codec_dai_name = "wm8994-aif1", +#ifdef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER .platform_name = "samsung-audio", +#else + .platform_name = "samsung-audio-idma", +#endif .codec_name = "wm8994-codec", + .init = smdk_wm8994_init_paiftx, .ops = &smdk_ops, }, + }; static struct snd_soc_card smdk = { .name = "SMDK-I2S", .dai_link = smdk_dai, + + /* If you want to use sec_fifo device, + * changes the num_link = 2 or ARRAY_SIZE(smdk_dai). */ .num_links = ARRAY_SIZE(smdk_dai), }; diff --git a/sound/soc/samsung/smdk_wm8994pcm.c b/sound/soc/samsung/smdk_wm8994pcm.c new file mode 100644 index 0000000..a3cd2c4 --- /dev/null +++ b/sound/soc/samsung/smdk_wm8994pcm.c @@ -0,0 +1,242 @@ +/* + * smdk_wm8994.c + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include <linux/clk.h> + +#include <sound/soc.h> +#include <sound/soc-dapm.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> + +#include "../codecs/wm8994.h" +#include "pcm.h" + + /* + * Default CFG switch settings to use this driver: + * SMDKV310: CFG5-1000, CFG7-111111 + */ + + /* + * Configure audio route as :- + * $ amixer sset 'DAC1' on,on + * $ amixer sset 'Right Headphone Mux' 'DAC' + * $ amixer sset 'Left Headphone Mux' 'DAC' + * $ amixer sset 'DAC1R Mixer AIF1.1' on + * $ amixer sset 'DAC1L Mixer AIF1.1' on + * $ amixer sset 'IN2L' on + * $ amixer sset 'IN2L PGA IN2LN' on + * $ amixer sset 'MIXINL IN2L' on + * $ amixer sset 'AIF1ADC1L Mixer ADC/DMIC' on + * $ amixer sset 'IN2R' on + * $ amixer sset 'IN2R PGA IN2RN' on + * $ amixer sset 'MIXINR IN2R' on + * $ amixer sset 'AIF1ADC1R Mixer ADC/DMIC' on + */ + +/* SMDK has a 16.934MHZ crystal attached to WM8994 */ +#define SMDK_WM8994_FREQ 16934000 + +#ifdef CONFIG_SND_SAMSUNG_PCM_USE_EPLL +static int set_epll_rate(unsigned long rate) +{ + struct clk *fout_epll; + + fout_epll = clk_get(NULL, "fout_epll"); + if (IS_ERR(fout_epll)) { + printk(KERN_ERR "%s: failed to get fout_epll\n", __func__); + return PTR_ERR(fout_epll); + } + + if (rate == clk_get_rate(fout_epll)) + goto out; + + clk_set_rate(fout_epll, rate); +out: + clk_put(fout_epll); + + return 0; +} +#endif /* CONFIG_SND_SAMSUNG_PCM_USE_EPLL */ + +static int smdk_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + struct snd_soc_dai *codec_dai = rtd->codec_dai; +#ifdef CONFIG_SND_SAMSUNG_PCM_USE_EPLL + unsigned long epll_out_rate; +#endif /* CONFIG_SND_SAMSUNG_PCM_USE_EPLL */ + int rfs, ret; + +#ifdef CONFIG_SND_SAMSUNG_PCM_USE_EPLL + switch (params_rate(params)) { + case 8000: + case 12000: + case 16000: + case 24000: + case 32000: + case 48000: + case 64000: + case 96000: + epll_out_rate = 49152000; + break; + case 11025: + case 22050: + case 44100: + case 88200: + epll_out_rate = 67737600; + break; + default: + printk(KERN_ERR "%s:%d Sampling Rate %u not supported!\n", + __func__, __LINE__, params_rate(params)); + return -EINVAL; + } +#endif /* CONFIG_SND_SAMSUNG_PCM_USE_EPLL */ + + switch (params_rate(params)) { + case 16000: + case 22050: + case 22025: + case 32000: + case 44100: + case 48000: + case 96000: + case 24000: +#ifdef CONFIG_SND_SAMSUNG_PCM_USE_EPLL + rfs = 256; +#else /* CONFIG_SND_SAMSUNG_PCM_USE_EPLL */ + rfs = 384; +#endif /* CONFIG_SND_SAMSUNG_PCM_USE_EPLL */ + break; + case 64000: + rfs = 384; + break; + case 8000: + case 11025: + case 12000: + rfs = 512; + break; + case 88200: + rfs = 128; + break; + default: + printk(KERN_ERR "%s:%d Sampling Rate %u not supported!\n", + __func__, __LINE__, params_rate(params)); + return -EINVAL; + } + + /* Set the codec DAI configuration */ + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B + | SND_SOC_DAIFMT_IB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + + /* Set the cpu DAI configuration */ + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_B + | SND_SOC_DAIFMT_IB_NF + | SND_SOC_DAIFMT_CBS_CFS); + if (ret < 0) + return ret; + +#ifdef CONFIG_SND_SAMSUNG_PCM_USE_EPLL + /* + * Samsung SoCs PCM has no MCLK(rclk) output support, so codec + * should have to make its own MCLK with FLL(or PLL) from other + * clock source. + */ + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL1, + params_rate(params)*rfs, + SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL1, + WM8994_FLL_SRC_MCLK1, + SMDK_WM8994_FREQ, + params_rate(params)*rfs); + if (ret < 0) + return ret; +#endif /* CONFIG_SND_SAMSUNG_PCM_USE_EPLL */ + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_MCLK1, + params_rate(params)*rfs, + SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + +#ifdef CONFIG_SND_SAMSUNG_PCM_USE_EPLL + /* Set EPLL clock rate */ + ret = set_epll_rate(epll_out_rate); + if (ret < 0) + return ret; +#endif /* CONFIG_SND_SAMSUNG_PCM_USE_EPLL */ + + /* Set SCLK_DIV for making bclk */ + ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C_PCM_SCLK_PER_FS, rfs); + if (ret < 0) + return ret; + + return 0; +} + +/* + * SMDK WM8994 DAI operations. + */ +static struct snd_soc_ops smdk_ops = { + .hw_params = smdk_hw_params, +}; + +static struct snd_soc_dai_link smdk_dai[] = { + { /* Primary DAI i/f */ + .name = "WM8994 AIF1", + .stream_name = "PCM Tx/Rx", + .cpu_dai_name = "samsung-pcm.0", + .codec_dai_name = "wm8994-aif1", + .platform_name = "samsung-audio", + .codec_name = "wm8994-codec", + .ops = &smdk_ops, + }, +}; + +static struct snd_soc_card smdk = { + .name = "SMDK-PCM", + .dai_link = smdk_dai, + .num_links = ARRAY_SIZE(smdk_dai), +}; + +static struct platform_device *smdk_snd_device; + +static int __init smdk_audio_init(void) +{ + int ret; + + smdk_snd_device = platform_device_alloc("soc-audio", -1); + if (!smdk_snd_device) + return -ENOMEM; + + platform_set_drvdata(smdk_snd_device, &smdk); + + ret = platform_device_add(smdk_snd_device); + if (ret) + platform_device_put(smdk_snd_device); + + return ret; +} +module_init(smdk_audio_init); + +static void __exit smdk_audio_exit(void) +{ + platform_device_unregister(smdk_snd_device); +} +module_exit(smdk_audio_exit); + +MODULE_DESCRIPTION("ALSA SoC SMDK WM8994"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/spdif.c b/sound/soc/samsung/spdif.c index 28c491d..a56fb31 100644 --- a/sound/soc/samsung/spdif.c +++ b/sound/soc/samsung/spdif.c @@ -393,7 +393,7 @@ static __devinit int spdif_probe(struct platform_device *pdev) spdif->pclk = clk_get(&pdev->dev, "spdif"); if (IS_ERR(spdif->pclk)) { dev_err(&pdev->dev, "failed to get peri-clock\n"); - ret = -ENOENT; + ret = PTR_ERR(spdif->pclk); goto err0; } clk_enable(spdif->pclk); @@ -401,7 +401,7 @@ static __devinit int spdif_probe(struct platform_device *pdev) spdif->sclk = clk_get(&pdev->dev, "sclk_spdif"); if (IS_ERR(spdif->sclk)) { dev_err(&pdev->dev, "failed to get internal source clock\n"); - ret = -ENOENT; + ret = PTR_ERR(spdif->sclk); goto err1; } clk_enable(spdif->sclk); diff --git a/sound/soc/samsung/srp-types.h b/sound/soc/samsung/srp-types.h new file mode 100644 index 0000000..abfd86c --- /dev/null +++ b/sound/soc/samsung/srp-types.h @@ -0,0 +1,29 @@ +/* linux/sound/soc/samsung/srp-type.h + * + * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. + * http://www.samsung.com/ + * + * EXYNOS - SRP Type definitions + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#ifndef __SND_SOC_SAMSUNG_SRP_TYPE_H +#define __SND_SOC_SAMSUNG_SRP_TYPE_H + +#if defined(CONFIG_SND_SAMSUNG_RP) +#include "srp_ulp/srp_reg.h" +#elif defined(CONFIG_SND_SAMSUNG_ALP) +#include "srp_alp/srp_alp_reg.h" +#endif + +enum { + IS_RUNNING, + IS_OPENED, +}; + +extern int srp_get_status(int cmd); + +#endif /* __SND_SOC_SAMSUNG_SRP_TYPE_H */ diff --git a/sound/soc/samsung/srp_alp/Kconfig b/sound/soc/samsung/srp_alp/Kconfig new file mode 100644 index 0000000..338b6b4 --- /dev/null +++ b/sound/soc/samsung/srp_alp/Kconfig @@ -0,0 +1,5 @@ +config SND_SAMSUNG_ALP + bool "ALP Audio support" + select SND_SOC_SAMSUNG_I2S_SEC + help + Say Y if you want to support ALP audio. diff --git a/sound/soc/samsung/srp_alp/Makefile b/sound/soc/samsung/srp_alp/Makefile new file mode 100644 index 0000000..ee16725 --- /dev/null +++ b/sound/soc/samsung/srp_alp/Makefile @@ -0,0 +1,3 @@ +# ALP(Advanced Low Power Audio) Solution Support with SRP +obj-$(CONFIG_SND_SAMSUNG_ALP) += srp_alp.o + diff --git a/sound/soc/samsung/srp_alp/srp_alp.c b/sound/soc/samsung/srp_alp/srp_alp.c new file mode 100644 index 0000000..900dfff --- /dev/null +++ b/sound/soc/samsung/srp_alp/srp_alp.c @@ -0,0 +1,1296 @@ +/* sound/soc/samsung/alp/srp_alp.c + * + * SRP Audio driver for Samsung Exynos + * + * Copyright (c) 2011 Samsung Electronics + * http://www.samsungsemi.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#include <linux/errno.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/slab.h> +#include <linux/input.h> +#include <linux/init.h> +#include <linux/mm.h> +#include <linux/serio.h> +#include <linux/time.h> +#include <linux/platform_device.h> +#include <linux/miscdevice.h> +#include <linux/clk.h> +#include <linux/mutex.h> +#include <linux/vmalloc.h> +#include <linux/delay.h> +#include <linux/sched.h> +#include <linux/dma-mapping.h> +#include <linux/io.h> +#include <linux/irq.h> +#include <linux/uaccess.h> +#include <linux/cma.h> + +#include <mach/hardware.h> +#include <mach/irqs.h> +#include <mach/map.h> +#include <plat/cpu.h> + +#include "../srp-types.h" +#include "srp_alp.h" +#include "srp_alp_reg.h" +#include "srp_alp_fw.h" +#include "srp_alp_ioctl.h" +#include "srp_alp_error.h" + +#include "../idma.h" +#include "../audss.h" + +static struct srp_info srp; +static DEFINE_MUTEX(srp_mutex); +static DECLARE_WAIT_QUEUE_HEAD(read_wq); +static DECLARE_WAIT_QUEUE_HEAD(decinfo_wq); + +int srp_get_status(int cmd) +{ + return (cmd == IS_RUNNING) ? srp.is_running : srp.is_opened; +} + +inline bool srp_fw_use_memcpy(void) +{ + return soc_is_exynos4210() ? false : true; +} + +static void srp_obuf_elapsed(void) +{ + srp.obuf_ready = srp.obuf_ready ? 0 : 1; + srp.obuf_next = srp.obuf_next ? 0 : 1; +} + +static void srp_wait_for_pending(void) +{ + unsigned long deadline = jiffies + HZ / 10; + + do { + /* Wait for SRP Pending */ + if (readl(srp.commbox + SRP_PENDING)) + break; + + msleep_interruptible(5); + } while (time_before(jiffies, deadline)); + + srp_info("Pending status[%s]\n", + readl(srp.commbox + SRP_PENDING) ? "STALL" : "RUN"); +} + +static void srp_pending_ctrl(int ctrl) +{ + unsigned int srp_ctrl = readl(srp.commbox + SRP_PENDING); + + if (ctrl == srp_ctrl) { + srp_info("Already set SRP pending control[%d]\n", ctrl); + + if (ctrl) + return; + else + srp_wait_for_pending(); + } + + writel(ctrl, srp.commbox + SRP_PENDING); + srp.is_pending = ctrl; + + srp_debug("Current SRP Status[%s]\n", + readl(srp.commbox + SRP_PENDING) ? "STALL" : "RUN"); +} + +static void srp_request_intr_mode(int mode) +{ + unsigned long deadline; + unsigned int pwr_mode = readl(srp.commbox + SRP_POWER_MODE); + unsigned int intr_en = readl(srp.commbox + SRP_INTREN); + unsigned int intr_msk = readl(srp.commbox + SRP_INTRMASK); + unsigned int intr_src = readl(srp.commbox + SRP_INTRSRC); + unsigned int intr_irq = readl(srp.commbox + SRP_INTRIRQ); + unsigned int check_mode = 0; + + pwr_mode &= ~SRP_POWER_MODE_MASK; + intr_en &= ~SRP_INTR_DI; + intr_msk |= (SRP_ARM_INTR_MASK | SRP_DMA_INTR_MASK | SRP_TMR_INTR_MASK); + intr_src &= ~(SRP_INTRSRC_MASK); + intr_irq &= ~(SRP_INTRIRQ_MASK); + + switch (mode) { + case SUSPEND: + pwr_mode &= ~SRP_POWER_MODE_TRIGGER; + check_mode = SRP_SUSPENED_CHECKED; + break; + case RESUME: + pwr_mode |= SRP_POWER_MODE_TRIGGER; + check_mode = 0; + break; + case RESET: + pwr_mode |= SRP_SW_RESET_TRIGGER; + check_mode = SRP_SW_RESET_DONE; + break; + default: + srp_err("Not support request mode to srp\n"); + break; + } + + intr_en |= SRP_INTR_EN; + intr_msk &= ~SRP_ARM_INTR_MASK; + intr_src |= SRP_ARM_INTR_SRC; + + if (soc_is_exynos5250() && (samsung_rev() >= EXYNOS5250_REV_1_0)) { + intr_irq |= SRP_INTRIRQ_CONF; + writel(intr_irq, srp.commbox + SRP_INTRIRQ); + } + + writel(pwr_mode, srp.commbox + SRP_POWER_MODE); + writel(intr_en, srp.commbox + SRP_INTREN); + writel(intr_msk, srp.commbox + SRP_INTRMASK); + writel(intr_src, srp.commbox + SRP_INTRSRC); + + srp_debug("PWR_MODE[0x%x], INTREN[0x%x], INTRMSK[0x%x], INTRSRC[0x%x]\n", + readl(srp.commbox + SRP_POWER_MODE), + readl(srp.commbox + SRP_INTREN), + readl(srp.commbox + SRP_INTRMASK), + readl(srp.commbox + SRP_INTRSRC)); + + if (check_mode) { + deadline = jiffies + (HZ / 50); + srp_pending_ctrl(RUN); + do { + /* Waiting for completed suspended mode */ + if ((readl(srp.commbox + SRP_POWER_MODE) + & check_mode)) + break; + } while (time_before(jiffies, deadline)); + srp_pending_ctrl(STALL); + + /* Clear Suspend mode */ + pwr_mode = readl(srp.commbox + SRP_POWER_MODE); + pwr_mode &= ~check_mode; + writel(pwr_mode, srp.commbox + SRP_POWER_MODE); + } +} + +static void srp_check_stream_info(void) +{ + if (!srp.dec_info.channels) { + srp.dec_info.channels = readl(srp.commbox + + SRP_ARM_INTERRUPT_CODE); + srp.dec_info.channels >>= SRP_ARM_INTR_CODE_CHINF_SHIFT; + srp.dec_info.channels &= SRP_ARM_INTR_CODE_CHINF_MASK; + } + + if (!srp.dec_info.sample_rate) { + srp.dec_info.sample_rate = readl(srp.commbox + + SRP_ARM_INTERRUPT_CODE); + srp.dec_info.sample_rate >>= SRP_ARM_INTR_CODE_SRINF_SHIFT; + srp.dec_info.sample_rate &= SRP_ARM_INTR_CODE_SRINF_MASK; + } +} + +static void srp_flush_ibuf(void) +{ + memset(srp.ibuf0, 0xFF, srp.ibuf_size); + memset(srp.ibuf1, 0xFF, srp.ibuf_size); +} + +static void srp_flush_obuf(void) +{ + void __iomem *obuf0, *obuf1; + unsigned long n; + + if (soc_is_exynos5250()) { + memset(srp.obuf0, 0, srp.obuf_size); + memset(srp.obuf1, 0, srp.obuf_size); + } else { + obuf0 = srp.dmem + srp.obuf_offset; + obuf1 = obuf0 + srp.obuf_size; + + for (n = 0; n < srp.obuf_size; n += 4) { + writel(0, obuf0 + n); + writel(0, obuf1 + n); + } + } +} +static void srp_commbox_init(void) +{ + unsigned int pwr_mode = readl(srp.commbox + SRP_POWER_MODE); + unsigned int intr_en = readl(srp.commbox + SRP_INTREN); + unsigned int intr_msk = readl(srp.commbox + SRP_INTRMASK); + unsigned int intr_src = readl(srp.commbox + SRP_INTRSRC); + + unsigned int reg = 0; + + writel(reg, srp.commbox + SRP_FRAME_INDEX); + writel(reg, srp.commbox + SRP_INTERRUPT); + + /* Support Mono Decoding */ + writel(SRP_ARM_INTR_CODE_SUPPORT_MONO, srp.commbox + SRP_ARM_INTERRUPT_CODE); + + /* Init Ibuf information */ + if (!soc_is_exynos5250()) { + writel(srp.ibuf0_pa, srp.commbox + SRP_BITSTREAM_BUFF_DRAM_ADDR0); + writel(srp.ibuf1_pa, srp.commbox + SRP_BITSTREAM_BUFF_DRAM_ADDR1); + writel(srp.ibuf_size, srp.commbox + SRP_BITSTREAM_BUFF_DRAM_SIZE); + } + + /* Output PCM control : 16bit */ + writel(SRP_CFGR_OUTPUT_PCM_16BIT, srp.commbox + SRP_CFGR); + + /* Bit stream size : Max */ + writel(BITSTREAM_SIZE_MAX, srp.commbox + SRP_BITSTREAM_SIZE); + + /* Init Read bitstream size */ + writel(reg, srp.commbox + SRP_READ_BITSTREAM_SIZE); + + /* Configure fw address */ + writel(srp.fw_info.vliw_pa, srp.commbox + SRP_CODE_START_ADDR); + writel(srp.fw_info.cga_pa, srp.commbox + SRP_CONF_START_ADDR); + writel(srp.fw_info.data_pa, srp.commbox + SRP_DATA_START_ADDR); + + /* Initialize Suspended mode */ + pwr_mode &= ~SRP_POWER_MODE_MASK; + intr_en &= ~SRP_INTR_EN; + intr_msk |= SRP_INTR_MASK; + intr_src &= ~SRP_INTRSRC_MASK; + + writel(pwr_mode, srp.commbox + SRP_POWER_MODE); + writel(intr_en, srp.commbox + SRP_INTREN); + writel(intr_msk, srp.commbox + SRP_INTRMASK); + writel(intr_src, srp.commbox + SRP_INTRSRC); +} + +static void srp_commbox_deinit(void) +{ + unsigned int reg = 0; + + srp.audss_clk_enable(true); + + srp_wait_for_pending(); + srp.decoding_started = 0; + writel(reg, srp.commbox + SRP_INTERRUPT); +} + +static void srp_clr_fw_data(void) +{ + memset(srp.fw_info.data, 0, DMEM_SIZE); + memcpy(srp.fw_info.data, srp_fw_data, sizeof(srp_fw_data)); +} + +static void srp_fw_download(void) +{ + void *pdmem; + unsigned long *psrc; + unsigned long dmemsz; + unsigned long n; + unsigned int reg = 0; + + /* Fill I-CACHE/DMEM */ + switch (srp_fw_use_memcpy()) { + case false: /* Should be write by the 1word */ + psrc = (unsigned long *) srp.fw_info.vliw; + for (n = 0; n < ICACHE_SIZE; n += 4, psrc++) + writel(ENDIAN_CHK_CONV(*psrc), srp.icache + n); + + psrc = (unsigned long *) srp.fw_info.data; + for (n = 0; n < DMEM_SIZE; n += 4, psrc++) + writel(ENDIAN_CHK_CONV(*psrc), srp.dmem + n); + break; + case true: /* Support to memcpy */ + psrc = (unsigned long *) srp.fw_info.vliw; + memcpy(srp.icache, psrc, ICACHE_SIZE); + + psrc = !soc_is_exynos5250() ? (unsigned long *) srp.fw_info.data + : (unsigned long *) (srp.fw_info.data + + DATA_OFFSET); + pdmem = !soc_is_exynos5250() ? (void *) srp.dmem + : (void *) (srp.dmem + DATA_OFFSET); + + dmemsz = !soc_is_exynos5250() ? DMEM_SIZE : (DMEM_SIZE - DATA_OFFSET); + memcpy(pdmem, psrc, dmemsz); + break; + } + + /* Fill CMEM : Should be write by the 1word(32bit) */ + psrc = (unsigned long *) srp.fw_info.cga; + for (n = 0; n < CMEM_SIZE; n += 4, psrc++) + writel(ENDIAN_CHK_CONV(*psrc), srp.cmem + n); + + reg = readl(srp.commbox + SRP_CFGR); + reg |= (SRP_CFGR_BOOT_INST_INT_CC | /* Fetchs instruction from I$ */ + SRP_CFGR_USE_ICACHE_MEM | /* SRP can access I$ */ + SRP_CFGR_USE_I2S_INTR | + SRP_CFGR_FLOW_CTRL_OFF); + + writel(reg, srp.commbox + SRP_CFGR); +} + +static void srp_set_default_fw(void) +{ + /* Initialize Commbox & default parameters */ + srp_commbox_init(); + + srp_clr_fw_data(); + + /* Download default Firmware */ + srp_fw_download(); +} + +static void srp_reset(void) +{ + unsigned int reg = 0; + + srp_debug("Reset\n"); + + /* RESET */ + if (soc_is_exynos5250()) { + if (!srp.first_init) { + writel(reg, srp.commbox + SRP_CONT); + srp.first_init = 1; + } else { + /* Request sw reset */ + srp_request_intr_mode(RESET); + } + } else + writel(reg, srp.commbox + SRP_CONT); + + writel(reg, srp.commbox + SRP_INTERRUPT); + + /* Store Total Count */ + srp.decoding_started = 0; + + /* Next IBUF is IBUF0 */ + srp.ibuf_next = 0; + srp.ibuf_empty[0] = 1; + srp.ibuf_empty[1] = 1; + + srp.obuf_next = 1; + srp.obuf_ready = 0; + srp.obuf_fill_done[0] = 0; + srp.obuf_fill_done[1] = 0; + srp.obuf_copy_done[0] = 0; + srp.obuf_copy_done[1] = 0; + + srp.wbuf_pos = 0; + srp.wbuf_fill_size = 0; + + srp.set_bitstream_size = 0; + srp.stop_after_eos = 0; + srp.wait_for_eos = 0; + srp.prepare_for_eos = 0; + srp.play_done = 0; + srp.pcm_size = 0; +} + +static void srp_fill_ibuf(void) +{ + unsigned long fill_size = 0; + + if (!srp.wbuf_pos) + return; + + if (srp.wbuf_pos >= srp.ibuf_size) { + fill_size = srp.ibuf_size; + srp.wbuf_pos -= fill_size; + } else { + if (srp.wait_for_eos) { + fill_size = srp.wbuf_pos; + memset(&srp.wbuf[fill_size], 0xFF, + srp.ibuf_size - fill_size); + srp.wbuf_pos = 0; + } + } + + if (srp.ibuf_next == 0) { + memcpy(srp.ibuf0, srp.wbuf, srp.ibuf_size); + srp_debug("Fill IBUF0 (%lu)\n", fill_size); + srp.ibuf_empty[0] = 0; + srp.ibuf_next = 1; + } else { + memcpy(srp.ibuf1, srp.wbuf, srp.ibuf_size); + srp_debug("Fill IBUF1 (%lu)\n", fill_size); + srp.ibuf_empty[1] = 0; + srp.ibuf_next = 0; + } + + if (srp.wbuf_pos) + memcpy(srp.wbuf, &srp.wbuf[srp.ibuf_size], srp.wbuf_pos); +} + +static ssize_t srp_write(struct file *file, const char *buffer, + size_t size, loff_t *pos) +{ + unsigned long start_threshold = 0; + ssize_t ret = 0; + + srp_debug("Write(%d bytes)\n", size); + + srp.audss_clk_enable(true); + + if (!srp.initialized) { + srp_set_default_fw(); + srp_flush_ibuf(); + srp_flush_obuf(); + srp_reset(); + srp.initialized = true; + } + + if (srp.obuf_fill_done[srp.obuf_ready] + && srp.obuf_copy_done[srp.obuf_ready]) { + srp.obuf_fill_done[srp.obuf_ready] = 0; + srp.obuf_copy_done[srp.obuf_ready] = 0; + srp_obuf_elapsed(); + } + + if (srp.wbuf_pos + size > WBUF_SIZE) { + srp_debug("Occured Ibuf Overflow!!\n"); + ret = SRP_ERROR_IBUF_OVERFLOW; + goto exit_func; + } + + if (copy_from_user(&srp.wbuf[srp.wbuf_pos], buffer, size)) { + srp_err("Failed to copy_from_user!!\n"); + ret = -EFAULT; + goto exit_func; + } + + srp.wbuf_pos += size; + srp.wbuf_fill_size += size; + + start_threshold = srp.decoding_started + ? srp.ibuf_size : START_THRESHOLD; + + if (srp.wbuf_pos < start_threshold) { + ret = size; + goto exit_func; + } + + mutex_lock(&srp_mutex); + if (!srp.decoding_started) { + srp_fill_ibuf(); + srp_info("First Start decoding!!\n"); + srp_pending_ctrl(RUN); + srp.decoding_started = 1; + } + mutex_unlock(&srp_mutex); + +exit_func: + return ret; +} + +static ssize_t srp_read(struct file *file, char *buffer, + size_t size, loff_t *pos) +{ + struct srp_buf_info *argp = (struct srp_buf_info *)buffer; + unsigned char *mmapped_obuf0 = srp.obuf_info.addr; + unsigned char *mmapped_obuf1 = srp.obuf_info.addr + srp.obuf_size; + int ret = 0; + + srp_debug("Entered Get Obuf in PCM function\n"); + + if (srp.prepare_for_eos) { + srp.obuf_fill_done[srp.obuf_ready] = 0; + srp_debug("Elapsed Obuf[%d] after Send EOS\n", srp.obuf_ready); + if (srp.pm_resumed) + srp.pm_suspended = false; + + srp_pending_ctrl(RUN); + srp_obuf_elapsed(); + } + + if (srp.wait_for_eos) + srp.prepare_for_eos = 1; + + if (srp.decoding_started) { + if (srp.obuf_copy_done[srp.obuf_ready] && !srp.wait_for_eos) { + srp_debug("Wrong ordering read() OBUF[%d] int!!!\n", srp.obuf_ready); + srp.pcm_info.size = 0; + return copy_to_user(argp, &srp.pcm_info, sizeof(struct srp_buf_info)); + } + + if (srp.obuf_fill_done[srp.obuf_ready]) { + srp_debug("Already filled OBUF[%d]\n", srp.obuf_ready); + } else { + srp_debug("Waiting for filling OBUF[%d]\n", srp.obuf_ready); + ret = wait_event_interruptible_timeout(read_wq, + srp.obuf_fill_done[srp.obuf_ready], HZ / 2); + if (!ret) { + srp_err("Couldn't occurred OBUF[%d] int!!!\n", srp.obuf_ready); + srp.pcm_info.size = 0; + return copy_to_user(argp, &srp.pcm_info, sizeof(struct srp_buf_info)); + } + } + } else { + srp_debug("not prepared not yet! OBUF[%d]\n", srp.obuf_ready); + srp.pcm_info.size = 0; + return copy_to_user(argp, &srp.pcm_info, sizeof(struct srp_buf_info)); + } + + srp.pcm_info.addr = srp.obuf_ready ? mmapped_obuf1 : mmapped_obuf0; + srp.pcm_info.size = srp.pcm_size; + srp.pcm_info.num = srp.obuf_info.num; + + if (srp.play_done && !srp.pcm_info.size) { + srp_info("Stop EOS by play done\n"); + srp.pcm_info.size = 0; + srp.stop_after_eos = 1; + } + + ret = copy_to_user(argp, &srp.pcm_info, sizeof(struct srp_buf_info)); + srp_debug("Return OBUF Num[%d] fill size %d\n", + srp.obuf_ready, srp.pcm_info.size); + + srp.obuf_copy_done[srp.obuf_ready] = 1; + + if (!srp.obuf_fill_done[srp.obuf_next] && !srp.wait_for_eos) { + srp_debug("Decoding start for filling OBUF[%d]\n", srp.obuf_next); + if (srp.pm_resumed) + srp.pm_suspended = false; + + srp_pending_ctrl(RUN); + } + + return ret; +} + +static void srp_set_stream_size(void) +{ + /* Leave stream size max, if data is available */ + if (srp.wbuf_pos || srp.set_bitstream_size) + return; + + srp.set_bitstream_size = srp.wbuf_fill_size; + writel(srp.set_bitstream_size, srp.commbox + SRP_BITSTREAM_SIZE); + + srp_info("Set bitstream size = %ld\n", srp.set_bitstream_size); +} + +static long srp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + struct srp_buf_info *argp = (struct srp_buf_info *)arg; + unsigned long val = 0; + long ret = 0; + + mutex_lock(&srp_mutex); + + switch (cmd) { + case SRP_INIT: + srp.initialized = false; + srp_debug("SRP_INIT\n"); + break; + + case SRP_DEINIT: + srp_debug("SRP DEINIT\n"); + srp_commbox_deinit(); + break; + + case SRP_GET_MMAP_SIZE: + srp.obuf_info.mmapped_size = srp.obuf_size * srp.obuf_num + srp.obuf_offset; + val = srp.obuf_info.mmapped_size; + ret = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + + srp_debug("OBUF_MMAP_SIZE = %ld\n", val); + break; + + case SRP_FLUSH: + srp_debug("SRP_FLUSH\n"); + srp_commbox_deinit(); + srp_set_default_fw(); + srp_flush_ibuf(); + srp_flush_obuf(); + srp_reset(); + break; + + case SRP_GET_IBUF_INFO: + srp.ibuf_info.addr = (void *) srp.wbuf; + srp.ibuf_info.size = srp.ibuf_size * 2; + srp.ibuf_info.num = srp.ibuf_num; + + ret = copy_to_user(argp, &srp.ibuf_info, + sizeof(struct srp_buf_info)); + break; + + case SRP_GET_OBUF_INFO: + ret = copy_from_user(&srp.obuf_info, argp, + sizeof(struct srp_buf_info)); + if (!ret) { + srp.obuf_info.addr = srp.obuf_info.mmapped_addr + + srp.obuf_offset; + srp.obuf_info.size = srp.obuf_size; + srp.obuf_info.num = srp.obuf_num; + } + + ret = copy_to_user(argp, &srp.obuf_info, + sizeof(struct srp_buf_info)); + break; + + case SRP_SEND_EOS: + srp_info("Send End-Of-Stream\n"); + if (srp.wbuf_fill_size == 0) { + srp.stop_after_eos = 1; + } else if (srp.wbuf_fill_size < srp.ibuf_size * 3) { + srp_debug("%ld, smaller than ibuf_size * 3\n", srp.wbuf_fill_size); + srp.wait_for_eos = 1; + srp_fill_ibuf(); + srp_set_stream_size(); + srp_pending_ctrl(RUN); + srp.decoding_started = 1; + } else if (srp.wbuf_fill_size >= srp.ibuf_size * 3) { + srp_debug("%ld Bigger than ibuf * 3!!\n", srp.wbuf_fill_size); + srp.wait_for_eos = 1; + } + break; + + case SRP_STOP_EOS_STATE: + val = srp.stop_after_eos; + + srp_debug("Stop [%s]\n", val == 1 ? "ON" : "OFF"); + if (val) { + srp_info("Stop at EOS [0x%08lX:0x%08X]\n", + srp.wbuf_pos, + readl(srp.commbox + SRP_READ_BITSTREAM_SIZE)); + + if (!soc_is_exynos5250()) + srp.decoding_started = 0; + } + val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + break; + + case SRP_GET_DEC_INFO: + if (!srp.decoding_started) { + srp.dec_info.sample_rate = 0; + srp.dec_info.channels = 0; + } else { + if (srp.dec_info.sample_rate && srp.dec_info.channels) { + srp_info("Already get dec info!\n"); + } else { + ret = wait_event_interruptible_timeout(decinfo_wq, + srp.dec_info.channels != 0, HZ / 2); + if (!ret) { + srp_err("Couldn't Get Decoding info!!!\n"); + ret = SRP_ERROR_GETINFO_FAIL; + } + } + + srp_info("SampleRate[%d], Channels[%d]\n", + srp.dec_info.sample_rate, + srp.dec_info.channels); + } + + val = copy_to_user((struct srp_dec_info *)arg, &srp.dec_info, + sizeof(struct srp_dec_info)); + break; + } + + mutex_unlock(&srp_mutex); + + return ret; +} + +static int srp_open(struct inode *inode, struct file *file) +{ + srp_info("Opened!\n"); + + mutex_lock(&srp_mutex); + if (srp.is_opened) { + srp_err("Already opened.\n"); + mutex_unlock(&srp_mutex); + return -ENXIO; + } + srp.is_opened = 1; + mutex_unlock(&srp_mutex); + + if (!(file->f_flags & O_NONBLOCK)) + srp.block_mode = 1; + else + srp.block_mode = 0; + + srp.dec_info.channels = 0; + srp.dec_info.sample_rate = 0; + + srp.pm_suspended = false; + srp.pm_resumed = false; + srp.initialized = false; + + return 0; +} + +static int srp_release(struct inode *inode, struct file *file) +{ + srp_info("Released\n"); + + mutex_lock(&srp_mutex); + srp.is_opened = 0; + mutex_unlock(&srp_mutex); + + return 0; +} + +static int srp_mmap(struct file *filep, struct vm_area_struct *vma) +{ + unsigned long size = vma->vm_end - vma->vm_start; + unsigned int pfn; + + vma->vm_flags |= VM_IO; + vma->vm_flags |= VM_RESERVED; + vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); + + pfn = __phys_to_pfn(srp.mmap_base); + + if (remap_pfn_range(vma, vma->vm_start, pfn, size, vma->vm_page_prot)) { + srp_err("failed to mmap for Obuf\n"); + return -EAGAIN; + } + + return 0; +} + +static void srp_check_obuf_info(void) +{ + unsigned int buf0 = readl(srp.commbox + SRP_PCM_BUFF0); + unsigned int buf1 = readl(srp.commbox + SRP_PCM_BUFF1); + unsigned int size = readl(srp.commbox + SRP_PCM_BUFF_SIZE); + + if (srp.obuf0_pa != buf0) + srp_err("Wrong PCM BUF0[0x%x], OBUF0[0x%x]\n", + buf0, srp.obuf0_pa); + if (srp.obuf1_pa != buf1) + srp_err("Wrong PCM BUF1[0x%x], OBUF1[0x%x]\n", + buf1, srp.obuf1_pa); + if ((srp.obuf_size >> 2) != size) + srp_err("Wrong OBUF SIZE[%d]\n", size); +} + +static irqreturn_t srp_irq(int irqno, void *dev_id) +{ + unsigned int irq_code = readl(srp.commbox + SRP_INTERRUPT_CODE); + unsigned int irq_code_req; + unsigned int wakeup_read = 0; + unsigned int wakeup_decinfo = 0; + unsigned long i; + + srp_debug("IRQ: Code [0x%x], Pending [%s], CFGR [0x%x]", irq_code, + readl(srp.commbox + SRP_PENDING) ? "STALL" : "RUN", + readl(srp.commbox + SRP_CFGR)); + + irq_code &= SRP_INTR_CODE_MASK; + if (irq_code & SRP_INTR_CODE_REQUEST) { + irq_code_req = irq_code & SRP_INTR_CODE_REQUEST_MASK; + switch (irq_code_req) { + case SRP_INTR_CODE_NOTIFY_INFO: + srp_info("Notify SRP interrupt!\n"); + srp_check_stream_info(); + wakeup_decinfo = 1; + break; + + case SRP_INTR_CODE_IBUF_REQUEST: + if ((irq_code & SRP_INTR_CODE_IBUF_MASK) + == SRP_INTR_CODE_IBUF0_EMPTY) { + srp_debug("IBUF0 empty\n"); + srp.ibuf_empty[0] = 1; + } else { + srp_debug("IBUF1 empty\n"); + srp.ibuf_empty[1] = 1; + } + + srp_fill_ibuf(); + if (srp.decoding_started) { + if (srp.wait_for_eos && !srp.wbuf_pos) + srp_set_stream_size(); + } + break; + + case SRP_INTR_CODE_OBUF_FULL: + if ((irq_code & SRP_INTR_CODE_OBUF_MASK) + == SRP_INTR_CODE_OBUF0_FULL) { + srp_debug("OBUF0 FULL\n"); + srp.obuf_fill_done[0] = 1; + /* For EVT0 : will be removed on EVT1 */ + if (soc_is_exynos5250() && (samsung_rev() < EXYNOS5250_REV_1_0)) { + for (i = 0; i < srp.obuf_size; i += 4) + memcpy(&srp.pcm_obuf0[i], &srp.obuf0[i], 0x4); + } + } else { + srp_debug("OBUF1 FULL\n"); + srp.obuf_fill_done[1] = 1; + if (soc_is_exynos5250() && (samsung_rev() < EXYNOS5250_REV_1_0)) { + for (i = 0; i < srp.obuf_size; i += 4) + memcpy(&srp.pcm_obuf1[i], &srp.obuf1[i], 0x4); + } + } + + wakeup_read = 1; + srp.pcm_size = readl(srp.commbox + SRP_PCM_DUMP_ADDR); + writel(0, srp.commbox + SRP_PCM_DUMP_ADDR); + break; + + default: + break; + } + } + + if (irq_code & SRP_INTR_CODE_NOTIFY_OBUF) + srp_check_obuf_info(); + + + if ((irq_code & (SRP_INTR_CODE_PLAYDONE | SRP_INTR_CODE_ERROR)) + && (irq_code & SRP_INTR_CODE_PLAYEND)) { + srp_info("Play Done interrupt!!\n"); + srp.pcm_size = 0; + srp.play_done = 1; + + srp.obuf_fill_done[0] = 1; + srp.obuf_fill_done[1] = 1; + wakeup_read = 1; + } + + if (irq_code & SRP_INTR_CODE_UART_OUTPUT) { + srp_debug("UART Code received [0x%08X]\n", + readl(srp.commbox + SRP_UART_INFORMATION)); + } + + writel(0, srp.commbox + SRP_INTERRUPT_CODE); + writel(0, srp.commbox + SRP_INTERRUPT); + + if (wakeup_read) { + if (waitqueue_active(&read_wq)) + wake_up_interruptible(&read_wq); + } + + if (wakeup_decinfo) { + if (waitqueue_active(&decinfo_wq)) + wake_up_interruptible(&decinfo_wq); + } + + srp_debug("IRQ Exited!\n"); + + return IRQ_HANDLED; +} + +static void srp_prepare_buff(struct device *dev) +{ + srp.ibuf_size = IBUF_SIZE; + srp.obuf_size = OBUF_SIZE; + srp.wbuf_size = WBUF_SIZE; + srp.ibuf_offset = IBUF_OFFSET; + srp.obuf_offset = OBUF_OFFSET; + + srp.ibuf0 = soc_is_exynos5250() ? srp.dmem + srp.ibuf_offset + : srp.iram + srp.ibuf_offset; + srp.ibuf1 = srp.ibuf0 + srp.ibuf_size; + + srp.obuf0 = srp.dmem + srp.obuf_offset; + srp.obuf1 = srp.obuf0 + srp.obuf_size; + + /* For EVT0 : will be removed on EVT1 */ + if (soc_is_exynos5250() && (samsung_rev() < EXYNOS5250_REV_1_0)) { + srp.pcm_obuf0 = dma_alloc_writecombine(dev, srp.obuf_size * 2, + &srp.pcm_obuf_pa, GFP_KERNEL); + srp.pcm_obuf1 = srp.pcm_obuf0 + srp.obuf_size; + srp.obuf_offset = 0; + } + + if (!srp.ibuf0_pa) + srp.ibuf0_pa = SRP_IBUF_PHY_ADDR; + + if (!srp.obuf0_pa) + srp.obuf0_pa = SRP_OBUF_PHY_ADDR; + + srp.ibuf1_pa = srp.ibuf0_pa + srp.ibuf_size; + srp.obuf1_pa = srp.obuf0_pa + srp.obuf_size; + + srp.ibuf_num = IBUF_NUM; + srp.obuf_num = OBUF_NUM; + + /* For EVT0 : will be removed on EVT1 */ + if (soc_is_exynos5250() && (samsung_rev() < EXYNOS5250_REV_1_0)) + srp.mmap_base = srp.pcm_obuf_pa; + else + srp.mmap_base = SRP_DMEM_BASE; + + srp_info("[VA]IBUF0[0x%p], [PA]IBUF0[0x%x]\n", + srp.ibuf0, srp.ibuf0_pa); + srp_info("[VA]IBUF1[0x%p], [PA]IBUF1[0x%x]\n", + srp.ibuf1, srp.ibuf1_pa); + srp_info("[VA]OBUF0[0x%p], [PA]OBUF0[0x%x]\n", + srp.obuf0, srp.obuf0_pa); + srp_info("[VA]OBUF1[0x%p], [PA]OBUF1[0x%x]\n", + srp.obuf1, srp.obuf1_pa); + srp_info("IBUF SIZE [%ld]Bytes, OBUF SIZE [%ld]Bytes\n", + srp.ibuf_size, srp.obuf_size); +} + +static int srp_prepare_fw_buff(struct device *dev) +{ +#if defined(CONFIG_S5P_MEM_CMA) + unsigned long mem_paddr; + + srp.fw_info.mem_base = cma_alloc(dev, "srp", BASE_MEM_SIZE, 0); + if (IS_ERR_VALUE(srp.fw_info.mem_base)) { + srp_err("Failed to cma alloc for srp\n"); + return -ENOMEM; + } + + mem_paddr = srp.fw_info.mem_base; + srp.fw_info.vliw_pa = mem_paddr; + srp.fw_info.vliw = phys_to_virt(srp.fw_info.vliw_pa); + mem_paddr += ICACHE_SIZE; + + srp.fw_info.cga_pa = mem_paddr; + srp.fw_info.cga = phys_to_virt(srp.fw_info.cga_pa); + mem_paddr += CMEM_SIZE; + + srp.fw_info.data_pa = mem_paddr; + srp.fw_info.data = phys_to_virt(srp.fw_info.data_pa); + mem_paddr += DMEM_SIZE; + + srp.wbuf = phys_to_virt(mem_paddr); + mem_paddr += WBUF_SIZE; + + srp.sp_data.ibuf = phys_to_virt(mem_paddr); + mem_paddr += IBUF_SIZE * 2; + + srp.sp_data.obuf = phys_to_virt(mem_paddr); + mem_paddr += OBUF_SIZE * 2; + + srp.sp_data.commbox = phys_to_virt(mem_paddr); + mem_paddr += COMMBOX_SIZE; +#else + srp.fw_info.vliw = dma_alloc_writecombine(dev, ICACHE_SIZE, + &srp.fw_info.vliw_pa, GFP_KERNEL); + if (!srp.fw_info.vliw) { + srp_err("Failed to alloc for vliw\n"); + return -ENOMEM; + } + + srp.fw_info.cga = dma_alloc_writecombine(dev, CMEM_SIZE, + &srp.fw_info.cga_pa, GFP_KERNEL); + if (!srp.fw_info.cga) { + srp_err("Failed to alloc for cga\n"); + return -ENOMEM; + } + + srp.fw_info.data = dma_alloc_writecombine(dev, DMEM_SIZE, + &srp.fw_info.data_pa, GFP_KERNEL); + if (!srp.fw_info.data) { + srp_err("Failed to alloc for data\n"); + return -ENOMEM; + } + + srp.wbuf = kzalloc(WBUF_SIZE, GFP_KERNEL); + if (!srp.wbuf) { + srp_err("Failed to allocation for WBUF!\n"); + return -ENOMEM; + } + + srp.sp_data.ibuf = kzalloc(IBUF_SIZE * 2, GFP_KERNEL); + if (!srp.sp_data.ibuf) { + srp_err("Failed to alloc ibuf for suspend/resume!\n"); + return -ENOMEM; + } + + srp.sp_data.obuf = kzalloc(OBUF_SIZE * 2, GFP_KERNEL); + if (!srp.sp_data.obuf) { + srp_err("Failed to alloc obuf for suspend/resume!\n"); + return -ENOMEM; + } + + srp.sp_data.commbox = kzalloc(COMMBOX_SIZE, GFP_KERNEL); + if (!srp.sp_data.commbox) { + srp_err("Failed to alloc commbox for suspend/resume\n"); + return -ENOMEM; + } +#endif + + srp.fw_info.vliw_size = sizeof(srp_fw_vliw); + srp.fw_info.cga_size = sizeof(srp_fw_cga); + srp.fw_info.data_size = sizeof(srp_fw_data); + + memset(srp.fw_info.vliw, 0, ICACHE_SIZE); + memset(srp.fw_info.cga, 0, CMEM_SIZE); + memset(srp.fw_info.data, 0, DMEM_SIZE); + + memcpy(srp.fw_info.vliw, srp_fw_vliw, srp.fw_info.vliw_size); + memcpy(srp.fw_info.cga, srp_fw_cga, srp.fw_info.cga_size); + memcpy(srp.fw_info.data, srp_fw_data, srp.fw_info.data_size); + + srp_info("VLIW[%lu]Bytes\n", srp.fw_info.vliw_size); + srp_info("CGA[%lu]Bytes\n", srp.fw_info.cga_size); + srp_info("DATA[%lu]Bytes\n", srp.fw_info.data_size); + + return 0; +} + +static int srp_remove_fw_buff(struct device *dev) +{ +#if defined(CONFIG_S5P_MEM_CMA) + cma_free(srp.fw_info.mem_base); +#else + dma_free_writecombine(dev, ICACHE_SIZE, srp.fw_info.vliw, + srp.fw_info.vliw_pa); + dma_free_writecombine(dev, CMEM_SIZE, srp.fw_info.cga, + srp.fw_info.cga_pa); + dma_free_writecombine(dev, DMEM_SIZE, srp.fw_info.data, + srp.fw_info.data_pa); + kfree(srp.wbuf); + kfree(srp.sp_data.ibuf); + kfree(srp.sp_data.obuf); + kfree(srp.sp_data.commbox); +#endif + srp.fw_info.vliw = NULL; + srp.fw_info.cga = NULL; + srp.fw_info.data = NULL; + + srp.fw_info.vliw_pa = 0; + srp.fw_info.cga_pa = 0; + srp.fw_info.data_pa = 0; + srp.ibuf0_pa = 0; + srp.ibuf1_pa = 0; + srp.obuf0_pa = 0; + srp.obuf1_pa = 0; + + return 0; +} + +static const struct file_operations srp_fops = { + .owner = THIS_MODULE, + .open = srp_open, + .release = srp_release, + .read = srp_read, + .write = srp_write, + .unlocked_ioctl = srp_ioctl, + .mmap = srp_mmap, +}; + +static struct miscdevice srp_miscdev = { + .minor = SRP_DEV_MINOR, + .name = "srp", + .fops = &srp_fops, +}; + +#ifdef CONFIG_PM +static int srp_suspend(struct platform_device *pdev, pm_message_t state) +{ + unsigned long i; + + srp_info("Suspend\n"); + + srp.audss_clk_enable(true); + + if (srp.is_opened) { + if (srp.decoding_started && !srp.pm_suspended) { + + /* IBUF/OBUF Save */ + if (soc_is_exynos5250() && (samsung_rev() < EXYNOS5250_REV_1_0)) { + /* EVT0 : Work around code */ + for (i = 0; i < srp.ibuf_size * 2; i += 4) + writel(readl(srp.ibuf0 + i), srp.sp_data.ibuf + i); + + for (i = 0; i < srp.obuf_size * 2; i += 4) + writel(readl(srp.obuf0 + i), srp.sp_data.obuf + i); + } else { + memcpy(srp.sp_data.ibuf, srp.ibuf0, IBUF_SIZE * 2); + memcpy(srp.sp_data.obuf, srp.obuf0, OBUF_SIZE * 2); + } + + /* Request Suspend mode */ + srp_request_intr_mode(SUSPEND); + + if (soc_is_exynos5250() && (samsung_rev() < EXYNOS5250_REV_1_0)) { + /* EVT0 : Work around code */ + for (i = DATA_OFFSET; i < DMEM_SIZE; i += 4) + writel(readl(srp.dmem + i), srp.fw_info.data + i); + } else + memcpy(srp.fw_info.data, srp.dmem, DMEM_SIZE); + + memcpy(srp.sp_data.commbox, srp.commbox, COMMBOX_SIZE); + srp.pm_suspended = true; + } + } else if (soc_is_exynos5250()) { + /* Request Suspend mode */ + srp_request_intr_mode(SUSPEND); + } + + srp.audss_clk_enable(false); + + return 0; +} + +static int srp_resume(struct platform_device *pdev) +{ + srp_info("Resume\n"); + + srp.audss_clk_enable(true); + + if (srp.is_opened) { + if (!srp.decoding_started) { + srp_set_default_fw(); + srp_flush_ibuf(); + srp_flush_obuf(); + srp_reset(); + } else if (srp.decoding_started && srp.pm_suspended) { + srp_fw_download(); + + memcpy(srp.commbox, srp.sp_data.commbox, COMMBOX_SIZE); + memcpy(srp.ibuf0, srp.sp_data.ibuf, IBUF_SIZE * 2); + memcpy(srp.obuf0, srp.sp_data.obuf, OBUF_SIZE * 2); + + /* RESET */ + writel(0x0, srp.commbox + SRP_CONT); + srp_request_intr_mode(RESUME); + + srp.pm_resumed = true; + } + } else if (soc_is_exynos5250()) { + srp_fw_download(); + /* RESET */ + writel(0x0, srp.commbox + SRP_CONT); + srp_request_intr_mode(RESUME); + } + + return 0; +} + +#else +#define srp_suspend NULL +#define srp_resume NULL +#endif + +static __devinit int srp_probe(struct platform_device *pdev) +{ + int ret = 0; + + srp.iram = ioremap(SRP_IRAM_BASE, IRAM_SIZE); + if (srp.iram == NULL) { + srp_err("Failed to ioremap for sram area\n"); + ret = -ENOMEM; + return ret; + + } + + srp.dmem = ioremap(SRP_DMEM_BASE, DMEM_SIZE); + if (srp.dmem == NULL) { + srp_err("Failed to ioremap for dmem\n"); + ret = -ENOMEM; + goto err1; + + } + + srp.icache = ioremap(SRP_ICACHE_ADDR, ICACHE_SIZE); + if (srp.icache == NULL) { + srp_err("Failed to ioremap for icache\n"); + ret = -ENOMEM; + goto err2; + } + + srp.cmem = ioremap(SRP_CMEM_ADDR, CMEM_SIZE); + if (srp.cmem == NULL) { + srp_err("Failed to ioremap for cmem\n"); + ret = -ENOMEM; + goto err3; + } + + srp.commbox = ioremap(SRP_COMMBOX_BASE, COMMBOX_SIZE); + if (srp.commbox == NULL) { + srp_err("Failed to ioremap for audio subsystem\n"); + ret = -ENOMEM; + goto err4; + } + + ret = srp_prepare_fw_buff(&pdev->dev); + if (ret) { + srp_err("SRP: Can't prepare memory for srp\n"); + goto err5; + } + + ret = request_irq(IRQ_AUDIO_SS, srp_irq, IRQF_DISABLED, "samsung-rp", pdev); + if (ret < 0) { + srp_err("SRP: Fail to claim SRP(AUDIO_SS) irq\n"); + goto err6; + } + + ret = misc_register(&srp_miscdev); + if (ret) { + srp_err("SRP: Cannot register miscdev on minor=%d\n", + SRP_DEV_MINOR); + goto err7; + } + + srp.first_init = 0; + srp_prepare_buff(&pdev->dev); + srp.audss_clk_enable = audss_clk_enable; + + return 0; + +err7: + free_irq(IRQ_AUDIO_SS, pdev); +err6: + srp_remove_fw_buff(&pdev->dev); +err5: + iounmap(srp.commbox); +err4: + iounmap(srp.cmem); +err3: + iounmap(srp.icache); +err2: + iounmap(srp.dmem); +err1: + iounmap(srp.iram); + + return ret; +} + +static __devexit int srp_remove(struct platform_device *pdev) +{ + free_irq(IRQ_AUDIO_SS, pdev); + srp_remove_fw_buff(&pdev->dev); + + misc_deregister(&srp_miscdev); + + iounmap(srp.commbox); + iounmap(srp.icache); + iounmap(srp.dmem); + iounmap(srp.iram); + + return 0; +} + +static struct platform_driver srp_driver = { + .probe = srp_probe, + .remove = srp_remove, + .suspend = srp_suspend, + .resume = srp_resume, + .driver = { + .owner = THIS_MODULE, + .name = "samsung-rp", + }, +}; + +static char banner[] __initdata = + KERN_INFO "Samsung SRP driver, (c)2011 Samsung Electronics\n"; + +static int __init srp_init(void) +{ + printk(banner); + + return platform_driver_register(&srp_driver); +} + +static void __exit srp_exit(void) +{ + platform_driver_unregister(&srp_driver); +} + +module_init(srp_init); +module_exit(srp_exit); + +MODULE_AUTHOR("Yeongman Seo <yman.seo@samsung.com>"); +MODULE_DESCRIPTION("Samsung SRP driver"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/srp_alp/srp_alp.h b/sound/soc/samsung/srp_alp/srp_alp.h new file mode 100644 index 0000000..de78eec --- /dev/null +++ b/sound/soc/samsung/srp_alp/srp_alp.h @@ -0,0 +1,214 @@ +#ifndef __SRP_ALP_H +#define __SRP_ALP_H + +#define SRP_DEV_MINOR (250) + +/* Base address */ +#define SRP_IRAM_BASE (0x02020000) +#define SRP_DMEM_BASE (0x03000000) +#define SRP_COMMBOX_BASE (0x03820000) + +/* SRAM information */ +#define IRAM_SIZE ((soc_is_exynos4412() || soc_is_exynos4212()) ? \ + (0x40000) : (0x20000)) +#define DMEM_SIZE (soc_is_exynos5250() ? \ + (0x28000) : (0x20000)) +#define ICACHE_SIZE (soc_is_exynos5250() ? \ + (0x18000) : (0x10000)) +#define CMEM_SIZE (0x9000) + +/* SRAM & Commbox base address */ +#define SRP_ICACHE_ADDR (SRP_DMEM_BASE + DMEM_SIZE) +#define SRP_CMEM_ADDR (SRP_ICACHE_ADDR + ICACHE_SIZE) + +/* IBUF/OBUF Size */ +#define IBUF_SIZE (0x4000) +#define WBUF_SIZE (IBUF_SIZE * 4) +#define OBUF_SIZE (soc_is_exynos5250() ? \ + (0x4000) : (0x8000)) + +/* IBUF Offset */ +#if defined(CONFIG_ARCH_EXYNOS4) +#define IBUF_OFFSET ((soc_is_exynos4412() || soc_is_exynos4212()) ? \ + (0x30000) : (0x10000)) +#elif defined(CONFIG_ARCH_EXYNOS5) +#define IBUF_OFFSET (0x8104) +#endif + +/* OBUF Offset */ +#if defined(CONFIG_ARCH_EXYNOS4) +#define OBUF_OFFSET (0x4) +#elif defined(CONFIG_ARCH_EXYNOS5) +#define OBUF_OFFSET (0x10104) +#endif + +/* SRP Input/Output buffer physical address */ +#if defined(CONFIG_ARCH_EXYNOS4) +#define SRP_IBUF_PHY_ADDR (SRP_IRAM_BASE + IBUF_OFFSET) +#elif defined(CONFIG_ARCH_EXYNOS5) +#define SRP_IBUF_PHY_ADDR (SRP_DMEM_BASE + IBUF_OFFSET) +#endif +#define SRP_OBUF_PHY_ADDR (SRP_DMEM_BASE + OBUF_OFFSET) + +/* IBUF/OBUF NUM */ +#define IBUF_NUM (0x2) +#define OBUF_NUM (0x2) +#define START_THRESHOLD (IBUF_SIZE * 3) + +/* Commbox & Etc information */ +#define COMMBOX_SIZE (0x308) + +/* Reserved memory on DRAM */ +#define BASE_MEM_SIZE (CONFIG_AUDIO_SAMSUNG_MEMSIZE_SRP << 10) +#define BITSTREAM_SIZE_MAX (0x7FFFFFFF) +#define DATA_OFFSET (0x18104) + +/* F/W Endian Configuration */ +#ifdef USE_FW_ENDIAN_CONVERT +#define ENDIAN_CHK_CONV(VAL) \ + (((VAL >> 24) & 0x000000FF) | \ + ((VAL >> 8) & 0x0000FF00) | \ + ((VAL << 8) & 0x00FF0000) | \ + ((VAL << 24) & 0xFF000000)) +#else +#define ENDIAN_CHK_CONV(VAL) (VAL) +#endif + +/* For Debugging */ +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG +#define srp_info(x...) pr_info("SRP: " x) +#define srp_debug(x...) pr_debug("SRP: " x) +#define srp_err(x...) pr_err("SRP_ERR: " x) +#else +#define srp_info(x...) +#define srp_debug(x...) +#define srp_err(x...) +#endif + +/* For SRP firmware */ +struct srp_fw_info { + unsigned char *vliw; /* VLIW */ + unsigned char *cga; /* CGA */ + unsigned char *data; /* DATA */ + + unsigned int mem_base; /* Physical address of base */ + unsigned int vliw_pa; /* Physical address of VLIW */ + unsigned int cga_pa; /* Physical address of CGA */ + unsigned int data_pa; /* Physical address of DATA */ + unsigned long vliw_size; /* Size of VLIW */ + unsigned long cga_size; /* Size of CGA */ + unsigned long data_size; /* Size of DATA */ +}; + +/* OBUF/IBUF information */ +struct srp_buf_info { + void *mmapped_addr; + void *addr; + unsigned int mmapped_size; + unsigned int size; + int num; +}; + +/* Decoding information */ +struct srp_dec_info { + unsigned int sample_rate; + unsigned int channels; +}; + +struct srp_for_suspend { + unsigned char *ibuf; + unsigned char *obuf; + unsigned char *commbox; +}; + +struct srp_info { + struct srp_buf_info ibuf_info; + struct srp_buf_info obuf_info; + struct srp_buf_info pcm_info; + + struct srp_fw_info fw_info; + struct srp_dec_info dec_info; + struct srp_for_suspend sp_data; + + void __iomem *iram; + void __iomem *dmem; + void __iomem *icache; + void __iomem *cmem; + void __iomem *commbox; + + /* MMAP base address */ + unsigned int mmap_base; + + /* IBUF informaion */ + unsigned char *ibuf0; + unsigned char *ibuf1; + unsigned int ibuf0_pa; + unsigned int ibuf1_pa; + unsigned int ibuf_num; + unsigned long ibuf_size; + unsigned long ibuf_offset; + unsigned int ibuf_next; + unsigned int ibuf_empty[2]; + + /* OBUF informaion */ + unsigned char *obuf0; + unsigned char *obuf1; + unsigned int obuf0_pa; + unsigned int obuf1_pa; + unsigned int obuf_num; + unsigned long obuf_size; + unsigned long obuf_offset; + unsigned int obuf_fill_done[2]; + unsigned int obuf_copy_done[2]; + unsigned int obuf_ready; + unsigned int obuf_next; + + /* For EVT0 : will be removed on EVT1 */ + unsigned char *pcm_obuf0; + unsigned char *pcm_obuf1; + unsigned int pcm_obuf_pa; + + /* Temporary BUF informaion */ + unsigned char *wbuf; + unsigned long wbuf_size; + unsigned long wbuf_pos; + unsigned long wbuf_fill_size; + + /* Decoding informaion */ + unsigned long set_bitstream_size; + unsigned long pcm_size; + + /* SRP status information */ + unsigned int first_init; + unsigned int decoding_started; + unsigned int is_opened; + unsigned int is_running; + unsigned int is_pending; + unsigned int block_mode; + unsigned int stop_after_eos; + unsigned int wait_for_eos; + unsigned int prepare_for_eos; + unsigned int play_done; + + bool pm_suspended; + bool pm_resumed; + bool initialized; + + /* Function pointer for clock control */ + void (*audss_clk_enable)(bool enable); +}; + +/* SRP Pending On/Off status */ +enum { + RUN = 0, + STALL, +}; + +/* Request Suspend/Resume */ +enum { + SUSPEND = 0, + RESUME, + RESET, +}; + +#endif /* __SRP_ALP_H */ diff --git a/sound/soc/samsung/srp_alp/srp_alp_error.h b/sound/soc/samsung/srp_alp/srp_alp_error.h new file mode 100644 index 0000000..6bfcff8 --- /dev/null +++ b/sound/soc/samsung/srp_alp/srp_alp_error.h @@ -0,0 +1,22 @@ +#ifndef _SRP_ALP_ERROR_H_ +#define _SRP_ALP_ERROR_H_ + +enum { + SRP_RETURN_OK = 0, + + SRP_ERROR_OPEN_FAIL = -1000, + SRP_ERROR_ALREADY_OPEN = -1001, + SRP_ERROR_NOT_READY = -1002, + + SRP_ERROR_IBUF_OVERFLOW = -2000, + SRP_ERROR_IBUF_INFO = -2001, + + SRP_ERROR_OBUF_READ = -3000, + SRP_ERROR_OBUF_INFO = -3001, + SRP_ERROR_OBUF_MMAP = -3002, + + SRP_ERROR_INVALID_SETTING = -4000, + SRP_ERROR_GETINFO_FAIL = -4001 +} SRP_ERRORTYPE; + +#endif /* _SRP_ALP_ERROR_H_ */ diff --git a/sound/soc/samsung/srp_alp/srp_alp_fw.h b/sound/soc/samsung/srp_alp/srp_alp_fw.h new file mode 100644 index 0000000..0b15312 --- /dev/null +++ b/sound/soc/samsung/srp_alp/srp_alp_fw.h @@ -0,0 +1,13719 @@ +/* sound/soc/samsung/srp_alp/srp_alp_fw.h + * + * SRP Audio Firmware for Samsung Exynos + * + * Copyright (c) 2011 Samsung Electronics + * http://www.samsungsemi.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#include <linux/init.h> + +/* SRP Firmeware */ + +#if defined(CONFIG_ARCH_EXYNOS4) +/* vliw */ +static unsigned long srp_fw_vliw[] __devinitdata = { +0xd2000143,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xd2000167,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xd200015b,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xd200014f,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xd2000143,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xc2fc001d,0xc300011d,0x10920740,0x10900740,0x10924741,0xd1008dfb,0x07800001,0x07000103, +0x07000101,0x00400202,0xf0000003,0x07000103,0xf1000003,0x07000103,0xff000003,0x07000103, +0x00528201,0x07000100,0x12828a09,0x00408a02,0x00528200,0xc1fffd2d,0x07000101,0x02928a2d, +0x00408a01,0x10900081,0xc200f8fc,0x900000f8,0x900040fd,0xd200010c,0x009000fc,0xc20100fd, +0xc2e03cf8,0x9001c01c,0x90008009,0xc30001f8,0xc2e03408,0x0081c0fd,0x10900081,0xc200f8fc, +0x900000f8,0x900040fd,0xd20000d8,0x009000fc,0xc20100fd,0xc2e040f8,0x9001c01c,0x90008009, +0xc30001f8,0xc2e03408,0x0081c0fd,0x10900081,0xc200f8fc,0x900000f8,0x900040fd,0xd20000a4, +0x009000fc,0xc20100fd,0xc2e044f8,0x9001c01c,0x90008009,0xc30001f8,0xc2e03408,0x0081c0fd, +0x10900081,0xc200f8fc,0x900000f8,0x900040fd,0xc20014f9,0xc30382f9,0x00000000,0xb8003efb, +0x00000001,0xe8000030,0x129fbe05,0x14103e01,0xd2000050,0x009000fc,0xc20100fd,0xc2e048f8, +0x9001c01c,0x90008009,0xc30001f8,0xc2e03408,0x0081c0fd,0xc20020f9,0xc30382f9,0x00000000, +0xb8003e1f,0x00000001,0xc20024f9,0xc30382f9,0x00000000,0xb8003e03,0x00000001,0xd20003c3, +0xc3000108,0x9000c00c,0x90010011,0xc2e0380c,0xb8000208,0xb8003ef9,0x00510200,0xc300010c, +0x90014015,0x10814080,0x90018018,0x90004005,0x00118400,0x90000520,0x90004525,0x12908208, +0x90008528,0x9000c52d,0x00508300,0x90010530,0x90014535,0x00124000,0x90018538,0x9001c53d, +0x00508000,0x10814580,0x90004709,0x00508100,0x90000710,0x90008709,0x00508400,0x00113e00, +0x9000c709,0x0050bf00,0xb800030c,0x90010709,0x02818608,0x1081c760,0x90014709,0x00408600, +0x90000540,0x90004545,0x10814540,0x90008548,0x9000c54d,0xe1000124,0x90000550,0x90004555, +0xc2001808,0x90008558,0x9000c55d,0x04e0020c,0x9000001c,0x00120001,0xc2002058,0xc200245d, +0xc3038258,0xc303825d,0x00000000,0x9000161c,0x90001701,0xe20000e4,0x90010560,0x90014565, +0x10814580,0x90018568,0x9001c56d,0x10808220,0x90000570,0x90004575,0x04e0020c,0x90008578, +0x9000c57d,0xe20000b4,0x90010580,0x90014585,0x10814580,0x90018588,0x9001c58d,0x10808220, +0x90000590,0x90004595,0x04e0020c,0x90008598,0x9000c59d,0xe2000084,0x900105a0,0x900145a5, +0x10814580,0x900185a8,0x9001c5ad,0x10808220,0x900005b0,0x900045b5,0x04e0020c,0x900085b8, +0x9000c5bd,0xe2000054,0x900105c0,0x900145c5,0x10814580,0x900185c8,0x9001c5cd,0x10808220, +0x900005d0,0x900045d5,0x04e0020c,0x900085d8,0x9000c5dd,0x10808220,0x900105e0,0x900145e5, +0x10814580,0x900185e8,0x9001c5ed,0x00000000,0x900005f0,0x900045f5,0x07104400,0x00108003, +0x00000000,0xc2e0380c,0x10910781,0xc300010c,0xb8008418,0xb801843d,0xc1001808,0xb800030c, +0xb800c431,0x108140f0,0xb8010434,0xb8014439,0xe200012c,0xb8004540,0xb8008545,0x10814550, +0xb800c548,0xb801054d,0x00000000,0xb8000550,0xb8004555,0x04e0020c,0xb8008558,0xb800c55f, +0x00000001,0xe20000f8,0xb8010560,0xb8014565,0x10814580,0xb8018568,0xb801c56d,0x10808220, +0xb8000570,0xb8004575,0x04e0020c,0xb8008578,0xb800c57f,0x00000001,0xe20000c4,0xb8010580, +0xb8014585,0x10814580,0xb8018588,0xb801c58d,0x10808220,0xb8000590,0xb8004595,0x04e0020c, +0xb8008598,0xb800c59f,0x00000001,0xe2000090,0xb80105a0,0xb80145a5,0x10814580,0xb80185a8, +0xb801c5ad,0x10808220,0xb80005b0,0xb80045b5,0x04e0020c,0xb80085b8,0xb800c5bf,0x00000001, +0xe200005c,0xb80105c0,0xb80145c5,0x10814580,0xb80185c8,0xb801c5cd,0x10808220,0xb80005d0, +0xb80045d5,0x04e0020c,0xb80085d8,0xb800c5df,0x00000001,0x00000000,0xb80105e0,0xb80145e5, +0x10814580,0xb80185e8,0xb801c5ed,0x00000000,0xb80005f0,0xb80045f7,0x00000001,0x00000000, +0xb80085f8,0xb800c5fd,0x00000000,0x1080c080,0xb801c411,0x0040cc00,0xb8000320,0xb8004325, +0x00400d00,0xb8008328,0xb800c32d,0x00404e00,0xb8010330,0xb8014335,0x00410f00,0xb8018338, +0xb801c33d,0x004fc400,0xb8014014,0xb801c01d,0x00000000,0xb800c00c,0xb8010011,0x00000000, +0xb8008008,0xb8018019,0x00000000,0xb8000000,0xb8004007,0x00000001,0x07300003,0xc20188f9, +0xc30382f9,0x00000000,0xb8003eff,0x00000001,0xc2ffbff5,0xc3fffff5,0x029ffff5,0x00000000, +0x90003efd,0x00000000,0xc2e0380c,0x10910781,0xc300010c,0xb8008418,0xb801843d,0xc1001808, +0xb800030c,0xb800c431,0x108140f0,0xb8010434,0xb8014439,0xe200012c,0xb8004540,0xb8008545, +0x10814550,0xb800c548,0xb801054d,0x00000000,0xb8000550,0xb8004555,0x04e0020c,0xb8008558, +0xb800c55f,0x00000001,0xe20000f8,0xb8010560,0xb8014565,0x10814580,0xb8018568,0xb801c56d, +0x10808220,0xb8000570,0xb8004575,0x04e0020c,0xb8008578,0xb800c57f,0x00000001,0xe20000c4, +0xb8010580,0xb8014585,0x10814580,0xb8018588,0xb801c58d,0x10808220,0xb8000590,0xb8004595, +0x04e0020c,0xb8008598,0xb800c59f,0x00000001,0xe2000090,0xb80105a0,0xb80145a5,0x10814580, +0xb80185a8,0xb801c5ad,0x10808220,0xb80005b0,0xb80045b5,0x04e0020c,0xb80085b8,0xb800c5bf, +0x00000001,0xe200005c,0xb80105c0,0xb80145c5,0x10814580,0xb80185c8,0xb801c5cd,0x10808220, +0xb80005d0,0xb80045d5,0x04e0020c,0xb80085d8,0xb800c5df,0x00000001,0x00000000,0xb80105e0, +0xb80145e5,0x10814580,0xb80185e8,0xb801c5ed,0x00000000,0xb80005f0,0xb80045f7,0x00000001, +0x00000000,0xb80085f8,0xb800c5fd,0x00000000,0x1080c080,0xb801c411,0x0040cc00,0xb8000320, +0xb8004325,0x00400d00,0xb8008328,0xb800c32d,0x00404e00,0xb8010330,0xb8014335,0x00410f00, +0xb8018338,0xb801c33d,0x004fc400,0xb8014014,0xb801c01d,0x00000000,0xb800c00c,0xb8010011, +0x00000000,0xb8008008,0xb8018019,0x00000000,0xb8000000,0xb8004007,0x00000001,0x07300003, +0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725,0x001e4201, +0xe8000051,0x0490020c,0xc10000e1,0x120f0305,0xe800001d,0x04b039f0,0xc10001ed,0x108efb05, +0x020e83ed,0xe8fffff9,0x04d039e9,0xc1ffffe9,0xc10001e8,0x008efbe9,0x020ec3ec,0x020ebaed, +0x008e38e8,0x009e79ed,0xe8ffffc9,0x04f0390d,0xe8000011,0x14000401,0x00000000,0x900004e5, +0x0011b801,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891c,0x9000c905,0x10900740,0x10924741,0xd1ffff5a,0xc1000011,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c, +0x9000c905,0x10900771,0x10920740,0x90004920,0x10924771,0xd1ffff14,0xc1fffce1,0x008108e2, +0xc1fffce1,0x00000000,0x034188e3,0x00000001,0x1091c741,0x00000000,0xb800c704,0xb8004723, +0x00000001,0x00000000,0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940, +0x9000891d,0x10924771,0xc20004e8,0xc20004e4,0xc10001e1,0xc30001e8,0xc30001e5,0x008e42e4, +0x030182e9,0x00000000,0x800039e3,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x1092497d,0x10924945,0x1081c97c,0x9000891c,0x9000c905,0x1081c744,0xc1005c25,0x00900724, +0x00924725,0xc1ffece8,0xc1ffe8e0,0xc1ffe4e5,0xc1ffe0e0,0x034307e8,0x0342c7e1,0x00000000, +0x034287e4,0x034fc7e3,0x00000001,0x109f4971,0x109f8950,0xc10000ec,0x109e8961,0xc10001f0, +0x109e09a0,0x109e4981,0x109e8990,0x90003a2c,0x90003e31,0xd1000048,0xc10000e4,0x900039f1, +0x109e09b0,0x90003d28,0x900038e5,0x00000000,0x90003aec,0x900038fd,0x1091c77d,0x1091c745, +0x00000000,0xb800c704,0xb800871f,0x1082477e,0x07000101,0x10824945,0x00100901,0x1092497d, +0x10924975,0x1081c97c,0x9000891c,0x9000c905,0x1081c774,0xc1007025,0x00900724,0x00924725, +0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c, +0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffe4e8,0xc1ffe8e0, +0xc1ffeced,0xc1ffd8e0,0x034687e0,0xc1ffe0e5,0xc1ffdce4,0x0346c7ec,0x034607e5,0xc1ffd4e0, +0x034647e8,0x034547e1,0x00000000,0x0345c7e4,0x034507e2,0x00158201,0x00170401,0xe8000061, +0x14100201,0xc1ffff19,0x1091c77d,0x1091c774,0xb8004055,0x00000000,0xb800c704,0xb8010061, +0x00000000,0xb8000050,0xb800c05d,0x00000000,0xb801c06c,0xb8020071,0x00000000,0xb8008058, +0xb8018069,0x1082477c,0xb8014064,0xb800871d,0x07000101,0x10824975,0x00100901,0xe8000039, +0x14000301,0xe8000065,0x14000305,0xe800006d,0x14000315,0xe8000075,0x14000309,0xe800007d, +0x1400030d,0xe8000099,0x14000311,0xd2ffff7e,0xc1ffff19,0xc10e00e1,0x00000000,0x900142e1, +0xe80000a5,0x14000401,0xe8000099,0x14000405,0xe8000129,0x14000409,0xe8000129,0x1400040d, +0xd2ffff4a,0xc1ffff19,0xd2ffffd8,0xc10d00e1,0x00000000,0x900142e2,0xd2ffffc8,0xc10c00e1, +0x00000000,0x900142e2,0xd2ffffb8,0xc10f00e1,0x00000000,0x900142e2,0xc20c00e0,0x129e453d, +0xc30400e0,0x120e7971,0xd2ffff98,0x001e3801,0x028e38e5,0x00000000,0x900142e1,0xc20c00e0, +0x129e453d,0xc30200e0,0x120e7971,0xd2ffff74,0x001e3801,0x028e38e5,0x00000000,0x900142e1, +0x12165905,0xd10008c8,0x00109403,0x109e1804,0x129e94f0,0x109e5905,0x120eb840,0x120e1740, +0x028efa19,0x00000000,0x028e7ae4,0x028e3855,0x00000000,0x9000d6e4,0x900016ed,0xe800006c, +0x9000566c,0x900116e1,0x14001400,0x90009669,0xc10001e1,0x129eb804,0xc20000e4,0x129e1c0d, +0x120eba50,0xb80156e0,0xc30001e5,0x120e7838,0x028ebae4,0xc23000e1,0x00000000,0x028e7ae5, +0xd2fffe48,0x00000000,0x028e79e1,0x028e38e5,0xc1000018,0x900156e1,0xd2ffff6e,0x12165909, +0xd2ffff66,0x1216590d,0xd2ffffae,0xc10000e1,0x10924941,0x1081c940,0x9000891c,0x9000c905, +0x10900770,0x10924771,0x00000000,0x90000050,0x90004055,0x00154200,0x00150301,0xc10000e1, +0xe8000019,0x04c03809,0xe8000011,0x14c0021d,0xe8000035,0x14100301,0xc1ffff19,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102, +0x00100901,0xd1000647,0xd1fffbf0,0x00109503,0xd1000488,0x00109500,0x0010d403,0xd2ffffc2, +0xc1000019,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1004824,0x90004920,0x10920741, +0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00154201,0x109e0961,0xc1ffe0ec, +0xc10000e4,0x109e8951,0x120e8508,0x90003a10,0x008088ed,0xd1fffbcc,0x109e0970,0x9000380d, +0x109e0980,0x900038e8,0xc100000d,0xc1000210,0x900038e4,0xc1000015,0xe8000021,0x14100600, +0x00150601,0xd1fffeec,0xc1ffe0e1,0x00109500,0x0080c8e2,0x00150601,0x00119401,0x1091c741, +0x00000000,0xb800c704,0xb8004723,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d, +0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1004824, +0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00154201, +0x109e0961,0xc1ffe0ec,0xc10000e4,0x109e8951,0x120e8508,0x90003a10,0x008088ed,0xd1fffb04, +0x109e0970,0x9000380d,0x109e0980,0x900038e8,0xc100050d,0xc1000210,0x900038e4,0xc1000015, +0xe8000021,0x14100600,0x00150601,0xd1fffe24,0xc1ffe0e1,0x00109500,0x0080c8e2,0x00150601, +0x00119401,0x1091c741,0x00000000,0xb800c704,0xb8004723,0x00000000,0xb8004055,0x00000000, +0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940,0x9000c904, +0x9000891d,0xc1004824,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90000050, +0x90004055,0x00154201,0x109e0961,0xc1ffe0ec,0xc10000e4,0x109e8951,0x120e8508,0x90003a10, +0x008088ed,0xd1fffa3c,0x109e0970,0x9000380d,0x109e0980,0x900038e8,0xc100010d,0xc1000210, +0x900038e4,0xc1000015,0xe8000021,0x14100600,0x00150601,0xd1fffd5c,0xc1ffe0e1,0x00109500, +0x0080c8e2,0x00150601,0x00119401,0x1091c741,0x00000000,0xb800c704,0xb8004723,0x00000000, +0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941, +0x1081c940,0x9000891d,0x10924751,0xc2f000e1,0xc3000fe1,0x00000000,0xb800381b,0x00000001, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924761,0xc2f000e4,0xc2f000e1,0xc3000fe4,0xc3000fe1,0x00000000,0xb8003919,0x00000000, +0x9000380b,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891c,0xc1002425,0x00924725,0x001e0200,0x001f0301,0x00000000,0xa00038ec,0xa0003ceb, +0x00000001,0x009e7be9,0xe8000021,0x14103900,0x108f3c04,0x108e3805,0xe8000011,0x14003b01, +0xe8ffffd5,0x14103a01,0x0011b901,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924771,0x00000000,0xa00002e3,0x00000001,0xe800002d, +0x14003800,0xc10000e8,0x001e4201,0x00000000,0xa00079e3,0x00000001,0xe8fffff5,0x14103800, +0x108eba04,0x108e7905,0x0011ba01,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924771,0x00000000,0xa00003e3,0x00000001,0xe8000034, +0x800002e1,0x14003800,0x108e8304,0x108e4205,0x00000000,0xa0003ae3,0x00000001,0xe8fffff4, +0x800039e1,0x14103800,0x108eba04,0x108e7905,0x00118201,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002025,0x00924725,0x001ec200, +0x001e8301,0xe800003d,0x14000401,0x109e4405,0x00000000,0xa0003ae3,0x00000001,0xe8000024, +0x80003be1,0x14003800,0x108eba04,0x108efb05,0xc1ffffe1,0x008e79e1,0xe8ffffd9,0x141039fd, +0x00118201,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1002c25,0x00900724,0x00924725,0x00000000,0x90000050, +0x90004055,0x00154200,0x00150301,0xc20004e0,0xc10101e4,0xc21118e9,0xd10002d4,0xc3000fe8, +0xc30001e1,0xc10001e0,0x008e42e0,0x020ef909,0x00108300,0x90003aec,0x800039e1,0xc21000e0, +0x129e54f0,0x120ed515,0xc21000e8,0xc3000fe0,0x028f3919,0xc3000fe8,0xc10003e0,0x008e7be1, +0x008e7be8,0x900039f1,0x00000000,0x900179e1,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940, +0x9000891c,0xc1002c25,0x00924725,0x001f8201,0xc20004e0,0xc10100e5,0xc30001e0,0x020f7909, +0x00000000,0x030e02e3,0x00000001,0xe80000a9,0x14003801,0xc21110e1,0xc3000fe1,0x00000000, +0xb80038e3,0x00000001,0xc10000e0,0x029e78f5,0xe8000031,0x041038e5,0xc21110e9,0xc3000fe9, +0x001eba01,0x00000000,0xb8003ae3,0x00000001,0xc10000e0,0x029e78f5,0xe8ffffed,0x040038e5, +0xc21000e8,0xc10014e4,0x120efe15,0xc3000fe8,0xc21118f0,0xc10000e1,0xc3000ff0,0x008e79e9, +0x00000000,0x90003cf4,0x034e79ef,0x00000001,0x129e7905,0xe8000021,0x041038e5,0xc20004e4, +0xc10000e1,0xc30001e5,0x008e7ee5,0x00000000,0x800039e1,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002025,0x00924725,0x001ec201, +0xc21000e4,0x120e8215,0xc10014e0,0xc3000fe5,0x008e78e5,0x00000000,0x034e39eb,0x00000001, +0x129e3805,0xe8000021,0x14003801,0x00000000,0x034e39eb,0x00000001,0x129e3805,0xe8fffff1, +0x14103801,0xc20004e4,0xc10000e1,0xc30001e5,0x008e7be5,0x00000000,0x800039e1,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741, +0x00000000,0xa800021b,0x00000001,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924741,0x00000000,0x8400020d,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x00000000, +0xb800021b,0x00000001,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924741,0x00000000,0x9000020d,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924761,0xc20000e1, +0xc30000e1,0xe8000019,0x04c03808,0xc10000e5,0xc20000e1,0xc30002e1,0x018e42e1,0xc10000e1, +0x0101b8e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891d,0x10924761,0xc20020e0,0xc1000119,0xc30383e1,0xc10080e0,0x001e7801,0x00000000, +0x900039e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891d,0x10924761,0xe8000039,0x14100205,0xc10001e1,0xc20020e0,0x120e781d,0xc30383e1, +0x001e3801,0x00000000,0x900038e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0xd2ffffd6,0xc10000e1,0x10924941,0x1081c940,0x9000891c,0xc1002025,0x00924725,0xe8000045, +0x14100205,0xc10001ed,0x120ebb18,0x120e7b14,0xc20020e1,0xc30383e0,0x028e7ae5,0x001e3800, +0x028e79ed,0x00000000,0x900038e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0xd2ffffca,0xc10000ed,0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725,0xe8000099, +0x14100505,0xc10001e1,0xc20000e0,0xc20024e4,0x120eb81d,0xc30300e0,0xc30383e4,0xc20040ed, +0x001e7800,0xc10040e0,0x001f3901,0xc30383ec,0x028e79e8,0xc20028e9,0xc10020e0,0x90003c08, +0x028e79e1,0x001f3b00,0x121ec408,0xc30383e9,0xc20020e0,0x90003c0c,0x028e79e1,0x120efb40, +0x001eba00,0x128e7921,0xc30383e0,0x90003aec,0x128e7905,0x001e3801,0x00000000,0x900038e5, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0xd2ffff76,0xc10000e1,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0x00000000, +0x90000050,0x90004055,0x00154300,0x00150401,0xd1ffe993,0xe8000061,0x14001501,0xc2e034e4, +0xc10001e1,0xc30001e5,0x00000000,0x900039e1,0x108e540c,0xc2e038e1,0x121e7908,0xc30001e1, +0x120e7909,0x00000000,0x900038e5,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741, +0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901,0xd2ffffbc,0xc2e034e5,0xc30001e4, +0xc10000e1,0x00000000,0x900039e1,0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2e03ce1, +0xc30001e1,0x00000000,0x90003809,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2e040e1,0xc30001e1,0x00000000,0x90003809, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924751,0xc2e044e1,0xc30001e1,0x00000000,0x90003809,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2e048e1,0xc30001e1, +0x00000000,0x90003809,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1004c24, +0x90004920,0x10920741,0x00900724,0x00924725,0xc20074e5,0xe80000d0,0xc10001e0,0xc3000fe5, +0x14100200,0x900039e1,0xc20120e0,0xc20000e8,0x109ec871,0xc30382e0,0xc30003e8,0x109e4861, +0x00000000,0xb80038e0,0x900039ea,0xd1fffba2,0xc1000008,0x90003be1,0xc20023e8,0xc20100e4, +0xc2be80e1,0xc300ffe8,0xc30090e4,0xc30001e1,0x109f8880,0x001f7a00,0x109f0851,0x001ef900, +0x109e8840,0x001e7801,0x109e0830,0x90003cf4,0x90003e19,0x00000000,0x900038e4,0x90003aed, +0xd1fff330,0xc1ffe0e1,0x00000000,0x0080c8e1,0xc1000009,0xd1fff9d6,0xc1000009,0x1091c741, +0x00000000,0xb800c704,0xb8004723,0x00000001,0x00000000,0xb800871d,0x07000101,0x10824741, +0x00100901,0xc20100ec,0xc20000e4,0x109e8871,0xc30382ec,0xc30003e4,0x109e0861,0x00000000, +0xb8003be0,0x900038e6,0xd1fffae6,0xc1000008,0x90003ae1,0xc2be80e1,0xc20023e4,0xc30001e0, +0xc20100e9,0xc300ffe4,0x109f0850,0xc30090e9,0x109f4880,0x001e7800,0x001e3901,0xd2ffff64, +0x109e8840,0x001efa01,0x109e0830,0x90003ce0,0x90003d19,0x00000000,0x900038e4,0x90003aed, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1005824,0x90004920,0x10920741,0x00900724, +0x00924725,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc20004e4, +0xc100005d,0xc30001e5,0x001e7901,0x1085d704,0xc10000e1,0xe8fffff8,0x800039e1,0x14801720, +0x108e7905,0xc21100e4,0xc2000050,0xc10001e1,0xc3000fe4,0xc2011858,0xc3000051,0xc3038258, +0x900039e1,0xc100005c,0x00151400,0xc1000055,0xc1ffe0e0,0xb80016e8,0x109f4951,0x109f0960, +0xc10400ec,0x109e8971,0xc10000e4,0x109e0980,0x008088e1,0xd1ffee6c,0x90003aec,0xc100000d, +0xc1000210,0x90003c50,0x008e95e9,0xc1000014,0x900038e4,0x90003de9,0xd1fff198,0xc1ffe0e1, +0x00000000,0x0080c8e1,0xc1000009,0x1085d704,0xc10080e0,0xc10400e5,0xe8ffff98,0xc10400e4, +0x008555e5,0x048017e0,0x008514e5,0x1091c741,0x00000000,0xb800c704,0xb8008059,0x00000000, +0xb800c05c,0xb8004722,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101, +0x10824741,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1003025,0x00924725, +0xc20014fc,0xc20010ed,0xc20018f4,0xc10000f8,0xc20028e5,0xc30001fc,0xc30001ec,0xc30001f5, +0xc10000f0,0xc10000e0,0xc10000e9,0xc30001e4,0x90003df0,0x90003ff9,0xc1000018,0x840039e0, +0x80003be9,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1003025,0x00900724,0x00924725,0x00000000,0x90000050, +0x90004055,0x00154200,0x00150401,0xc20028e1,0xc30001e1,0x00000000,0xa80038e3,0x00000001, +0xe8000089,0x14103801,0xc2001ce0,0xc20020e9,0xc30382e0,0xb80102f0,0xc30001e9,0x00000000, +0xb80038e1,0xc1ff9fec,0xc10001e0,0xc20028e5,0xc30001e4,0x00000000,0xc100000d,0x129e7c0c, +0x840039e0,0xc1000711,0x120e3914,0x029e78ec,0xc1000115,0x028eb9e0,0x90003ae5,0x00000000, +0xb80142e7,0xc2ffffe1,0x029e39e1,0xd1007438,0xc2001ce0,0x120e7839,0xc30382e0,0x028e7ae5, +0xc1000408,0x900038e5,0x00000000,0xb80255e4,0xb8039509,0x00115400,0xb802d511,0xd1001bc4, +0xc20024e1,0xc30001e1,0x0010f900,0x900038e5,0xc20018e4,0xc21ef4e0,0xc20024ed,0xc30001e4, +0xc30001e0,0xc2001ce9,0xc25cc8e0,0xb80039e8,0xb80038e1,0xc30001ec,0xc30001e8,0xc30001e1, +0x00000000,0x90003ae0,0x90003b1a,0x008e7a19,0xe800016d,0x04b039e1,0xc20020e0,0x009e78e9, +0xe8000144,0xc30001e1,0x14a03900,0x900038e5,0xc2001ce0,0x0010f901,0xc30001e1,0x00000000, +0xb8003809,0xd1001e1f,0xc20010ec,0xc21ef4e0,0xc1ffffe9,0xc30001ec,0xc30001e0,0xc20010e5, +0x00000000,0xa0003be0,0xb800380b,0x00000001,0xd1009028,0x02ae3ae1,0xc30001e4,0x129e3805, +0x00000000,0x800039e1,0xc20020e0,0xc20018e8,0xc20024e5,0xc30001e0,0xc30001e8,0xc30001e5, +0xc21ef4e0,0xb80038e0,0xc2001ced,0xc30001e0,0xb8003aec,0xb80039e1,0xc30001ec,0xb80038e0, +0xc20020e9,0xc20018e4,0xb8003bf4,0xc30001e9,0x122f3805,0x120f3c04,0x00000000,0x008efbe1, +0xd1001d80,0x00000000,0xc30001e5,0xc10000e0,0x0080bdf0,0x009efbe1,0x0010fb00,0x90003aec, +0x900039e1,0xc20020e8,0xc20018e4,0xc20018e1,0xc30001e8,0xc30001e4,0xc30001e1,0x00000000, +0xb8003ae8,0xb80039e7,0x00000001,0x008e79e9,0x00000000,0x900038e5,0xc1000019,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102, +0x00100901,0xd2fffee4,0xc20020e5,0xc30001e4,0xc10000e1,0x00000000,0x900039e1,0xc20024e0, +0xc25cc809,0xc30001e0,0xc3000109,0x00000000,0xb800380d,0xd1001ccf,0xc20024e8,0xc20018e4, +0xc20018e1,0xc30001e8,0xc30001e4,0xc30001e1,0x00000000,0xb8003ae8,0xb80039e7,0xd2ffff7d, +0x008e79e9,0x00000000,0x900038e5,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002025,0x00900724,0x00924725,0xc20018e1,0xc30001e1,0x00000000,0xb80038e3,0x00000001, +0x121e3809,0xe8000049,0x14a03801,0xc20010ec,0xc20018e0,0xc1ffffe9,0xc30001ec,0xc30001e0, +0xc20010e5,0x00000000,0xa0003be0,0xb800380b,0x00000001,0xd1008e64,0x02ae3ae1,0xc30001e4, +0x129e3805,0x00000000,0x800039e1,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824742,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002425,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00154200,0x00150301, +0xd1001d7c,0xc10000e0,0xc10000e5,0x00000000,0x900202e0,0x9001c2e5,0xc1000b0c,0x10808371, +0xd1001e2c,0x10809472,0xc100010d,0xe8000021,0x14100601,0x00000000,0xb801d5e7,0xc24000e1, +0x028e39e1,0x00000000,0x9001d5e1,0xd1001e00,0x10809472,0xc100010d,0xe8000079,0x14100601, +0x00000000,0xb801d5e7,0xc21000e1,0x028e39e1,0x00000000,0x9001d5e1,0xd1001dd4,0x10809472, +0xc100020d,0xc10004e1,0x009e3819,0xe8000070,0x900015e1,0x14103811,0xc11005e0,0xc1ffff19, +0x00000000,0x9003d4e1,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000, +0xb8004054,0xb8000051,0x07000102,0x00100901,0x00000000,0xb801d5e7,0xc24000e1,0x029e39e1, +0xe8ffff99,0x14003801,0xd2ffffc0,0xc11004e1,0x00000000,0x9003d4e1,0xc1ffff19,0xd1001d50, +0x10809472,0xc100010d,0xe8000031,0x14100601,0x00000000,0xb801d5e0,0x10809473,0xd1001ea1, +0x128e3841,0xc100100c,0x9001d5e0,0xc2ffff11,0x00000000,0x84031519,0xd1001d14,0x10809472, +0xc100040d,0xe800001d,0x1410063d,0xd2ffff5c,0xc11006e1,0x00000000,0x9003d4e1,0xc1ffff19, +0x00000000,0xb801d5e7,0xc21000e1,0x029e39e1,0xe8000071,0x14003801,0x00000000,0xb80015e3, +0x00000001,0x122e3805,0xc1003ce0,0x108e780d,0xc20320e0,0x060e79e1,0xc30001e1,0x120e0608, +0x008e79e1,0x00000000,0x034e39e3,0x00000001,0x00000000,0x900115e1,0xd1001c94,0x10809472, +0xc100020d,0xe8000059,0x1410060d,0xd2fffedc,0xc11007e1,0x00000000,0x9003d4e1,0xc1ffff19, +0x00000000,0xb80015e3,0x00000001,0xc1003ce0,0x109e7805,0xc20320e0,0x060e79e1,0xc30001e1, +0x120e0608,0x008e79e1,0x00000000,0x034e39e2,0xd2ffffaa,0x00000000,0x900115e1,0xc2044ce0, +0xb801d5e4,0x120e4609,0xc30001e1,0x00000000,0x034e79e1,0xc21000e1,0x029e39e1,0xe8000039, +0x14003800,0x900155e5,0x121eb904,0xb801d5e5,0x00000000,0x900155ea,0xc24000e1,0x029e39e1, +0xe8000015,0x14003801,0x121e3a05,0x00000000,0x900155e1,0xd1001bd8,0x10809472,0xc100010d, +0xe8000021,0x14000601,0x00000000,0xb801d5e7,0xc10080e1,0x028e39e1,0x00000000,0x9001d5e1, +0xd1001bac,0x10809472,0xc100010d,0xe8000021,0x14000601,0x00000000,0xb80215e7,0xc10100e1, +0x028e39e1,0x00000000,0x900215e1,0xd1001b80,0x10809472,0xc100020d,0xd1001b74,0xc10003e1, +0x009e3819,0xc100020c,0x900055e0,0x10809471,0xd1001b5d,0x00000000,0x90009518,0x10809471, +0xc100010d,0xe8000021,0x14000601,0x00000000,0xb801d5e7,0xc10020e1,0x028e39e1,0x00000000, +0x9001d5e1,0xd1001b28,0x10809472,0xc100010d,0xe8000021,0x14000601,0x00000000,0xb801d5e7, +0xc10040e1,0x028e39e1,0x00000000,0x9001d5e1,0xd1001afc,0x10809472,0xc100020d,0x00000000, +0xb801d5e0,0x9000d51b,0x00000001,0x129e3841,0xe800001d,0x14003801,0xd1001ad4,0x10809472, +0xc100100d,0x00000000,0x84035519,0xd2fffd1e,0xc1000019,0x10924941,0x1081c940,0x9000c904, +0x9000891d,0xc100a824,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90010060, +0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0x00154200, +0x00158301,0x00000000,0xb801c2e7,0x109e0821,0x00000000,0x900038e5,0x00000000,0xb80202e7, +0x109e0811,0x00000000,0x900038e5,0x00000000,0xb801c3eb,0xc10080e1,0x029e3ae1,0xe8000411, +0x14003800,0xc1000051,0xc1000161,0x00000000,0xb80003e3,0x00000001,0xe8000015,0x1410380c, +0xc10000e5,0xc21000e1,0x029e7ae1,0xe80003e9,0x14003901,0xc100485d,0xd1008347,0xe800032d, +0x14100601,0xc103e8e0,0x120e9808,0xc10004e5,0xc10001e0,0x0615d7e0,0x009679e9,0x00963861, +0xc1ffb8e4,0xb80015e4,0xc10048e1,0x00000000,0x0080c8e6,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80055ea,0xc10044e1,0x009e48e0,0x00000000,0xc1ff94e1,0x00000000,0x900039e8, +0x008088e1,0x00000000,0xb80095e6,0xc10040e1,0x009e08e1,0x00000000,0x900038e5,0x00000000, +0xb800d5e7,0x109e08f1,0x00000000,0x900038e5,0x00000000,0xb80115e7,0x109e08e1,0x00000000, +0x900038e5,0x00000000,0xb80155e7,0x109e08d1,0x00000000,0x900038e5,0x00000000,0xb80195e7, +0x109e08c1,0x00000000,0x900038e5,0x00000000,0xb801d5e7,0x109e08b1,0x00000000,0x900038e5, +0x00000000,0xb80215e7,0x109e08a1,0x00000000,0x900038e5,0x00000000,0xb80255e7,0x109e0891, +0x00000000,0x900038e5,0x00000000,0xb80295e7,0x109e0881,0x00000000,0x900038e5,0x00000000, +0xb802d5e7,0x109e0871,0x00000000,0x900038e5,0x00000000,0xb80315e7,0x109e0861,0x00000000, +0x900038e5,0x00000000,0xb80355e7,0x109e0851,0x00000000,0x900038e5,0x00000000,0xb80395e7, +0x109e0841,0x00000000,0x900038e5,0x00000000,0xb803d5e7,0x109e0831,0x00000000,0x900038e5, +0x00000000,0xb80016e6,0xc1006ce1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80056e6, +0xc10068e1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80096e6,0xc10064e1,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb800d6e6,0xc10060e1,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80116e6,0xc1005ce1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80156e6, +0xc10058e1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80196e6,0xc10054e1,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb801d6e6,0xc10050e1,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80216e6,0xd1fff924,0xc1004ce1,0x009e08e1,0x00000000,0x900038e5,0xc1ff94e0, +0xb80016e5,0xc1ffa8e0,0x034e88e0,0xb80156e1,0x00000000,0x034e48e3,0x110ec600,0x00000000, +0x010ebae5,0x010e39e0,0x029e7be9,0x029e39e1,0xe800007d,0x14003801,0xd100162c,0x10809573, +0x00000000,0xb80016e0,0xb80155e7,0x00000001,0xe800012d,0x14103804,0x009506e5,0x00000000, +0xb80156e4,0x008e1953,0x00000001,0x00000000,0x061539e1,0xc10000e1,0xe8000025,0x04d03850, +0xc10000e9,0xc10000e5,0xc2bb80e1,0x008e79e1,0xe8fffff9,0x04b03950,0x108eba05,0xc1ffffe1, +0x00853ae1,0xe8000025,0x14f01421,0xd1001610,0x10809572,0xc100080d,0xd1008024,0x00109503, +0xe8fffd01,0x14000601,0xc1fff8e1,0x00000000,0x034e08e3,0x00000001,0xc1fffce0,0x9001d5e1, +0x00000000,0x034e08e3,0xe800002d,0x14901420,0x900215e1,0x00000000,0xb80016e3,0x00000001, +0xe80000cd,0x1410380d,0xc10280e1,0xe80000c1,0x04b014e1,0xc11004e0,0xc1ffff19,0x00000000, +0x9003d5e1,0x1091c741,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb8004055,0x00000000, +0xb8014064,0xb8004721,0x00000000,0xb8000050,0xb8010061,0x00000000,0xb800c05c,0xb800871d, +0x07000101,0x10824741,0x00100901,0xd2fffc02,0xc1000061,0xd2fffc26,0xc100905d,0x00000000, +0xb80156e4,0x008e1853,0x00000001,0x00000000,0x061539e1,0xc10000e1,0xe8000029,0x04d03850, +0xc10000e9,0xc10000e1,0x00000000,0x00000000,0x008e385d,0xe8fffff5,0x04b03850,0x108eba05, +0xd2fffee4,0xc1ffffe1,0x00853ae2,0xc103e8e0,0xc1000019,0xd2ffff50,0x061e14e2,0x00000000, +0x900115e1,0x10924941,0x1081c940,0x9000891c,0xc1005025,0x00900724,0x00924725,0x00000000, +0x90000050,0x90004055,0x00000000,0xa40202e4,0xac0082eb,0xc100d2e1,0x129e3908,0x0093bae1, +0xe80000d1,0x14003801,0xc1000255,0x00000000,0xa40242e3,0x00000001,0xe80000c9,0x14103809, +0x129e3921,0xe8000035,0x14003800,0xc1000050,0xc100004d,0x129e3911,0xe80000a1,0x14003801, +0xc1ffff35,0xc2cc2c2c,0xc1000029,0x10830248,0xc300012d,0xd60120ea,0x00000000,0xa40342e8, +0xa40382e5,0x00000000,0xa403c2e5,0xc10240e1,0xea000041,0x120efa0c,0x00000000,0x120eb90d, +0x120e790c,0x00944ee8,0x00948eed,0x04f014e0,0x00940ee5,0x10835304,0x10831308,0x1083c249, +0x12039308,0x1202cd08,0x12028c09,0xd6016112,0x1091c740,0xb8004055,0x00000000,0xb8000050, +0xb800871d,0x07000101,0x10824741,0x00100901,0xd2ffff3e,0xc1000155,0xd2ffff6e,0xc1000035, +0x129e3911,0xe8000025,0x14003801,0xc2cc2c2c,0x10830249,0xc100004c,0xc1000028,0xc300012d, +0xd6002142,0xd2ffffaf,0xc100004c,0x1082c248,0xc1000029,0xd600214a,0xd2ffff9b,0x10924941, +0x1081c940,0x9000891c,0xc1003425,0x00924725,0x192e4300,0xc10400e0,0x118ec301,0xe80000a4, +0x122e7908,0x129eb90d,0x04f002e0,0x0992bbe8,0x099ffbe5,0xc2c4a0e0,0xc2b494e4,0x120e8209, +0xc30001e0,0xc30001e5,0x00000000,0x031e02e0,0x034fbae7,0x00000001,0x008fffe1,0xe80000e1, +0x14e03f01,0xc10000e4,0x11ce3f81,0x009ef9fd,0xc10001e4,0x109ebb05,0x020e79e9,0x008e7ee5, +0x022ef9ed,0x09bfb8ed,0x108e4a0c,0xc2cc44e1,0x120e7908,0xc30001e1,0x00000000,0x034e39e3, +0x00000001,0x00000000,0x21c1bee2,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x121f420c,0xc2c4a0e4,0xc2c4a0e1,0xc2b494ec,0x108ebd04,0xc30001e5,0xc30001e0,0x120f3d08, +0xc30001ed,0xc2b494e0,0x031e3ae0,0x031e7de5,0x120e7a08,0x034e7cec,0xc30001e1,0x00000000, +0x034e79e2,0x108e3910,0x00000000,0x011ef9e1,0x008e38ec,0x00000000,0x022eb9ed,0x129e021c, +0x009e79e8,0x008fffe1,0x00000000,0x061e39e1,0xd2ffff2d,0x122e380d,0x008fbae1,0xc2ffffe0, +0x11ee7f14,0x020efefd,0xc37fffe1,0x001e3801,0xd2ffff38,0x009e38ed,0x09be39e1,0x008fb8ed, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1003425,0x00900724,0x00924725, +0x00000000,0x90000051,0x00150301,0xd10012c3,0x109fd404,0xc10001e0,0x109e5409,0xc2b1fce0, +0x020ef8fc,0xc10000f1,0x02af86ec,0xc20000e8,0x120e7909,0xc30001e0,0x029f7eec,0xc1001ded, +0xc31000e8,0x034e39e0,0x009e3cf5,0x001e3a00,0x028ebee0,0x009e7b51,0x022e38fc,0x020e7ae5, +0x008e79e1,0x00000000,0x21c1b9e2,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741, +0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000c904,0x9000891d, +0xc1005424,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0x00150200,0x00154300,0x0015c401,0x00000000,0xb800435b, +0x00000001,0xe8000139,0x14001601,0x00000000,0xb800830d,0xd10011db,0x109e8840,0xc1fff4e4, +0xc1fff0e1,0x008108e4,0x90003a19,0x008148e0,0xb8001552,0xd1004f22,0x00108600,0x0010d401, +0xc1fff0e8,0xc1fff8e4,0xc1fff0e1,0x008148e0,0x034088e8,0x008108e5,0xd1004efe,0x0010d401, +0xc1fff0e8,0xc1fffce4,0xc1fff0e1,0x008148e0,0x034088e8,0x008108e5,0xd1004ede,0x0010d401, +0xc1ffffe0,0xc10001e5,0xc1001de0,0x008e96e0,0xc1000029,0xc1fff4e0,0x009f7858,0x020fb9e9, +0x008fc8e0,0x001ed700,0xc10000f1,0x00000000,0x00000000,0x034e3ff3,0x00000001,0x02aeb8f9, +0xc10000e0,0xb80115e0,0x029e7af9,0x009e38e4,0xb800d5e1,0x028e3ae1,0x020e78f5,0x008e79e1, +0x10828a04,0x00000000,0x21ce39e1,0xe8ffffc0,0x108f3c11,0x14900a0c,0x108efb10,0x90003be1, +0x1091c741,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb800c05c,0xb8004722,0x00000000, +0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0x00000000, +0xb800835a,0xd10010aa,0x0010d601,0xd10010a0,0x109e0831,0x0010d600,0x90003818,0x00109402, +0xd100108c,0x109e0821,0x0010d600,0x90003818,0x00109402,0xd2ffff0c,0x109e0811,0x00000000, +0x9000381a,0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x9000c905,0x1081c724,0xc1007025, +0x00900724,0x00924725,0x00000000,0x90030080,0x90034085,0x00000000,0x90028078,0x9002c07d, +0x00000000,0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060, +0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece4, +0xc1ffe8e0,0x0017c201,0x00000000,0x034707e4,0x034507e2,0x00178300,0x00154501,0x00174401, +0xe8000334,0xc10000e0,0xc1000081,0x14000400,0x90001ce1,0xe8000319,0x14100305,0xc10001e1, +0xe800032c,0x900014e1,0x14000401,0xc10008e1,0xd1000f9c,0x0010f803,0x00109f00,0x90001519, +0x00000000,0xb800140d,0xd1000f87,0xc10000e0,0x90005519,0xe8000045,0x04103874,0xc100016d, +0xc10000e1,0xe8000035,0x04f03878,0xc100026c,0xc1000085,0x10851521,0xd1000f54,0x00109f02, +0xc100040d,0x10886104,0x80001419,0xe8ffffed,0x04902178,0x10851405,0xc10000e1,0xe8000221, +0x04f0386c,0xc1000069,0x10865528,0x11061d00,0x1085d521,0xc10000e1,0xe80001f1,0x04f03878, +0xc1000085,0x00159901,0xd1000f04,0x00109f02,0xc1000c0d,0xd1000ef9,0x00000000,0x84001618, +0x00109f01,0xc100090d,0xd1000ee5,0x00000000,0x84005618,0x00109f01,0xc100080d,0xe8000258, +0x84009619,0x14001d01,0xc10009e1,0xd1000ec0,0x00109f00,0x0010f803,0x00000000,0xac0056e4, +0xac0016ed,0x00000000,0xb8001ce9,0x00000000,0x8400d619,0xc10120e1,0x110e2000,0x00000000, +0x01ce79e1,0x008e7aec,0x029e39e1,0xe8000010,0x90001ce5,0x14003801,0xc1200d81,0xd1000e70, +0xc10000e1,0x00000000,0x800216e0,0x00109f01,0xc100010d,0xe800020d,0x14000601,0xd1000e50, +0x00109f02,0xc100020d,0x110e4600,0x110e2001,0x029e39e0,0x80025619,0xe800000d,0x14003801, +0xc1200e81,0x110e4608,0x031e5784,0x110e2001,0x00000000,0x029e98e7,0x111e7901,0x029e7ae5, +0x029e39e1,0xe800000d,0x14003801,0xc1200f81,0x00109f01,0xd1000df8,0xc10007e4,0xc10024e1, +0x00000000,0x800456e0,0x800416e5,0xc100010d,0xe800016d,0x14000601,0x00000000,0xa40216e3, +0x00000001,0xc100ffe0,0x128e7821,0x029e39e1,0x00000000,0x800216e1,0xd1000db4,0x00109f02, +0xc100050d,0xd1000da9,0x00000000,0x80029618,0x00109f01,0xc100050d,0xc1000054,0x8002d618, +0x10851635,0xd1000d88,0x00109f02,0xc100030d,0x10855504,0x80001419,0xe8ffffed,0x1490150c, +0x10851405,0xe8000175,0x14001d01,0xc10002e1,0xd1000d5c,0x00109f00,0x0010f803,0x00000000, +0xa40216e3,0x00000001,0x10886104,0x028e7818,0xc100ffe1,0xe8fffe34,0x029e39e1,0x04902178, +0x108596e8,0x800216e1,0x10869a04,0xc10074e1,0xe8fffe04,0x008659e1,0x04901a6d,0x0011a001, +0x1091c77c,0xb8000050,0xb8004055,0x1091c724,0xb8008058,0xb800c05d,0x00000000,0xb800c704, +0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071,0x00000000, +0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x1082477c,0xb8034084,0xb800871d, +0x07000101,0x10824925,0x00100901,0xd2fffcf6,0xc10002e1,0xe8000011,0x14100305,0xd2fffce6, +0xc10005e1,0xd2fffcde,0xc10003e1,0xd2fffce6,0xc10009e1,0xd2fffdba,0xc10004e1,0x00000000, +0xa40256e3,0x00000001,0xe8fffeb1,0x14103809,0xd2fffea8,0xc10008e1,0x00000000,0x800416e2, +0xc10000e0,0x10851629,0xc1000054,0x800256e1,0xd1000c3c,0x00109f02,0xc100050d,0x10855504, +0x80001419,0xe8ffffed,0x1490150c,0x10851405,0xd1000c1c,0x00109f02,0xc100040d,0xd1000c11, +0x00000000,0x80041618,0x00109f01,0xc100030d,0xd2fffe94,0x8004561b,0xd2fffe9a,0xc10003e1, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1005024,0x90004920,0x10920741,0x00900724, +0x00924725,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069,0x00000000, +0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0x00170401, +0x00164200,0x00158500,0x00154301,0x00000000,0xb80002e9,0xc2c8a4e4,0xc10001e1,0xc30001e4, +0xc1fff8f1,0x109e0820,0x00000000,0x008e78e5,0x00000000,0x900038e9,0x00000000,0xb80042eb, +0x109e0811,0x00000000,0x900038e9,0x00000000,0xac00c3ec,0xa40243e3,0xc2c8a4e9,0xc30001e8, +0x120efb05,0x00000000,0x0316b9ec,0x0316fbea,0xe8000130,0x008608f1,0x14103809,0x00000000, +0xa40203e3,0x00000001,0x129e3821,0xe800010d,0x14003800,0xc100005d,0xc10011e1,0xe800003d, +0x14003800,0x1095b805,0x10850349,0xd1000ae0,0x00109900,0x0010db03,0xc1ffffe1,0x00000000, +0x80001418,0x008596e1,0xe8ffffe5,0x141016fc,0x1085d704,0x10851405,0x10855548,0xc1001159, +0x00851755,0xd1000aa8,0x00109900,0x0010da03,0xc1ffffe1,0x00000000,0x80001418,0x008596e1, +0xe8ffffe5,0x141016fc,0x1085d704,0x10851405,0xc1000258,0x008e9755,0xc1ffffe0,0xc10000e5, +0x00000000,0x80003ae4,0x008596e1,0xe8ffffed,0x141016fc,0x108eba05,0xd10008c8,0x00109800, +0x0010d903,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059,0x00000000, +0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071, +0x00000000,0xb8004720,0xb800871d,0x07000101,0x10824741,0x00100901,0xd2ffff06,0xc10012e1, +0x129e0521,0xe80000dd,0x14003801,0xc100005c,0x108e8448,0x108e4349,0x00000000,0x031e3a5e, +0x1085d705,0xe8fffff5,0x14901718,0x108e7904,0x800039e1,0x129e1611,0xe80000d5,0x14003801, +0xc100065c,0x108e9c48,0x108e5561,0x00000000,0x031e3a5e,0x1085d705,0xe8fffff5,0x1490172c, +0x108e7904,0x800039e1,0x129e1609,0xe80000cd,0x14003801,0xc1000b5c,0x108e9c48,0x108e5575, +0x00000000,0x031e3a5e,0x1085d705,0xe8fffff5,0x14901740,0x108e7904,0x800039e1,0x129e1605, +0xe80000c5,0x14003801,0xc100105c,0x108e9c48,0x108e5589,0x00000000,0x031e3a5e,0x1085d705, +0xe8fffff5,0x14901754,0x108e7904,0x800039e1,0xd2fffec8,0xc10000e1,0x00000000,0x8009d5e2, +0xc100005c,0x10850349,0xd1000904,0x00109900,0x0010db03,0x1085d704,0x80001419,0xe8ffffed, +0x14901718,0x10851405,0xd2ffff2f,0xc100065c,0x10851561,0xd10008d8,0x00109900,0x0010db03, +0x1085d704,0x80001419,0xe8ffffed,0x1490172c,0x10851405,0xd2ffff37,0xc1000b5c,0x10851575, +0xd10008ac,0x00109900,0x0010da03,0x1085d704,0x80001419,0xe8ffffed,0x14901740,0x10851405, +0xd2ffff3f,0xc100105c,0x10851589,0xd1000880,0x00109900,0x0010da03,0x1085d704,0x80001419, +0xe8ffffed,0x14901754,0x10851405,0xd2ffff47,0x10924941,0x1081c940,0x9000891c,0x90004921, +0xc2094c24,0x10920741,0x00924725,0x00000000,0xa40203e3,0x00000001,0x129e3821,0xe8000011, +0x14003800,0xc10000f9,0xc10002f9,0xc10012e1,0x00000000,0x061478f9,0xc10240e1,0xe800005d, +0x04f011e1,0xc2f700e8,0xc2a388e0,0x120e5105,0xc3ffffe8,0xc30001e0,0x120f1109,0x008f48e8, +0x008ef9e1,0x00000000,0xa8003be0,0x034ebc0b,0x00000001,0x10845104,0x120e7808,0xc10240e1, +0xe8ffffe4,0x108efb08,0x008e7de5,0x049011e0,0x108f3c10,0x900039e9,0xc10012e0,0xc2f700e8, +0xc10240e5,0xc3ffffe8,0x061f38f8,0xc10000e1,0x008e88e9,0x120e7c08,0x0093f9f0,0xc1000045, +0xe800002c,0x00000000,0x00843ae5,0x04f0383c,0x008ef909,0xc1000038,0xc1000831,0xc1000434, +0x1082bb30,0xc1000c2d,0xd600430e,0x1091c741,0x00000000,0xb8004720,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891c,0x90004921,0xc1006024,0x10920741,0x00924725, +0xc2cbc0e4,0x160e8230,0xc10004e1,0xc30001e4,0x00000000,0xc2a388f5,0xc1fff438,0x008e38e4, +0xc10000e5,0x109e0830,0x0343f8e8,0xc1000035,0x10930820,0xc100002c,0x10928811,0xc1ffe8fc, +0xc10000f8,0x109f0861,0xc10000ec,0x900038e4,0x109e8851,0xc10000e4,0xa4000f28,0x109e0841, +0xc30001f4,0x90000c34,0x00834839,0x008308fc,0x90003cf8,0x90000a2d,0x1082cf04,0x900038e4, +0x90003aed,0xc10000fc,0xc10000f8,0x001f7d01,0xc1ffffe1,0x00828ae1,0xe800002d,0x14100afd, +0x00000000,0xa4000be0,0x108e7f05,0x119e390d,0x00000000,0x00000000,0x061ff8e6,0x1082cb04, +0x1092b805,0x120f3f09,0x008e0cf0,0x034e4df0,0x034eccf1,0x008e8cf3,0x108e7b04,0x161e3f18, +0x161e7949,0x00000000,0x900038e5,0x008e39e0,0x034e0cf1,0x008e38ed,0x00000000,0x84003de2, +0xe8000031,0x14103819,0xc10000e4,0x008e0df1,0x00000000,0x90003ae5,0x00000000,0x034e4df3, +0x00000001,0x108e7905,0x00000000,0x900038e5,0x108fbe04,0xc10240e1,0xe8ffff59,0x04903ee0, +0x108f7d09,0x1091c741,0x00000000,0xb8004720,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1002025,0x00924725,0xc20014e4,0xc20188ec,0xc20014e1,0xc30382e4, +0xc30382ec,0xc10000e9,0x00000000,0xb80039e4,0x90003beb,0x00000001,0xc30382e0,0x128e7909, +0x00000000,0x900038e5,0xd2000003,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891c,0xc1004c25,0x00924725,0xc2001ce0,0xc22000ed,0xc30382e1, +0x00000000,0xb80038e7,0xc20800e0,0x00000000,0xc100023d,0xe80000c4,0x029e79e0,0x029e39ed, +0x14000400,0x122eb834,0x122f392d,0xc21200e1,0x008402e1,0xe80000b8,0xc25cc839,0x14100f04, +0xc3000139,0xc10000e1,0xe8000079,0x04f0380c,0xc1000035,0xc10000fc,0xc10004f9,0xc2ffffe4, +0x034f7f08,0x034efe09,0xc2ffffe0,0xc10200f0,0xc10200e9,0xc301ffe4,0xc301ffe0,0x10834d09, +0x001e7901,0x001e3800,0x008ebdf0,0x008f3be9,0x00000000,0x093eb9e8,0x093e78f1,0x122e7a28, +0x122e3928,0x108fbe21,0xe8ffffb4,0x84004ee0,0x84000ee5,0x04900d0c,0x10838e10,0x108fff21, +0x0201833d,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0xd2ffff5c,0xc10002e1, +0x00000000,0x0093f8e9,0x00140201,0xe80000a5,0x14103c05,0xc10000e1,0xe8ffffc9,0x04f0380c, +0xc1000035,0xc1000028,0xc10004fd,0xc2ffffe4,0x034f0a08,0x034ed029,0xc2ffffe0,0x034f3f08, +0x034ed0fd,0xc10200f4,0xc10200e8,0xc301ffe5,0xc301ffe1,0x008fbced,0x122f3e04,0x008efcec, +0x001e7901,0x122efb04,0x001e3800,0x008f3cf5,0x10834d08,0x008e7be8,0x093eb9f1,0xeaffffb0, +0x122e3a28,0x093eb8e5,0x122e3a28,0x84004ee0,0x84000ee1,0x10838e20,0x8400cee0,0x84008ee1, +0x04900d0c,0x10828a20,0x108fff21,0xd2ffff37,0xc10000e1,0xe8ffff2d,0x04f0380c,0xc1000035, +0xc1000030,0xc100042d,0xc2ffffe1,0xc301ffe1,0x0012b801,0xd6004002,0xd2ffff0b,0x10924941, +0x1081c940,0x9000891d,0x10924771,0xc10000e1,0xe8000031,0x04e03808,0xc10001e8,0xc10000e5, +0x00000000,0x008eb9e9,0xe800000d,0x04a03a09,0xc10000e9,0x108e7905,0xe8ffffe9,0x04803909, +0x0011ba01,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891c,0x9000c905,0x10900760,0x10924761,0xc2000ce5,0xc10000e0,0xc30001e5,0x00000000, +0x900039e1,0x00000000,0xb80002e3,0x00000001,0xe8000041,0x14003801,0xe8000019,0x14003805, +0xe800003d,0x14003809,0xe8000049,0x1400380d,0xc1000019,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824742,0x07000102,0x00100901,0xd1ffe03e,0x10808211,0xd2ffffdf,0x00000000, +0xb801c211,0xd1ffe096,0xc1000015,0xd2ffffcb,0x00000000,0xb801c211,0xd1ffe377,0xd2ffffbb, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725, +0x001ec201,0xc20010e1,0xc30001e1,0x00000000,0xa00038e3,0x00000001,0x129e3805,0xe8000069, +0x14003801,0xc20018e0,0xc20004e8,0xc28000e5,0xc30001e0,0xc30000e9,0x008e7ae4,0xb80038e3, +0x00000001,0x008eb9e1,0xd1ffd205,0x12114308,0x00113b00,0x0010fa01,0xc1000309,0xd1ffd74e, +0xc1000309,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102, +0x00100901,0xc20018e4,0xc20004e1,0xc30001e4,0xc30000e1,0x00000000,0xb80039e6,0xd2ffffae, +0x008eb9e1,0x10924941,0x1081c940,0x9000891d,0x10924761,0xc10000e4,0x9000020c,0xc10008e1, +0x00000000,0x8400c2e0,0x840082e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891c,0xc1002025,0x00924725,0x00000000,0xb80002e0,0xb80003ed, +0x00000000,0xac00c3e6,0x00000000,0xac00c2e9,0xc10008e0,0x00000000,0x108eb805,0x009e38e4, +0x009e7be9,0x120e790d,0x008e7ae5,0x0081b9e1,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924751,0x00000000,0xac00c2e3,0x00000001, +0xe800002d,0x14103821,0x00000000,0xb80002e3,0x00000001,0x0011b801,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x00000000,0xb80002e2,0xd2ffffe2,0x108e3805,0x10924941, +0x1081c940,0x9000891c,0xc1002025,0x00924725,0x00000000,0xac00c2e0,0xb80002ea,0x129e431d, +0x121ec30d,0xc2ffffe0,0x009e78e4,0x008ebaed,0xc2ffffe0,0x900002e8,0x029e79e1,0x029e39e1, +0xe8000040,0x8400c2e1,0x14a03821,0x00000000,0xac00c2e0,0xb80002e7,0x00000001,0xc2ffffe0, +0x108eb904,0x108e7821,0xc2ffffe0,0x900002e8,0x029e79e1,0x029e39e1,0x00000000,0x8400c2e1, +0x00000000,0xac00c2e3,0x00000001,0xe800002d,0x14e03821,0x00000000,0xb80002e3,0x00000001, +0x00000000,0xa40038e7,0xc2ffffe1,0x029e39e1,0x00000000,0x840082e1,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002825,0x00924725, +0x00000000,0xac00c2e3,0x00000001,0xe800002d,0x14103821,0x00000000,0xb80002e3,0x00000001, +0x00000000,0xa40038e7,0xc2ffffe1,0x029e39e1,0x00000000,0x840082e1,0x00000000,0xac00c2ef, +0x00000001,0xe8000051,0x04f003ed,0xc10001e0,0xac0082ec,0x009ebb0d,0xc2ffffe4,0x020ef8ec, +0xc2ffffe1,0x029e7ae5,0x109e7b04,0x00000000,0x029e39e1,0x029e3be4,0x8400c2e1,0x0221b8e9, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0xc10001e0,0xb80002e0,0xac0082e9, +0xc10008e0,0x020e78ed,0x009f43ec,0x8400c2e1,0x109e7905,0xe8000050,0x108e3804,0x029efae5, +0x14903d20,0x900002e1,0x00000000,0xb80002eb,0x00000001,0xc1fff8e0,0xa4003ae0,0x120e7b21, +0x00000000,0x00000000,0x008f7de2,0xe8ffffe9,0x14f03d20,0x108eba04,0x028ef9e1,0x00000000, +0x900002e9,0xe8000051,0x14b03d01,0x00000000,0xb80002e8,0xac00c2e5,0xc10008e4,0xc2ffffe1, +0x020f3bf4,0x009ef9f6,0xc2ffffe4,0xa4003ae4,0x009eb9f5,0x029e7ae5,0x029e39e1,0xc2ffffe0, +0x8400c2e1,0x029e39e1,0x022e38ec,0x840082e1,0x028efce1,0xd2ffff2c,0x0011bb03,0x10924941, +0x1081c940,0x9000c904,0x9000891d,0xc1003424,0x90004920,0x10920741,0x00900724,0x00924725, +0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0x00154301,0xc1fff8e0,0xc1000059, +0x008508e1,0x001e5401,0x00000000,0x030e160a,0x10859605,0xe8fffff5,0x14901620,0x108e7904, +0x800039e1,0xc10020e1,0xe80000fd,0x049003e0,0x00158401,0xd1fffe18,0x00109402,0xc100200d, +0x121e9620,0x121e4660,0xc100ffe1,0x00000000,0x02ae7ae5,0xc2002ce0,0x029e79e1,0xc30001e0, +0xc2002ce4,0x120eb905,0x00000000,0x033e3ae2,0xc1ffe0e1,0x120e9620,0x00000000,0x008555e1, +0x00000000,0x02ae3ae1,0x121e0640,0x120eb820,0x121ef821,0xc100ffe0,0x02aefbe1,0x029e3be1, +0xc30001e4,0x120e3805,0x00000000,0x033e38e7,0x00000001,0x02ae3ae1,0x121e0620,0x120eb820, +0x121e7821,0xc100ffe0,0x02ae79e1,0xc2002ce0,0x029e79e1,0xc30001e0,0x120e7905,0x00000000, +0x033e39e3,0x00000001,0x02ae3ae1,0x121e3820,0x120eb821,0xc100ffe0,0x02ae7819,0xc2002ce0, +0x029e79e1,0xc30001e0,0x120e7905,0x00000000,0x033e79e2,0xc10020e1,0xe8ffff1d,0x04f015e0, +0x02a5bae5,0x121e150d,0xe80000a5,0x1400380d,0xe80000d9,0x14003809,0xe800010d,0x14003805, +0xe8000049,0x14001501,0x10955505,0xd1fffd00,0x00109402,0xc100010d,0x121e163d,0x02ae06e1, +0x129e3805,0xe8000015,0x14003800,0x12059605,0xc28005e1,0x02a596e1,0xc1ffffe1,0x008555e1, +0xe8ffffcd,0x141015fd,0xc2ffffe4,0xc2ffffe1,0x029e56e5,0x0291b9e1,0x1091c741,0x00000000, +0xb800c704,0xb800805b,0x00000000,0xb8004054,0xb8000051,0x00000000,0xb800871c,0xb8004721, +0x07000101,0x10824741,0x00100901,0xd1fffc80,0x00109402,0xc100080d,0x121e5620,0xc2002ce1, +0xc100ffe4,0x120e9620,0x02aef919,0x029e7be5,0xc30001e0,0x120e7905,0x00000000,0x033e39e3, +0x00000001,0x02a5bae1,0xd1fffc44,0x00109402,0xc100080d,0x121e5620,0xc2002ce1,0xc100ffe4, +0x120e9620,0x02aef919,0x029e7be5,0xc30001e0,0x120e7905,0x00000000,0x033e39e3,0x00000001, +0x02a5bae1,0xd1fffc08,0x00109402,0xc100080d,0x121e5620,0xc2002ce1,0xc100ffe4,0x120e9620, +0x02aef919,0x00000000,0x029e7be5,0xc30001e0,0x120e7905,0x00000000,0x033e39e2,0xd2fffec6, +0x1295551c,0x02a5bae1,0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x90004921,0x1081c724, +0xc1002825,0x00920724,0xc100cc25,0x00900724,0x00924725,0x00000000,0x9005c0ac,0x900600b1, +0x00000000,0x900540a4,0x900580a9,0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094, +0x90048099,0x00000000,0x9003c08c,0x90040091,0x00000000,0x90034084,0x90038089,0x00000000, +0x9002c07c,0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071, +0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0xc1ffece4,0xc1ffe8e1,0x00000000,0x034ac7e4,0x034a87e3, +0x00000001,0xc10000e4,0x00000000,0x109e0811,0xc10000e0,0x109e4820,0x900038e5,0xe800018c, +0x90003915,0x04f038ac,0xc10000a0,0x011a6b15,0xc235e8e0,0xc278aae4,0xc24f33e9,0xc30ec8e0, +0xc3061fe4,0xc30b50e9,0x00197800,0x0019b900,0x0019fa01,0xc21708e0,0xc2b315e4,0xc29d9de9, +0xc3031fe0,0xc30d4de4,0xc308e3e9,0x0018b800,0x0018f900,0x00193a01,0xc24036e0,0xc27993e4, +0xc24be8e9,0xc30c5ee0,0xc30a26e4,0xc30fb1e9,0x0017f800,0x00183900,0x00187a01,0xc2e69de0, +0xc2bd7ae4,0xc24402e9,0xc30563e0,0xc30e76e4,0xc306d7e9,0x00173800,0x00177900,0x0017ba01, +0xc25979e0,0xc2d74ee4,0xc29082e9,0xc30e1ce0,0xc3078ae4,0xc30f10e9,0x00167800,0x0016b900, +0x0016fa01,0xc23f2fe0,0xc241a3e4,0xc2c3cde9,0xc303e3e0,0xc30db9e4,0xc30839e9,0x0015b800, +0x0015f900,0x00163a01,0xc2a0abe0,0xc2018ce4,0xc23f7ee9,0xc30f4fe0,0xc304a5e4,0xc30f85e9, +0x00153800,0x00157900,0x001b3a01,0xc2020ee0,0xc2f024e4,0xc2fbfee9,0xc30259e0,0xc30cd9e4, +0xc30987e9,0x00147800,0x0014b900,0x0014fa01,0xc246d2e0,0xc27a6ce4,0xc2aac0e9,0xc30fece0, +0xc30191e4,0xc30fd3e9,0x0013b800,0x0013f900,0x00143a01,0xc2fb30e4,0xc2ef91e8,0xc2b49aed, +0xc300c8e4,0xc210f2e0,0xc30abeed,0xc30bdae8,0xc30ffbe0,0x0012f901,0x00137b00,0x0012b800, +0x00133a01,0xd606c00e,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x00000000, +0xb8008058,0xb8014065,0x00000000,0xb8010060,0xb801c06d,0x00000000,0xb8018068,0xb8024075, +0x00000000,0xb8020070,0xb802c07d,0x00000000,0xb8028078,0xb8034085,0x00000000,0xb8030080, +0xb803c08d,0x00000000,0xb8038088,0xb8044095,0x00000000,0xb8040090,0xb804c09d,0x1091c77c, +0xb8048098,0xb80540a5,0x1091c724,0xb80500a0,0xb805c0ad,0x00000000,0xb80600b0,0xb8004721, +0x1082477c,0xb80580a8,0xb800871d,0x07000101,0x10824925,0x00100901,0x10924941,0x1081c940, +0x9000891c,0x9000c905,0x10900760,0x10924761,0x00000000,0xb803c3e7,0xc22009e1,0xe8000081, +0x040039e1,0xc2200be1,0xe8000075,0x040039e1,0xc2200ce1,0xe8000069,0x040039e1,0xc2200de1, +0xe800005d,0x040039e1,0xc2200ee1,0xe8000051,0x040039e1,0xc2200fe1,0xe8000045,0x040039e1, +0xc22010e1,0xe8000039,0x040039e1,0xc22011e1,0xe800002d,0x040039e1,0xc22012e1,0xe8000021, +0x040039e1,0xc22013e1,0xe8000015,0x040039e1,0xc22014e1,0xe8000055,0x041039e1,0x00000000, +0xb80002e3,0x00000001,0xe8000031,0x14003801,0xd1000d32,0x00108401,0xc1100019,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xd2ffffe0,0xc10001e1, +0x00000000,0x900002e2,0xd2ffffd6,0xc1000019,0x10924941,0x1081c940,0x9000891c,0x9000c905, +0x10900770,0x10924771,0x00000000,0x90000051,0x00150201,0x00000000,0xb8028209,0xd1005fa0, +0xc21eece5,0xc10000e0,0xc30001e5,0x00000000,0x800039e1,0x00000000,0xb80294e6,0xd10004dd, +0xc10040e1,0x0080b9e1,0x00000000,0xb80294e6,0xd10061c1,0xc21268e1,0x0080b9e1,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1008024,0x90004920,0x10920741,0x00900724, +0x00924725,0x00000000,0x90040090,0x90044095,0x00000000,0x90038088,0x9003c08d,0x00000000, +0x90030080,0x90034085,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075, +0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058, +0x9000c05d,0x00000000,0x90000050,0x90004055,0x00158300,0x00188501,0xc10000e4,0xb8004484, +0x109e0811,0x00000000,0x900038e5,0x00000000,0x00000000,0xb8028257,0xd100043c,0xc10040e1, +0xc21268e0,0x008815e1,0x0010d500,0x0010a000,0x0087d5e1,0xe8000099,0x141006fd,0xc1ffff19, +0x00000000,0xb8004055,0x1091c740,0xb8000050,0xb8008059,0x00000000,0xb800c704,0xb8010061, +0x00000000,0xb800c05c,0xb8018069,0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c, +0xb8028079,0x00000000,0xb8024074,0xb8030081,0x00000000,0xb802c07c,0xb8038089,0x00000000, +0xb8034084,0xb8040091,0x00000000,0xb8044094,0xb8004721,0x00000000,0xb803c08c,0xb800871d, +0x07000101,0x10824741,0x00100901,0x00000000,0xb80060e3,0x00000001,0xe800005d,0x14003801, +0xc1000279,0xc1ffece0,0x109e8951,0xc1fffce0,0x109e4960,0x008508e1,0x008e88e0,0x90003a51, +0xd1000854,0xc2022c14,0x109e0971,0x0010a000,0x90003878,0x900039e9,0xc3000114,0x00111500, +0x0010df01,0xe8000019,0x141006fd,0xd2ffff16,0xc1ffff19,0xd2ffffb2,0xc1000179,0xc10000e1, +0x00000000,0x900016e1,0x00000000,0xb80020eb,0x00000001,0xe80001c9,0x14103a05,0xc1000c8c, +0xc1000c91,0xc21004e4,0xb80160e0,0xc21008e1,0xc2100ae0,0x008edfe4,0x008e9fe1,0x120e6314, +0x00000000,0x008e1fe1,0x00000000,0x840038e4,0x84003a79,0x00000000,0x90003be1,0x00000000, +0xb80020e3,0x00000001,0xe80001bd,0x1410380d,0xc1fffce1,0x00000000,0x034e08e3,0x00000001, +0x1299781d,0xc2001ce4,0x120ea521,0xc30382e4,0xc10000e1,0x00000000,0xb80039ef,0xc1f8ffe5, +0xc2001ce4,0x029efbe5,0xe8000110,0xc30382e4,0x028ebbe9,0x04f03878,0xc1000074,0x900039e9, +0xc2022ce4,0xc2100ce0,0xc1000069,0xc30001e4,0xc1000064,0x0086dfe1,0x10873928,0xc1000060, +0x0015d401,0xc1fffce1,0x00000000,0x034e48e3,0xc10000e1,0xe800007d,0x04f038e4,0xc1000095, +0xc1000058,0xc1000054,0x00851a71,0x00000000,0xa40214e0,0x034e9b65,0x109e0950,0x0340d758, +0x0010a001,0x00111400,0x90003875,0xd1001a95,0x109e0960,0x00000000,0x129e7821,0x008155e8, +0x900038e5,0xc1fffce0,0xc20900e5,0xc10074e0,0x034e08e1,0x008514e0,0x00000000,0x008555e6, +0x10896505,0xe8ffffa9,0x049025e0,0x10859611,0xd1005f58,0x109e0960,0x00811885,0x109e0950, +0x90003890,0x00109f01,0x00115d00,0x9000388c,0x0010e001,0xe9ffff50,0xc21200e0,0x10875d05, +0x1085d720,0x90002218,0x008618e1,0x04901d78,0x10869ae8,0x10865911,0xc21000e0,0xb9001fe4, +0xc1000019,0x008e1fe3,0xd2fffd38,0x008e798d,0x129e793d,0x00000000,0x900038e5,0xe800002d, +0x14103a0d,0x00000000,0xb801e0e7,0xc21000e1,0x029e39e1,0xe8000015,0x14003801,0xd2fffe2a, +0xc100128c,0xc1001291,0xe8000015,0x14103a0c,0xc100248d,0xd2fffe12,0xc1001291,0xd2fffe0a, +0xc1002491,0xe8000011,0x14103805,0xd2fffe5a,0xc1000395,0xd2fffe52,0xc1000295,0x10924941, +0x1081c940,0x9000891c,0xc1002825,0x00924725,0xc10000f0,0xc10000e4,0xc10000f5,0xc10000e0, +0xc10000ec,0xc10000e9,0xc10000e4,0x900042e4,0x900002f5,0xc10000e8,0x9000c2e8,0x900082f1, +0xc10000e0,0x900142e0,0x900102ed,0xc10000e0,0x840342e0,0x840302e9,0x00000000,0x900202e0, +0x9001c2e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891c,0x9000c905,0x10900760,0x10924761,0x00000000,0x90000051,0x00150201,0xd1ffff63, +0xd10007a0,0xc10001e1,0x00109400,0x900254e2,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d, +0x1081c940,0x9000c904,0xc1003c25,0x00900724,0x00924725,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0x00154200,0x00150301,0x00000000,0xb80183ec,0xb800435b,0x00000001, +0xe8000051,0x14103b01,0xc10002e4,0xc10000e0,0xc1ffff19,0x00000000,0x9000c3e0,0x9003c3e5, +0x1091c741,0x00000000,0xb800c704,0xb800805b,0x00000000,0xb8004055,0x00000000,0xb8000050, +0xb800871d,0x07000101,0x10824741,0x00100901,0x00000000,0xb80083eb,0x00000001,0xe8000075, +0x14003a01,0x00000000,0xb800c3e7,0xc10000e1,0xe8000015,0x041038e5,0x00000000,0xb80143ef, +0x00000001,0x00000000,0x009e16ed,0xe800002d,0x04f038e9,0xd2ffff8c,0xc10000e0,0x009e7ae1, +0xc10001e4,0x90018358,0x900083e5,0xc1ffff18,0x9000c3e0,0x9003c3e5,0xc10000e4,0xc10001e0, +0x008efbe9,0x00000000,0x9000c3e0,0x900083e5,0x00000000,0xb800d4e3,0x00000001,0xe8000091, +0x14003801,0x00000000,0x009e16ed,0xe800002d,0x14e03821,0x00000000,0x900194ed,0xd2ffff24, +0xc10000e0,0xc10001e5,0x00000000,0x9000d4e0,0x9003d4e5,0xc1ffff19,0x00000000,0xa4003be7, +0xc100ffe1,0xe8000025,0x041039e1,0x00000000,0xa4007be7,0xc100e0e1,0xc100e0e0,0x029e79e1, +0xe8000095,0x040039e1,0xd2fffed8,0xc10000e0,0x108e7b05,0xc11004e4,0x900194e4,0x900154ed, +0xc1ffff18,0x9000d4e0,0x9003d4e5,0xd1ffee98,0x10809470,0x0010fb03,0xd10059a4,0x00109403, +0xe8000049,0x141006fd,0x00000000,0xb80194e3,0x00000001,0x009e16e1,0xe8000015,0x14803821, +0x109e1621,0x00000000,0x900194e1,0xd2fffe74,0xc10000e0,0xc10001e5,0x00000000,0x9000d4e0, +0x9003d4e5,0xc1ffff19,0xd1ffeedc,0x10809473,0x001ec601,0xd1ffee30,0x108e3b04,0x10809471, +0x0010fb00,0x900154ec,0x900194e2,0xd1ffd160,0x00109500,0x0010d403,0xe800001d,0x141006fd, +0xd2fffe20,0xc10000e1,0x00000000,0x9000d4e1,0xc1ffff19,0x00000000,0xb80115e3,0x00000001, +0xe8000079,0x14103801,0x00000000,0xb80114e3,0x00000001,0xe800001d,0x14003801,0x00000000, +0xb800d4e7,0xc10000e1,0xe8000031,0x041038e5,0xd1ffd4c4,0x00109400,0x0010d503,0xe800001d, +0x141006fd,0xd2fffdbc,0xc10000e1,0x00000000,0x9000d4e1,0xc1ffff19,0x00000000,0xb801d5e4, +0xb80114eb,0xc10400e1,0x028e39e0,0x900115e9,0x00000000,0x9001d5e1,0x00000000,0xb801d5eb, +0xc10080e1,0x029e3ae1,0xe80000b5,0x14003801,0xc10001fd,0x00000000,0xb80015e7,0x00000001, +0xe80000a5,0x14103905,0x00000000,0xb80115e4,0xb80155eb,0xc1000ce1,0x00000000,0x061e78e5, +0xc10000e1,0xe8000029,0x04d038e4,0xc10000f9,0xc10000e1,0x00000000,0x00000000,0x008e38e9, +0xe8fffff5,0x04b038e4,0x108fbe05,0xc1ffffe1,0x008fbee1,0x008e3efd,0x120f7809,0x00000000, +0xb80154e7,0x00000001,0x108ebd20,0x009e16e5,0xe80000fd,0x04b03ae1,0x00000000,0x900194e5, +0xd2fffce0,0xc10000e0,0xc10001e5,0x00000000,0x9000d4e0,0x9003d4e5,0xc1ffff19,0xd2ffff5a, +0xc10000fd,0xe8000015,0x1410390c,0xc10000e1,0xc21000e1,0x029e3ae1,0xe80000ad,0x14003801, +0xc10048f1,0x00000000,0xb80115e4,0xb80155eb,0xc10000e1,0xe8000029,0x04d038e4,0xc10000ed, +0xc10000e1,0x00000000,0x00000000,0x008e38e9,0xe8fffff5,0x04b038e4,0x108efb05,0xc1ffffe1, +0x00000000,0x008efbe1,0x00000000,0x061e3aee,0x009e39e1,0x00000000,0x061e78f1,0xc10000e1, +0xe8000029,0x04d038e4,0xc10000f9,0xc10000e1,0x00000000,0x00000000,0x008e38e9,0xe8fffff5, +0x04b038e4,0x108fbe05,0xc1ffffe0,0x061e3bf1,0xd2ffff0c,0x00000000,0x008fbee1,0x008e38f9, +0x008f78fd,0xd2ffff62,0xc10090f1,0x008eb9f4,0xb800d4e5,0x00000000,0x900194ea,0xc10000e1, +0xe800005d,0x041038e5,0x00000000,0xa4003ae7,0xc100ffe1,0xe8000025,0x041039e1,0x00000000, +0xa4007ae7,0xc100e0e1,0xc100e0e0,0x029e79e1,0xe8000021,0x040039e1,0x00000000,0xb80154e3, +0xd2fffc51,0x108ef805,0x00000000,0x900194ed,0xc10001e1,0x00000000,0x9000d4e1,0x00000000, +0xb801d5e3,0xd2fffb7d,0x128e3821,0xc1000018,0x9001d5e1,0x1092497d,0x10924935,0x1081c97c, +0x9000891c,0x9000c905,0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc1006025,0x00900724, +0x00924725,0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000, +0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e4,0xc1ffe4e1, +0x00000000,0x0345c7e8,0x034587e5,0x00000000,0x034547e1,0x0016c201,0x00164401,0x00168300, +0x00000000,0x00160501,0x00000000,0xb801c2e0,0xb80384e7,0x00000001,0xc10000e0,0x900242e4, +0x129e7821,0xe800007d,0x041038e5,0xd1fffa4a,0x0010c401,0xe800006d,0x141006fd,0xc10000e0, +0xc1ffff19,0x00000000,0x9002d9e1,0x1091c77d,0x1091c734,0xb8004055,0x00000000,0xb800c704, +0xb8010061,0x00000000,0xb8000050,0xb800c05d,0x00000000,0xb801c06c,0xb8004721,0x00000000, +0xb8008058,0xb8018069,0x1082477c,0xb8014064,0xb800871d,0x07000101,0x10824935,0x00100901, +0x00000000,0xb801dbe4,0xb8001be3,0x00000001,0xe8000028,0x129e79dd,0x14003804,0x9001dbe5, +0xe8000079,0x14003809,0xe8000089,0x1400380d,0xd2ffff7e,0xc1ffff19,0xd1001891,0x00111a00, +0x0010db00,0x00109902,0x00150601,0xe8000099,0x141014fd,0x00000000,0xb803d9e7,0xc2f000e1, +0xc10000e0,0x029e79e1,0xe800001d,0x041038e5,0x00000000,0xb80159e3,0x00000001,0x00000000, +0x900199e1,0xd2ffff28,0xc10000e1,0x00000000,0x9002d9e1,0xc1ffff19,0xd1001dd1,0x00111a00, +0x0010db00,0x00109902,0xd2ffffa6,0x00150601,0x109e8950,0x109e0971,0xd10035a0,0x109e4960, +0x00109901,0x00111a00,0x90003958,0x90003a5d,0x0010db00,0x90003854,0x00115801,0xd2ffff72, +0x00150601,0x00000000,0xb8001be3,0x00000001,0xe8000049,0x1400380d,0x00000000,0xb801990d, +0xd1ffe925,0xc1fff8e1,0x008088e1,0xc1fff8e0,0xb801d9e4,0xb80219e1,0x0080c8e0,0x10809971, +0xd1ffe942,0x00000000,0x900299e0,0x900259e5,0x00000000,0x9002d919,0xd2fffe76,0xc1000019, +0x10924941,0x1081c940,0x9000891c,0xc1003825,0x00924725,0xc20928e0,0x108282a1,0xc100002c, +0xc10000f8,0x008fc2e1,0xc10000f4,0x008efe28,0x008f3efd,0xc10000e4,0x108f7d04,0xc10020e1, +0xc10000e4,0x90003ce4,0xc10048e9,0xe8ffffe8,0xc10048e4,0x90003be5,0x04903de0,0x008efbe8, +0x008f3ce5,0x1082cb05,0xe8ffffc1,0x14900b48,0x108fbe11,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x1092497d,0x10924945,0x1081c97c,0x9000891c,0x9000c905,0x1081c744, +0x90004920,0xc1003025,0x00920724,0xc101b425,0x00900724,0x00924725,0x00000000,0x900700c0, +0x900740c5,0x00000000,0x900680b8,0x9006c0bd,0x00000000,0x900600b0,0x900640b5,0x00000000, +0x900580a8,0x9005c0ad,0x00000000,0x900500a0,0x900540a5,0x00000000,0x90048098,0x9004c09d, +0x00000000,0x90040090,0x90044095,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080, +0x90034085,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000, +0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e0,0xc1ffe4e5,0xc1ffe0e0,0x034e47e8, +0x0345c7e1,0x00000000,0x0346c7e4,0x034587e1,0x00150200,0x00178501,0x00160301,0x00180401, +0x00000000,0xac0004e3,0x00000001,0x009778e5,0xe80000e1,0x14e01d01,0xc1201119,0x00000000, +0xb8004055,0x1091c77c,0xb8000050,0xb800c05d,0x1091c744,0xb8008058,0xb8010061,0x00000000, +0xb800c704,0xb8018069,0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079, +0x00000000,0xb8024074,0xb8030081,0x00000000,0xb802c07c,0xb8038089,0x00000000,0xb8034084, +0xb8040091,0x00000000,0xb803c08c,0xb8048099,0x00000000,0xb8044094,0xb80500a1,0x00000000, +0xb804c09c,0xb80580a9,0x00000000,0xb80540a4,0xb80600b1,0x00000000,0xb805c0ac,0xb80680b9, +0x00000000,0xb80640b4,0xb80700c1,0x00000000,0xb80740c4,0xb8004721,0x1082477c,0xb806c0bc, +0xb800871d,0x07000101,0x10824945,0x00100901,0xd1ffd274,0xc1ff64e1,0x00000000,0x008108e0, +0x0010a001,0x0010c501,0x00000000,0xb80014e6,0xc100a4e0,0x0010dd00,0x00109401,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb80054e6,0xd1ffe70c,0xc100a0e1,0x009e08e0,0x00000000, +0xc1ff5ce9,0x008b48e8,0x900038e5,0xc1ff62e0,0x0010ad01,0x00000000,0x033e48e3,0xc1001fe1, +0x009e38e5,0xd1ffe7a8,0x129e38e1,0x0087f9e1,0x0010df01,0x00000000,0xa402a0ec,0xa4001ef1, +0xc21cfce8,0xa40420e4,0xc21d9ce1,0xc21d7ce4,0xc30001e0,0xc30001e9,0xc30001e5,0x120e3b08, +0x0319fbe0,0x031a3be5,0xeb000048,0x034a78e8,0x00170601,0x120e3c08,0x00975d7c,0x10879e05, +0x008698e1,0x00151800,0x00000000,0x108ae029,0x14e03b34,0x108b3904,0xc10000a9,0xc1000199, +0xe8000031,0x14102901,0xd2fffe36,0xc1201219,0x109e7b34,0xc21dbce0,0xc1000099,0x120e7908, +0xc30001e1,0x00000000,0x034979e1,0xd2ffffd7,0xc1ff64e4,0xac00608c,0xc10001e1,0x020e389c, +0x034548e6,0xc1ff68e5,0xe8000284,0x00000000,0xc1000091,0x14002300,0x008648e4,0x1098b805, +0xc1ff1ce1,0x008848e1,0xe80000d8,0xc1ffffe1,0x04101468,0x0088e3e1,0xc1ffffe0,0xa4001ee1, +0x00000000,0x008b2ce3,0xe8000098,0x120e3809,0x14102c00,0x10879e04,0x00869ae1,0x1102aa00, +0x108aaa04,0xc21cfcf5,0xc21d9cec,0x031faba8,0xc30001f5,0xc30001ec,0xa40460fc,0xc1fff3e9, +0xc21d7cf0,0xc21dbce4,0xc10001e1,0xc30001f0,0x00000000,0xc30001e5,0x120efe08,0x0319feec, +0x008ebee9,0x120eba08,0x031a3ef0,0x034a7bf5,0x108e7f04,0x03497ae5,0x00000000,0x00000000, +0x09bb0ae5,0x020e389d,0xe8000019,0x14102900,0x1189be34,0x1098b805,0xd2fffd26,0xc1201219, +0x00000000,0xb80019ef,0x00000001,0x00000000,0x010e15ed,0x10865910,0x09b93890,0x00157b01, +0xe80000a1,0x14e01f54,0x001f2701,0xc1ff5ce0,0xc1001fe8,0xc1fff8e5,0x00000000,0x034e48e0, +0x009e3a7d,0x122e380d,0x120fb80d,0xc100a4e0,0x00000000,0x008f7ee5,0x009e08e0,0xa40039ec, +0x108e7905,0x00000000,0x900038e5,0xe8000045,0x14903d21,0x001eb901,0xc1fff8e0,0xa4003ae0, +0x120e7b21,0x00000000,0x00000000,0x008f7de2,0xe8ffffe9,0x14f03d20,0x108eba04,0x028ef9e1, +0xc100a4e1,0x009e08e1,0x00000000,0x900038e9,0x00975df8,0x020e1cf8,0x0087dff9,0x008738ed, +0x00000000,0x009e1f9d,0xe8000110,0x021e1ce1,0x14002600,0x029ef889,0x120e3b05,0x008ee9e0, +0x031ea9e3,0x00000001,0xc10000e0,0x129e7a3d,0xe8000055,0x041038e5,0x122f3a10,0xa4007bec, +0x0097dff1,0xc10001e4,0xc10000e0,0x009e9ff1,0x00000000,0x020e79f0,0x021e9ce9,0x109e7905, +0x029e7ae5,0x008e7be5,0x120e7905,0x008ee9e4,0x031ea9e7,0x00000001,0x129e7a3d,0xe8ffffbd, +0x040038e5,0x00000000,0xa4007bbf,0x00000001,0x129baf3c,0xc10001e0,0x122e7a11,0xe80000f8, +0x0097dfe4,0x020e78b9,0x14102e00,0x029ee4e5,0xc10000e1,0x10851410,0x900014e1,0x122e2f11, +0xc10001e0,0x129bb83d,0xe80001a8,0x020e78b9,0x14102e00,0x029ee4e5,0xc10000e1,0x10851410, +0x900014e1,0xe8fffda5,0x14102301,0x00000000,0x008f5f75,0xe8000259,0x14e03d01,0xc10000e1, +0xc10040e0,0x009e7875,0xe8000571,0x048039e1,0xd2fffb4e,0xc1201319,0x00000000,0x031ea9ef, +0x00000001,0xc10000e0,0x129e7a3d,0xe8000059,0x041038e5,0x120e3b04,0x122f3a10,0x0097dff1, +0xc10001e0,0x033e25e0,0x009e5ff1,0x00000000,0x020e38f0,0x021e5ce5,0x109e3805,0x029e79e1, +0x008ef8e4,0x008e29e1,0x00000000,0x031eb8e7,0x00000001,0xc10000e0,0x129e7a3d,0xe8ffffb9, +0x040038e5,0x120e3b05,0x00000000,0x033be5e1,0xd2ffff03,0xe8000011,0x14102e3d,0xe800006d, +0x14102801,0x1097df05,0xe8000034,0x021e1c7d,0x14003b00,0x129c7805,0x120e2e09,0x00000000, +0x034c21e3,0x00000001,0xd2fffef4,0x099e31c1,0x00000000,0x900014e1,0x10851411,0xd1ffcf21, +0x0010d500,0x0010ae00,0x028924e6,0x120e6e09,0x008e21e5,0x00000000,0x90003819,0x00000000, +0x034c21e5,0xd2ffffc7,0x108e2809,0xe8000025,0x04f01fe1,0xd1ffe338,0x0010ad02,0xc100100d, +0x120e1c40,0x10975d41,0x1087df40,0x02873819,0xc10001e0,0x0010d500,0x0097dfa1,0x021e5c7c, +0x020e38a1,0xd1ffceb8,0x109e3805,0x029e39e1,0x0080aee1,0x1097df05,0x021e1c7d,0xd2fffe60, +0x129c7805,0x099e3119,0x10851410,0x900014e1,0xe8000011,0x14102e3d,0xe800006d,0x14102801, +0x1097df05,0xe8000034,0x021e1c7d,0x14003b00,0x129c7805,0x120e2e09,0x00000000,0x034c21e3, +0x00000001,0xd2fffe40,0x099e31c1,0x00000000,0x900014e1,0x10851411,0xd1ffce45,0x0010d500, +0x0010ae00,0x028924e6,0x120e6e09,0x008e21e5,0x00000000,0x90003819,0x00000000,0x034c21e5, +0xd2ffffc7,0x108e2809,0xe8000025,0x04f01fe1,0xd1ffe25c,0x0010ad02,0xc100100d,0x120e1c40, +0x10975d41,0x1087df40,0x02873819,0xc10001e0,0x0010d500,0x0097dfa1,0x021e5c7c,0x020e38a1, +0xd1ffcddc,0x109e3805,0x029e39e1,0x0080aee1,0x1097df05,0x021e1c7d,0xd2fffdac,0x129c7805, +0x099e3119,0x10851410,0x900014e1,0x192e1501,0x118e9500,0x129e780c,0x122e3809,0x099f3ae4, +0x099e3ae1,0xe8000365,0x14e038f8,0x10857809,0xc20000e4,0xc10000e8,0x11ce1581,0xc30400e4, +0x009eba55,0x001e7901,0x022eb9e9,0x09bef8e9,0x108e7c0c,0x00000000,0xc2cc44e1,0x120e7908, +0xa40220e0,0xc30001e1,0x00000000,0x034e79e3,0x129e3805,0xe8000344,0x21cefbe5,0x14103801, +0xc2045885,0xc3000185,0x00186101,0xc208f0e1,0x008818e1,0x11ce7d00,0x01ae1481,0x029e39e1, +0xe8000289,0x14003801,0xe800009d,0x14e01f55,0xc1ff5ce0,0xc1001fe8,0xc1fff8e5,0x00000000, +0x034e48e0,0x009e3a7d,0x122e380d,0x120fb80d,0xc100a4e0,0x00000000,0x008f7ee5,0x009e08e0, +0xa40039f0,0x108e7905,0x00000000,0x900038e5,0xe8000045,0x14903d21,0x001eb901,0xc1fff8e0, +0xa4003ae0,0x120e7c21,0x00000000,0x00000000,0x008f7de2,0xe8ffffe9,0x14f03d20,0x108eba04, +0x028f39e1,0xc100a4e1,0x009e08e1,0x00000000,0x900038e9,0x00975df8,0x020e1cf8,0x0087dff9, +0x008738f1,0x109e5f10,0xc10000e1,0x00000000,0x021e5ce5,0xc1000ae4,0x129eb93d,0x00000000, +0x061e79ea,0x0088a1e5,0x00000000,0xa40262e7,0x00000001,0xe8000045,0x041038e5,0x00000000, +0xa40062e4,0xa400a2ea,0x1097df11,0xc10001e1,0x020e38e4,0x009e5fe5,0x109e3804,0x021e5ce5, +0x029e39e1,0xc1000ae0,0x008e7ae1,0x00000000,0x061e38e6,0x0088a1e1,0x00000000,0xa40122e3, +0xe8000049,0x04101468,0x0097dfe1,0x00000000,0xa4001ee4,0xb80019e3,0x00000001,0xe8000028, +0x120e7909,0x040015e0,0x10879e04,0x00869ae5,0xd1ffcbcd,0x0010f801,0xc1000108,0x00157801, +0x001ec601,0x10865911,0x00000000,0xa40162e8,0xa401a2e5,0x109e5f04,0xc10001e1,0x020e38e5, +0x029e1ce1,0x111f7a00,0x111e3800,0x111f3901,0xc10001e0,0x009e5ff4,0x099eb8ed,0x109e7904, +0x0097f9f0,0x09bebde9,0x020e38e4,0x900014e9,0x029e1ce1,0x111e3801,0x099e38ed,0x09be3ce1, +0x10851420,0x900054e1,0xe8000045,0x04101469,0x00000000,0xa4001ee4,0xb80019e3,0x00000001, +0xe8000028,0x120e7909,0x040015e0,0x10879e04,0x00869ae5,0xd1ffcb29,0x0010f801,0xc1000108, +0x00157801,0x001ec601,0x10865911,0x00000000,0xa401e2e8,0xa40222e5,0x109e5f04,0xc10001e1, +0x020e38e5,0x029e1ce1,0x111f7a00,0x111e3800,0x111f3901,0xc10001e0,0x009e5ff4,0x099eb8ed, +0x109e7904,0x0097f9f0,0x09bebde9,0x008e1f74,0x900014e8,0x020e78e5,0x00000000,0x029e5ce5, +0x111e7901,0x099e79ed,0x09be7ce5,0x10851420,0x900054e5,0x11ce7800,0x01ae1481,0x029e39e1, +0xe8fffd89,0x14103801,0x008e1f75,0x118e3801,0x120e3811,0x009514e1,0xc20900e4,0x120e1b0c, +0xc10240e9,0x120e1608,0x008298e4,0x008e57e1,0x00000000,0x009eca50,0x008e39e1,0x122e7b7d, +0x129e790d,0x008e7be5,0x122e7909,0xe8000014,0x009e7ae5,0x04e01428,0x900038e5,0xd6000152, +0xd2fff59e,0xc1000019,0xc20000e8,0xc2ffffe0,0x11ee5515,0xc30400e8,0xc37fffe1,0x001eba00, +0x001e3801,0x020eba55,0xd2fffca8,0x009e38e9,0x09be39e1,0x008ef8e9,0xd2fffcd5,0xc2057085, +0xc3000185,0x10924941,0x1081c940,0x9000891c,0xc1007025,0x00900724,0x00924725,0x00000000, +0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055, +0xe8000058,0xc2cd305d,0x14000300,0xc300015d,0xe8000081,0x14000305,0xe80001c5,0x1400030d, +0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x1091c740,0xb8010060,0xb8014065, +0x00000000,0xb8008058,0xb800871d,0x07000101,0x10824741,0x00100901,0xc10024e1,0x00000000, +0x060384e1,0xc10000e1,0xe8ffffb9,0x04e03838,0xc1000058,0xc1000065,0xc100082d,0xc1000034, +0xc1000c28,0xc1000431,0xd6008156,0xd2ffff97,0xc10000e1,0xe8ffff8d,0x04e03810,0xc1000059, +0xc2cdc0ed,0xc2cdc0f4,0xc2cdc0e0,0xc2cdc0f1,0xc2cdc0e8,0xc30001ec,0xc2cdc0e5,0xc30001f4, +0xc30001e0,0xc30001f1,0xc30001e8,0xb801bd54,0xb801fc51,0xc30001e4,0xb8023b4c,0xb8027a49, +0x00000000,0xb802b944,0xb802f843,0x0013c201,0xc1000064,0xc1000038,0xc1000435,0xc1000830, +0xc1000c2c,0x10828f31,0xd600616a,0x00000000,0xb8040fe4,0xb80417e1,0x00000000,0xb8044ffc, +0xb8060fe1,0x00000000,0xb8064fe5,0x00000000,0xb8068fe8,0xb806cfe1,0x00000000,0xb8070fe4, +0x21ceb9e1,0x00000000,0x00000000,0xb8074fe1,0x00000000,0x90040fe8,0x21cef855,0x10859604, +0x21ceb950,0xb80457ed,0xc10000f4,0x21cfb848,0x21ce7a4d,0xc10000f0,0x21ceb944,0x90060fed, +0xc10000e0,0x90064fe8,0x21ce7841,0xc10000ec,0x90068fe4,0x21cfbfed,0xc10000e8,0x90070fe8, +0x9006cff9,0xc10000e4,0x90074fe4,0x90044ff9,0xc10090e0,0x9007cfe0,0x90078ff5,0xe9ffff34, +0x90084fec,0x90080ff1,0x0083cfe0,0x9008cfe4,0x90088fe9,0x04801611,0xd2fffe4b,0xc10000e1, +0xe8fffe41,0x04e03810,0xc1000059,0xc2cdc0ed,0xc2cdc0f4,0xc2cdc0e0,0xc2cdc0f1,0xc2cdc0e8, +0xc30001ec,0xc2cdc0e5,0xc30001f4,0xc30001e0,0xc30001f1,0xc30001e8,0xb8003d60,0xb8007c55, +0xc30001e4,0xb800bb50,0xb800fa4d,0x00000000,0xb8013948,0xb8017846,0xc1000041,0x0013c201, +0x008e9008,0xc10000e0,0xc10000e5,0x00000000,0x90003ae1,0x00000000,0xb8018fe8,0xb801cfe5, +0xc10000ec,0xb8020fec,0xb8024fe1,0xc10000e0,0xb8028fe8,0xb802cfe5,0xc10000e0,0x90008fe0, +0x90004fe5,0x00000000,0x90010fe0,0x9000cfed,0xc10000f8,0x21cf3954,0x21cf7a61,0xc10054e0, +0x21ceb84c,0x21cefb51,0xc1001264,0x21ce3944,0x21ce7a49,0x00828fe0,0x90018ff4,0x90014ff9, +0xc1004838,0x90020fec,0x9001cff1,0xc1004c34,0x90028fe4,0x90024fe9,0xc1005030,0x9002cfe0, +0xc100542d,0xd600617a,0x00000000,0xb8088fe8,0xb80897e5,0xc10090e4,0x00000000,0xc10090e1, +0x00000000,0x008410e6,0x00000000,0x21ce7ae6,0x00000000,0x90088fe5,0x00000000,0xb808cfe8, +0xb808d7e7,0x00000001,0x10859604,0x21ce7ae5,0xe8ffff11,0x04801610,0x9008cfe4,0x0083cfe1, +0xd2fffce3,0x10924941,0x1081c940,0x9000891c,0x90004921,0xc100c824,0x10920741,0x00924725, +0x00134201,0xc1ff70e0,0xc1000031,0x008488e1,0xc2cca02c,0x10829261,0xc1000044,0xc300012d, +0xd600c18a,0x10830c05,0xe8ffffe9,0x14800c0c,0x108492c0,0x10834d61,0xc1ff70e0,0xc1000045, +0xc2cdc040,0xc100003c,0x008488e1,0xc3000140,0xc1004830,0xc1001839,0xc1003034,0xc1007828, +0xc100602d,0xd600a1a6,0x1091c741,0x00000000,0xb8004720,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891c,0xc1002c25,0x00924725,0xc10000e1,0xe8000025,0x04e03814, +0xc100003d,0xc1000038,0x00130201,0xc1000034,0x00128300,0x0012c401,0xd602c1be,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1003425, +0x00924725,0x00000000,0xb8000240,0xb800423d,0xc1000039,0xc100042c,0xc1000830,0xc1000035, +0xc1000c29,0xd600621a,0xc10000e4,0x90040340,0xc10000e1,0x00000000,0x900402e5,0x00000000, +0x9004433d,0x00000000,0x900442e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x9000c905,0x1081c724,0xc1005c25,0x00900724, +0x00924725,0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000, +0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece4,0xc1ffe8e0,0x00168201, +0x00000000,0x034647e4,0x034ec7e2,0x00158300,0x00160501,0x00154401,0xc10480e4,0xa40244e4, +0xc22ec0e1,0x00000000,0x061e59e6,0xc30001e0,0x00000000,0x120eb909,0xe8000014,0x0086fae1, +0x14103909,0xe80001bd,0x14003b01,0xd1000228,0x110e3b01,0x0010db00,0x060539e1,0xc1000210, +0x00000000,0x00108501,0xd1fffa5d,0x00000000,0x0010d400,0x00109b01,0xc1000211,0x00000000, +0xa40255f3,0x00000001,0xe80001a1,0x14003c09,0x001ed601,0x120e7b08,0xc1fffce0,0x11debb91, +0x00000000,0x008e39e1,0x00000000,0x034e3863,0x00000001,0x110e3801,0x029e3ae1,0xe800003d, +0x14003801,0xc1fff8e1,0x008eb9e1,0xc1ffffe4,0x034e3a60,0xc1fffce1,0x00000000,0x008ebae0, +0x008efbe7,0x11de7b90,0x110e3801,0x029e39e1,0xe8ffffdd,0x14103801,0xc10240e4,0xc10020e1, +0xc238e5e4,0x009eb9ed,0x00000000,0x061e7ae6,0xe8000120,0x121e7949,0x14003c08,0x0095f8e5, +0xd1000154,0xc10120e0,0xc10090e5,0x10911708,0x008098e4,0x0080dbe2,0x10911708,0xa402550d, +0xd1fff985,0xc10120e1,0x00809be1,0xc20900e0,0x00109b01,0xd1fffd8c,0x060519e1,0x10855aa1, +0x00115700,0x0080d550,0x00111801,0xc1001fe1,0xe8000039,0x0490385c,0xc1001f59,0xc108b850, +0x00855551,0xd1fffdac,0x00809454,0x0080d463,0xc1ffffe4,0xc10048e1,0x009514e0,0x008596e5, +0xe8ffffe5,0x04f0165d,0xd1001bd8,0x00109803,0x1091c77d,0x1091c725,0x00000000,0xb800c704, +0xb8010061,0x00000000,0xb8004054,0xb8000051,0x00000000,0xb801c06c,0xb800871d,0x00000000, +0xb800c05c,0xb8008059,0x1082477c,0xb8018068,0xb8014065,0x07000101,0x10824925,0x00100901, +0xd1fffc44,0x00000000,0x0010db02,0x00108501,0xd1fffc34,0xc10090e0,0xc10048e5,0x0080dbe0, +0x008098e6,0xd2fffe5b,0xd2fffe6e,0xc10240ed,0xc10002e1,0xe8ffff19,0x04f0385c,0xc1000259, +0xc1009054,0xc1012051,0xd1fffbfc,0x00809560,0x0080d46f,0x10859604,0xc10090e4,0xc10048e1, +0xe8ffffe8,0x008555e0,0x008514e5,0x0490165d,0xd2fffedf,0x10924941,0x1081c940,0x9000891c, +0xc100c025,0x00900724,0x00924725,0x00000000,0x900740c4,0x900780c9,0x00000000,0x9006c0bc, +0x900700c1,0x00000000,0x900640b4,0x900680b9,0x00000000,0x9005c0ac,0x900600b1,0x00000000, +0x900540a4,0x900580a9,0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094,0x90048099, +0x00000000,0x9003c08c,0x90040091,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c, +0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000, +0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0xc10000e1,0xe80001d1,0x04e03810,0xc10000c9,0x001bc201,0xc10000c4, +0x001b8300,0xc10000c1,0xc25d5ee8,0xc2e352e4,0xc24f1ee1,0xc3fde9e8,0xc30bcbe4,0xc3fb30e1, +0x001b7a00,0x001b3900,0x001af801,0xc25284e8,0xc277f9e4,0xc219fde1,0xc30763e8,0xc3f281e4, +0xc30ffce1,0x001aba00,0x001a7900,0x001a3801,0xc2769ee8,0xc2cdbbe4,0xc237ade1,0xc3fc89e8, +0xc3f1cee4,0xc30acfe1,0x0019fa00,0x0019b900,0x00197801,0xc2e890e8,0xc2c779e4,0xc255c2e1, +0xc30f9ee8,0xc30898e4,0xc3ff4de1,0x00193a00,0x0018f900,0x0018b801,0xc2934be8,0xc21770e4, +0xc2ad7ce1,0xc3f0bde8,0xc3f061e4,0xc3f89ce1,0x00187a00,0x00183900,0x0017f801,0xc2aa3ee8, +0xc21caee4,0xc26cb5e1,0xc300b2e8,0xc3f434e4,0xc30f42e1,0x0017ba00,0x00177900,0x00173801, +0xc28807e8,0xc23887e4,0xc2b0e2e1,0xc30d7ee8,0xc3f767e4,0xc304cfe1,0x0016fa00,0x0016b900, +0x00167801,0xc2c853e8,0xc2e603e4,0xc23245e1,0xc3f530e8,0xc3f003e4,0xc30e31e1,0x00163a00, +0x0015f900,0x0015b801,0xc28962e8,0xc29346e4,0xc28360e1,0xc30376e8,0xc30cb1e4,0xc3f642e1, +0x00157a00,0x00153900,0x0014f801,0xc2f549e8,0xc20ab7e4,0xc26cbae1,0xc30fdce8,0xc3f023e4, +0xc3f34ee1,0x0014ba00,0x00147900,0x00143801,0xc27ca0e8,0xc2a2a2e4,0xc2ca18e1,0xc309bde8, +0xc30216e4,0xc3f137e1,0x0013fa00,0x0013b900,0x00137801,0xc28756e8,0xc278aae4,0xc235e8e1, +0xc3f9e0e8,0xc3061fe4,0xc30ec8e1,0x00133a00,0x0012f900,0x0012b801,0xd606c22a,0x00000000, +0xb8000050,0xb8004055,0x00000000,0xb8008058,0xb800c05d,0x00000000,0xb8010060,0xb8014065, +0x00000000,0xb8018068,0xb801c06d,0x00000000,0xb8020070,0xb8024075,0x00000000,0xb8028078, +0xb802c07d,0x00000000,0xb8030080,0xb8034085,0x00000000,0xb8038088,0xb803c08d,0x00000000, +0xb8040090,0xb8044095,0x00000000,0xb8048098,0xb804c09d,0x00000000,0xb80500a0,0xb80540a5, +0x00000000,0xb80580a8,0xb805c0ad,0x00000000,0xb80600b0,0xb80640b5,0x00000000,0xb80680b8, +0xb806c0bd,0x1091c740,0xb80700c0,0xb80740c5,0x00000000,0xb80780c8,0xb800871d,0x07000101, +0x10824741,0x00100901,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc100e824,0x90004920, +0x10920741,0x00900724,0x00924725,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c, +0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000, +0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0x00178200,0x00154301,0x00000000,0xb900c4e6,0xc10088e1,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb90104e6,0xc10084e1,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80043e3,0x00000001,0xe800013c,0xc1ff78e5,0x14003800,0x008748e4,0x00150301, +0xc1000271,0xe800002d,0x14103808,0xc100206d,0x00000000,0xb801c3e8,0xb80083e3,0xc10100e5, +0x120e3808,0x028e7ae5,0x1086f810,0x9001c3e5,0x00000000,0xb801c3e3,0x00000001,0x129e3841, +0xe80000f1,0x14003801,0xc10020e0,0xac031410,0x061e5b71,0xd1ffd368,0x009e386d,0x008e39e1, +0x10808270,0x00000000,0x1200f809,0x00000000,0xac0354e0,0x8403141b,0x00000001,0xe80000b5, +0x040006e1,0x00000000,0xb80255e3,0x00000001,0xc10000e0,0x129e7805,0xe8000099,0x041038e5, +0xc12009e0,0xc1ffff19,0x00000000,0x9003dee1,0x1091c740,0xb8000050,0xb8004055,0x00000000, +0xb800c704,0xb8008059,0x00000000,0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069, +0x00000000,0xb801c06c,0xb8020071,0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c, +0xb8030081,0x00000000,0xb8034084,0xb8038089,0x00000000,0xb8004720,0xb800871d,0x07000101, +0x10824741,0x00100901,0xd2fffede,0xc1000171,0xc10000e1,0xe800007d,0x04f0386c,0xc1000069, +0xc1ffc0e1,0x008548e1,0xc10000e1,0xe8000059,0x04f03870,0xc100007d,0x00851a55,0xd1ffd0f0, +0x10809e72,0xc100040d,0xe800001d,0x1410063d,0xd2ffff40,0xc1200ae1,0x00000000,0x9003dee1, +0xc1ffff19,0xe800007d,0x14000601,0x108e0605,0x1087df04,0x800014e1,0xe8ffffc5,0x04901f70, +0x10851481,0x10869a05,0xe8ffffa1,0x04901a6d,0xc10020e1,0xe8000085,0x04f01be0,0x00169b01, +0xc1ffc0e4,0xc1ffe0e1,0x008e48e4,0x008e08e1,0x00851be4,0x00855be1,0xd1ffd074,0x10809e72, +0xc100040d,0xe8000025,0x1410063d,0xd2fffec4,0xc1200ae1,0x00000000,0x9003dee1,0xc1ffff19, +0xd2ffff92,0xc10000e1,0xe80000b1,0x14000601,0x108e4605,0x10869a04,0x800015e4,0xc10020e1, +0xe8ffffb8,0x00000000,0x800014e5,0x04901ae0,0x10851404,0x10855505,0xc1ffc0e4,0xc1ff80e0, +0xc1000069,0x008648e4,0x008608e1,0xc10000e1,0xe8000089,0x04f03870,0xc100007d,0x00159900, +0x00155800,0x00851a61,0x00000000,0x031e166b,0x00000001,0xe800004d,0x14003801,0xd1ffcfd0, +0x10809e72,0xc100060d,0x00000000,0x80001419,0x00000000,0x031e556b,0xc1003fe1,0xe8000025, +0x041039e1,0xd2fffe0c,0xc1200be1,0x00000000,0x9003dee1,0xc1ffff19,0xd2ffff5e,0xc10000e5, +0x1087df05,0xe8ffffa4,0x10855581,0x04901f70,0x10851480,0x10859681,0x10869a04,0xc10020e1, +0xe8ffff6d,0x04901ae1,0x00000000,0x161e1b32,0xc1000058,0x12057808,0xc100005d,0xc10000e1, +0xe80000ad,0x04f0386c,0xc1000069,0x00189601,0xc10000e1,0xe8000089,0x04f03870,0xc100007d, +0xc1000084,0x00181900,0x00151801,0x00000000,0x031e206b,0x00000001,0xe8000139,0x14003801, +0xd1ffbc20,0x10809e70,0x0010f803,0x00000000,0x034e1d84,0x031e946b,0xc2b100e5,0xc30001e4, +0x008e22e0,0x120eba09,0x00000000,0x034e7ae7,0x00000001,0x00000000,0x21fe46e6,0x00000000, +0x900038e5,0x1087df05,0xe8ffffa4,0x10886111,0x04901f70,0x10851480,0x10882081,0x10869a05, +0xe8ffff71,0x04901a6c,0x1088a2c1,0xc10020e1,0xe80000a5,0x04f01be0,0x00169b01,0x00151501, +0x00000000,0x031e196b,0x00000001,0xe80000c1,0x14003801,0xd1ffbb8c,0x10809e70,0x0010f803, +0xc10000e1,0xe800005d,0x04f03870,0xc100007d,0xc10000f0,0x001ed801,0x00000000,0x034e1df0, +0x031ebb6b,0xc2b100e5,0xc30001e4,0x008e14e0,0x120eba09,0x00000000,0x034e7ae7,0x00000001, +0x1087df04,0x00000000,0x21fe46e5,0xe8ffffcc,0x108efb81,0x04901f70,0x108f3c10,0x900038e5, +0x10869a04,0xc10020e1,0xe8ffff79,0x04901ae0,0x108514c1,0x1085d705,0xe8fffea5,0x14901730, +0x10855510,0x10859611,0xd2fffc4a,0xc1000019,0x00000000,0x034e1d87,0xd2ffff0d,0xc10000e0, +0x008e62e1,0x00000000,0x900039e1,0xc10000e1,0xe8ffffb1,0x04f03870,0xc100007d,0xc10000e9, +0x00000000,0x034e1deb,0x1087df05,0xe8fffff4,0xc10000e0,0x008e54e1,0x04901f70,0x108eba10, +0x900039e1,0xd2ffff7f,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc101e424,0x90004920, +0x10920741,0x00900724,0x00924725,0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094, +0x90048099,0x00000000,0x9003c08c,0x90040091,0x00000000,0x90034084,0x90038089,0x00000000, +0x9002c07c,0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071, +0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0x00188200,0x00160301,0x00000000,0xb900c4e6,0xc1015ce1, +0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb90104e6,0xc10158e1,0x009e08e1,0x00000000, +0x900038e5,0x00000000,0xb80043f3,0x00000001,0xe8000338,0xc1fea4e1,0x14003c00,0x008848e0, +0x00164301,0xc1000281,0x00000000,0xb801c3ef,0xc21000e1,0x029e3be1,0xe8000319,0x14003801, +0xc10004e9,0xc2b234e4,0x160e3a78,0xc2b23cf5,0xc30001e4,0x00000000,0xc30001f5,0x00000000, +0x0087b8f4,0x0317fae6,0xe8000029,0x14103c08,0xc1002075,0xc10100e0,0xb80083e1,0x028e3be1, +0x00000000,0x9001c3e2,0x120e3809,0x10877811,0x009e5f74,0xb801c2e5,0x00000000,0x01de1d7d, +0x00000000,0x00000000,0x061eb9e1,0x109e0821,0x00000000,0x900038e4,0x00877a75,0x00000000, +0x00000000,0xb80202ea,0xc1fff8e8,0x109e4810,0xc10000e1,0xe800007c,0x008688e9,0x04f03874, +0xc1000070,0x900039e9,0xc1ffb8e1,0x008588e1,0x00000000,0x031e5e73,0xc2b2d4e1,0xc30001e0, +0x120e7905,0x00000000,0x00000000,0x031579e1,0xc10000e1,0xe8000031,0x04f03880,0xc100006d, +0x00851c59,0xd1ffcb88,0x1080a270,0x0010d503,0x1086db04,0x80001419,0xe8ffffed,0x04901b80, +0x10851481,0x10871c05,0xe8ffffa9,0x04901c75,0xe8000065,0x04f01d7c,0x00171d01,0xc1ffb8e4, +0xc1ffd8e1,0x008e48e4,0x008e08e1,0x00851de4,0x00855de1,0x1080a270,0x031e5e73,0xc2b2d4e1, +0xc30001e0,0x120e7905,0x00000000,0x0310f9e1,0xd1ffcb1f,0x00000000,0x10871c04,0x80001519, +0xe8ffffd4,0x80001419,0x04901c7c,0x10855504,0x10851405,0xc10000e1,0xe800007d,0x04f0387c, +0xc1000071,0xc1ffb8e4,0xc1ff78e1,0x0085c8e4,0x008588e1,0xc10000e1,0xe8000051,0x04f03880, +0xc100006d,0x00155700,0x00851c59,0x00000000,0x031e1573,0x00000001,0xe800001d,0x14003801, +0xd1ffcaac,0x1080a272,0xc100020d,0x00000000,0x80001419,0x1086db05,0xe8ffffd5,0x04901b80, +0x10851480,0x10855581,0x10871c05,0xe8ffffa9,0x04901c7d,0x00000000,0xb801d9e3,0x00000001, +0x129e3841,0xe80001c9,0x14003801,0xd1ffc8d4,0x00109a00,0x1080e273,0x00109a00,0xac031911, +0xd1ffcbbe,0x0010c601,0x00000000,0xac0359e0,0x8403191b,0x00000001,0xe8000195,0x040006e1, +0x00000000,0xb80258e3,0x00000001,0xc10000e0,0x129e7805,0xe8000179,0x041038e5,0xc12009e0, +0xc1ffff19,0x00000000,0x9003e2e1,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704, +0xb8008059,0x00000000,0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000, +0xb801c06c,0xb8020071,0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081, +0x00000000,0xb8034084,0xb8038089,0x00000000,0xb803c08c,0xb8040091,0x00000000,0xb8044094, +0xb8048099,0x00000000,0xb804c09c,0xb80500a1,0x00000000,0xb8004720,0xb800871d,0x07000101, +0x10824741,0x00100901,0xd2fffce2,0xc1000181,0xe8000079,0x14102009,0x00000000,0xb80103e3, +0x00000001,0x121e7805,0xc27d00e1,0xe8000069,0x040039e1,0xc2bb80e1,0xe800005d,0x040039e1, +0xc2dac0e1,0xe8000079,0x040039e1,0xc2fa00e1,0xe800006d,0x040039e1,0xc23880e1,0xc30001e1, +0xe800005d,0x040039e1,0x00000000,0xb80143e7,0xc2bb80e1,0xe8000051,0x041039e1,0xc10000e1, +0xd2fffc86,0x001eb801,0x00000000,0xb80103e5,0xd2ffff9b,0x00000000,0xb80143e7,0xc27d00e1, +0xe8000015,0x041039e1,0xc10003e1,0xd2fffc5a,0x001eb801,0xd2fffffa,0xc10002e1,0xd2fffc4a, +0xc10000e9,0xd2ffffbe,0xc10001e1,0xc10000e1,0xe80001a5,0x04f0387c,0xc1000071,0xc1ffb8e8, +0xc1feb8e4,0xc1ff78e1,0x008948e8,0x008908e4,0x0088c8e1,0xc1000068,0xc1000164,0xc1000261, +0xc10000e1,0xe8000159,0x04f03880,0xc100006d,0x00156301,0x0015e500,0x00851a90,0x0015a401, +0x00000000,0x031e1773,0x00000001,0xe800010d,0x14003801,0xd1ffc838,0x1080a272,0xc100060d, +0x00000000,0x80001419,0x00000000,0x031e1573,0x00000001,0xe80000a5,0x14003809,0xe80000b5, +0x14003801,0xe80000c1,0x14003805,0xe80000b9,0x1400380d,0x00000000,0x031e5573,0x00000001, +0x129e3905,0xe8000021,0x14003801,0x109e3905,0x00000000,0x031e14e3,0x00000001,0x00000000, +0x800054e1,0x00000000,0x031e9958,0x031f1669,0x00000000,0x031e5859,0xc1003fec,0xc1003fe1, +0xc1003fe5,0x010ebae4,0x00000000,0x010efced,0x010e39e0,0x028e7be9,0x028e39e1,0xe800005d, +0x14003801,0xd2fffd88,0xc1200be1,0x00000000,0x9003e2e1,0xc1ffff19,0x00000000,0x031e166a, +0xd2ffff76,0x00000000,0x800094e0,0x800054e1,0xd1ffc75c,0x1080a272,0xc100060d,0x00000000, +0x80005419,0xd1ffc748,0x1080a272,0xc100060d,0xd2ffff44,0x8000941b,0x1086db04,0xc10060e4, +0xc10060e1,0xe8fffedc,0x008514e0,0x008596e5,0x04901b80,0x1085d780,0x10855581,0x10871c05, +0xe8fffea0,0x10869a0d,0x04901c7c,0x1086180c,0x1086590d,0xc2b2d4f0,0x161e5d90,0x161e1f91, +0xc1ffb8f5,0xc30001f0,0xc10001ec,0xc1feb8e9,0x108e7908,0x108e3808,0xc1000069,0x008648f4, +0x0085c8e8,0x00863bf1,0xc1000858,0x12057908,0x12053809,0xc10000e1,0xe800017d,0x04f03874, +0xc1000071,0x1219da08,0xc1000098,0x00195601,0xc10000e1,0xe8000145,0x04f03880,0xc100006d, +0xc10000a0,0x00191900,0x0088e65d,0x00000000,0x031ea473,0x00000001,0xe8000305,0x14003a01, +0xc1ffffe0,0x031e1e71,0x00000000,0x00000000,0x008e7ae1,0xc1feace0,0x00000000,0x1080a271, +0x008108e1,0x120e3805,0x00000000,0x031e18e3,0x00000001,0xc2b2e4e0,0x160eb83d,0xc30001e1, +0x008e3ae1,0x00000000,0x031eb8e7,0x00000001,0xd1ffb3e0,0xc2b340e0,0x160e7a51,0xc30001e1, +0x0080f9e1,0x00000000,0x031e239d,0x00000000,0x034e21a2,0xc1feace4,0x00000000,0xc2b100e9, +0xc30001e8,0x00000000,0x120ef809,0x008e25e0,0x034e48e4,0x034ebbeb,0x00000001,0x00000000, +0x21fe79e9,0x109e3821,0xc1feb0e0,0x900038e5,0x00000000,0x034e48e0,0x034e21a3,0x00000001, +0x008e25e0,0x21fe79e9,0x109e3811,0xc1feb4e0,0x900038e5,0x00000000,0x034e48e0,0x034e21a3, +0x00000001,0x008e25e0,0x21fe79ea,0x00000000,0x900038e5,0x00000000,0xc10060e0,0x1086db05, +0xe8fffeec,0x00000000,0x0088e3e1,0x04901b80,0x10892480,0x108a2811,0x10871c04,0xc10090e1, +0xe8fffeb0,0x00000000,0x008965e1,0x04901c74,0x1089a60d,0xe800016d,0x04f01d7c,0x00171d01, +0x00000000,0x16091d0d,0x0018d500,0x00000000,0x12195a09,0x00000000,0x031e9973,0x00000001, +0xe80001f9,0x14003a01,0xc1ffffe0,0x031e1e71,0x00000000,0x00000000,0x008e7ae1,0xc1feace0, +0x00000000,0x1080a271,0x008108e1,0x120e3805,0x00000000,0x031e18e3,0x00000001,0xc2b2e4e0, +0x160eb83d,0xc30001e1,0x008e3ae1,0x00000000,0x031eb8e7,0x00000001,0xd1ffb278,0xc2b340e0, +0x160e7a51,0xc30001e1,0x0080f9e1,0xc10000e1,0xe80000b5,0x04f03880,0xc100006d,0xc10000f4, +0x008f245d,0x00000000,0x031efc95,0x00000000,0x034e61f5,0xc1feace5,0xc2b100e8,0x00000000, +0xc10060e1,0xc30001e8,0x034e48e4,0x120efb09,0x008f3ce0,0x034ebbe8,0x008e23e7,0x00000001, +0x00000000,0x21fe79e9,0x109e3821,0xc1feb0e0,0x900038e5,0x00000000,0x034e48e0,0x034e21f7, +0x00000001,0x008e23e0,0x21fe79e9,0x109e3811,0xc1feb4e0,0x900038e5,0x00000000,0x034e48e0, +0x034e21f7,0x00000001,0x1086db04,0x21fe79e8,0x008e23e1,0xe8ffff71,0x04901b80,0x108f7d10, +0x900038e5,0x10871c04,0xc10090e1,0xe8fffec8,0x00000000,0x0088e3e1,0x04901c7c,0x1089240d, +0xc10000e1,0xe8000039,0x04f03880,0xc100006d,0xc100002d,0xc10020e1,0xe8000015,0x04f01fe0, +0x00171f01,0x00129401,0xd6002306,0x1086db05,0xe8ffffe5,0x04901b80,0x1082cb11,0x10869a05, +0xe8fffcd4,0x10851431,0x14901a30,0x10855530,0x10859631,0xd2fff97a,0xc1000019,0x00000000, +0x034e21a3,0x00000001,0x008e25e1,0xc10000e4,0x109e3821,0x00000000,0x900038e5,0x00000000, +0x034e21a3,0x00000001,0x008e25e1,0xc10000e4,0x109e3811,0x00000000,0x900038e5,0x00000000, +0x034e21a3,0xd2fffdb1,0xc10000e0,0x008e65e1,0x00000000,0x900039e1,0xc10000e1,0xe8ffff29, +0x04f03880,0xc100006d,0xc10000e9,0x00000000,0x034e21eb,0x00000001,0x008e23e1,0xc10000e4, +0x109e3821,0x00000000,0x900038e5,0x00000000,0x034e21eb,0x00000001,0x008e23e1,0xc10000e4, +0x109e3811,0x00000000,0x900038e5,0x00000000,0x034e21eb,0x1086db05,0xe8ffffb4,0xc10000e0, +0x008e63e1,0x04901b80,0x108eba10,0x900039e1,0xd2fffeb7,0x10924941,0x1081c940,0x9000891d, +0x10924771,0x009e820d,0xe800002d,0x14803a00,0x90000408,0xc10000e5,0x001e3a00,0x009eba0d, +0xe8fffff9,0x14e03a00,0x108e7905,0x00000000,0x900004e1,0x00000000,0x900005e5,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000c904,0x9000891d, +0xc1009424,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90034084,0x90038089, +0x00000000,0x9002c07c,0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c, +0x90020071,0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000, +0x90004054,0x90008059,0x00000000,0x90000051,0x00154200,0x00158300,0x0015c401,0x00000000, +0xa40243e0,0xac00c367,0x00000001,0xe800025d,0x14103809,0x00000000,0xa40203e3,0x00000001, +0x129e3821,0xe800023d,0x14003801,0xc1000261,0x129e0504,0xb80002ed,0x111eb800,0x111e4400, +0xc10000e1,0x00000000,0x029e7ae5,0x109e8821,0x00000000,0x90003aed,0x00000000,0x00000000, +0xb80042ee,0x109e8811,0xe80002d0,0xc1fff8f1,0x041038e4,0x008508f0,0x90003aed,0xc10190e1, +0xe80001f1,0x04f019e1,0x12109911,0xd1fffe88,0xc1ffe8e4,0xc1ffece1,0x00000000,0x008108e0, +0x008148e5,0xc100050d,0x129e993c,0xc2c8c4e0,0x109e4841,0x121f3a08,0x129ed90c,0x109e8831, +0x120e5808,0x900039f0,0xc30001e1,0x0086b9e0,0x90003aed,0xc21e08e8,0xc1000089,0xc30001e9, +0x001eba01,0x1088a204,0xc1002de0,0xc10000e5,0xe8fffff4,0x00000000,0x90003ae5,0x049022e0, +0x108eba11,0xc1000085,0xc1ffe8e0,0xc1000064,0xc1000081,0x008708e0,0xc1000060,0x1086d649, +0x00000000,0x031e5a87,0xc10000e1,0xe8000071,0x04f038e4,0xc1000089,0xc21e08e0,0x0085e06d, +0xc30001e1,0x008598e1,0x00109500,0x0340dc65,0xd1ffc05f,0x00000000,0x034e5c64,0x80001719, +0x00000000,0x031e1a85,0xc10001e1,0x1088a204,0x00000000,0x10861811,0x10882004,0x00000000, +0x020e78e5,0xe8ffffc4,0x1085d704,0x109e7905,0x049022e0,0x10859610,0x900016e5,0x10886105, +0xe8ffff81,0x14902110,0x10865911,0xc10027e1,0xe800002d,0x04f020e1,0x008ea06d,0x10882004, +0xc10027e0,0xc10000e5,0xe8fffff4,0x00000000,0x80003ae5,0x049020e0,0x108eba05,0xd1ffbe44, +0x00109400,0x0010d503,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059, +0x00000000,0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c, +0xb8020071,0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x00000000, +0xb8034084,0xb8038089,0x00000000,0xb8004720,0xb800871d,0x07000101,0x10824741,0x00100901, +0xd2fffdd2,0xc1000161,0xd2fffdca,0xc1000061,0xc101f4e1,0xe800005d,0x04f019e1,0xd1fffc98, +0xc1ffece0,0xc10190e5,0xc1ffe8e0,0x009659e4,0x008108e1,0xc100050c,0x12109908,0x008148e1, +0xc2c8c4e0,0x129f590c,0x109f0841,0xd2fffe28,0x109e8830,0xc30001e1,0x120e1808,0x108e7830, +0xc10000ed,0x0086b9e0,0x90003cf4,0x90003aed,0xd1fffc44,0xc1ffece1,0xc1ffe8e0,0x008108e0, +0xc101f4e5,0xc100030c,0x009099e4,0x008148e1,0xc2c8c4e0,0xa40216e0,0xc100ffe9,0xc30001e0, +0xc10000f4,0x109f0841,0xc10000ec,0x109e0830,0x108e7861,0x00000000,0x900038ec,0x90003cf5, +0xd2fffdb4,0x128e3811,0x120e1808,0x029eb8e9,0x0086b9e0,0x800216e9,0x12165904,0xc100b4e1, +0xe8000171,0x04f019e1,0x00109901,0xd1fffbc8,0xc1ffe4e4,0xc1ffe8e1,0x00000000,0x008148e0, +0x008108e5,0xc100240d,0xc1ffe4e8,0xc1fff0e4,0xc1ffece1,0x008148e0,0x034088e8,0x008108e5, +0xd1fffb96,0xc100060d,0xc2c8c4e4,0xc10000e8,0x109e0831,0xc30001e4,0x900038e8,0x120e1809, +0x108e7991,0x0086b9e1,0xc1ffe8e0,0xc1000085,0xc1000080,0x10875748,0x0087c8e1,0x10879648, +0xc100006c,0xc1000071,0x00000000,0x031e5a84,0x034edf72,0xc10001e9,0xc10000e1,0xe8000084, +0x020ebaed,0x04f038e4,0xc1000088,0x10967a05,0xc21e08e0,0x0085e074,0x00862079,0xc30001e1, +0x00859be1,0x00109500,0x0340df71,0xd1ffbda3,0x010e0664,0x034e5f70,0x80001819,0x00000000, +0x800017e1,0x00000000,0x00000000,0x031e1a85,0xc10001e1,0x1088a204,0x020e38e4,0x10882005, +0x10861804,0x109e7805,0xe8ffffbc,0x1085d704,0x900016e5,0x049022e0,0x1086db10,0x10859611, +0x10886105,0xe8ffff65,0x14902110,0x10871c11,0xc10027e1,0xe8fffd69,0x04f020e1,0x008ea074, +0x008ee079,0xc10000e4,0xc10027e1,0x10882004,0xc10000e4,0x80003be5,0xe8ffffec,0x80003ae5, +0x049020e0,0x108efb04,0x108eba05,0xd2fffd33,0xc100f4e1,0xe8000065,0x04f019e1,0xc100b4e0, +0xc2c8c4e5,0xc1003fe0,0x009659e0,0x10928861,0xc30001e4,0x029e19e0,0x109f8851,0x129e193c, +0x129f590c,0x1212f811,0x121ff808,0x109e8830,0x109f0841,0xd2fffeb4,0xc10000ec,0x120e1809, +0x108e79c0,0x90000a2c,0x90003cf5,0x0086b9e0,0x90003efc,0x90003aed,0xd1fff9fc,0xc1ffece1, +0xc1ffe8e0,0x008108e0,0xc100f4e5,0xc100030c,0x009099e4,0x008148e1,0xc2c8c4e0,0xc10000f4, +0x109f0841,0xd2fffe64,0x109e8830,0xc30001e1,0x120e1808,0x108e78f0,0xc10000ed,0x0086b9e0, +0x90003cf4,0x90003aed,0x10924941,0x1081c940,0x9000891c,0xc1003c25,0x00924725,0x00000000, +0xb80003e7,0xc10227e1,0xe8000085,0x04a039e1,0xc10240e4,0xc20900e1,0x008482e0,0x900003e5, +0xc10048e1,0x008442e1,0xe8000051,0x04e01149,0xc1fffce0,0xb800113c,0xc2cc6035,0x00000000, +0x034411e1,0xc1000038,0xc2cc8031,0xc100042c,0x00000000,0xc3000135,0xc3000130,0x00000000, +0x00129101,0xd600631a,0xc10048e1,0x008451e1,0xe8ffffc1,0x04801149,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0xd2ffff94,0x108e7965,0x120e3909,0x0084b808,0x900003e5, +0x10924941,0x1081c940,0x9000891d,0x10924771,0xc10048e0,0xc100012d,0x008282e1,0xd600832a, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924935,0x1081c97c, +0x9000891c,0x9000c905,0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc100b825,0x00900724, +0x00924725,0x00000000,0x900680b8,0x9006c0bd,0x00000000,0x900600b0,0x900640b5,0x00000000, +0x900580a8,0x9005c0ad,0x00000000,0x900500a0,0x900540a5,0x00000000,0x90048098,0x9004c09d, +0x00000000,0x90040090,0x90044095,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080, +0x90034085,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000, +0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e4,0xc1ffe4e1,0x00000000,0x034a47e8, +0x034a07e5,0x00000000,0x0349c7e2,0x001ac201,0x001a8500,0x00000000,0x00154401,0x00000000, +0xb801c3e4,0xb80143ef,0xc24000e1,0x029eb9e1,0xe8000011,0x14003a00,0x00198301,0x120efb05, +0x121e3b3c,0x121e7b1d,0x129e3804,0x129e793d,0xe8000014,0x109e3821,0x14003a00,0x008538e5, +0x1085140d,0xc21eece1,0xc30001e1,0x00000000,0xa00038e3,0x00000001,0xe8000025,0x14103801, +0xd1ffb2a4,0x00109403,0xc21eece4,0xc10001e1,0xc30001e5,0x00000000,0x800039e1,0x00000000, +0xb801e6e7,0xc21000e1,0x029e39e1,0xe8000241,0x14003801,0xc10001e5,0xc10000e0,0x900028e5, +0xe80003c9,0x04f038e4,0xc1000095,0x00000000,0x16089431,0xc2cbc0e8,0x00000000,0xc2cbc0f1, +0x10892a28,0xc1fff8ec,0xc2cbc0e5,0xc2100ce0,0xc30001e4,0xc30001f1,0xc30001e8,0x0088d5e0, +0xc10008e1,0xc10004e0,0x008862f0,0x0087f8e9,0x10872920,0x0087b8e4,0x008808ed,0xc100006c, +0x00161c00,0x10876a21,0xc1000068,0xc100005c,0x00166401,0xc10000e1,0xe8000231,0x04f0389c, +0xc10000b1,0x001b5901,0xc10000bc,0x0015a000,0xc10000b9,0x00000000,0xa4026de0,0x034e63b9, +0x00000000,0xb80021e7,0xe8000040,0x00000000,0x008557e5,0x14103808,0x900016e5,0x00000000, +0xa4022de3,0x00000001,0x129e3821,0xe8000169,0x14003801,0x00000000,0x034e1f8b,0x00000001, +0x00000000,0x900016e1,0x00000000,0xb801e6e7,0xc21000e1,0x029e39e1,0xe800015d,0x14003801, +0xe8000149,0x14102c01,0xc10000e1,0x0010ed00,0xb800a614,0x0010ab01,0xd1fff65a,0x00113801, +0x00150601,0x109e0950,0x034160b8,0x109e8961,0x00000000,0x90003851,0xd1ffce50,0x109e0980, +0x109e4971,0x0010ab00,0x900039b0,0x90003aa5,0x00112d00,0x90003894,0x0010d501,0xe800012d, +0x14000601,0x00000000,0xb8004055,0x1091c77c,0xb8000050,0xb800c05d,0x1091c734,0xb8008058, +0xb8010061,0x00000000,0xb800c704,0xb8018069,0x00000000,0xb8014064,0xb8020071,0x00000000, +0xb801c06c,0xb8028079,0x00000000,0xb8024074,0xb8030081,0x00000000,0xb802c07c,0xb8038089, +0x00000000,0xb8034084,0xb8040091,0x00000000,0xb803c08c,0xb8048099,0x00000000,0xb8044094, +0xb80500a1,0x00000000,0xb804c09c,0xb80580a9,0x00000000,0xb80540a4,0xb80600b1,0x00000000, +0xb805c0ac,0xb80680b9,0x00000000,0xb806c0bc,0xb8004721,0x1082477c,0xb80640b4,0xb800871d, +0x07000101,0x10824935,0x00100901,0xd2fffdce,0xc10002e5,0x00000000,0x034e1e8a,0xd2fffeae, +0x00000000,0x900016e1,0xd2fffec4,0xc100b8e1,0x008e2ae2,0xe8000029,0x14102501,0xc10000e1, +0xd1ffab60,0x0010ed01,0x00812f90,0x00117800,0x0010ab02,0xd2fffeb2,0x00150601,0x00000000, +0x031e1db1,0xd2ffffdf,0x00000000,0x108b2c04,0x108bae11,0xe8fffe00,0x108b6de9,0x04902c9c, +0x10859610,0x108befe9,0x00000000,0xb80066e3,0x00000001,0xe8000079,0x14103809,0x00000000, +0xb800a6e3,0x00000001,0xe8000065,0x14003801,0x00000000,0x034e1c68,0x034e696a,0x00112600, +0x0010a300,0x0010d902,0x109e5820,0x082eb9e0,0x109e0951,0xc1fff8e4,0x900018e8,0x900039e9, +0x00000000,0x034148e4,0x9000386d,0x00000000,0x034e696a,0xd10016f1,0x109e0961,0x00000000, +0x900038e5,0xe8fffe41,0x14100601,0xc10000e1,0xe8000061,0x04f0389c,0xc10000b1,0xc1000058, +0x00155900,0x00152901,0x00000000,0xa40255e0,0x034e635b,0x00000001,0xe8000078,0x008e57e5, +0x14103809,0x0010b900,0x03415468,0x03412059,0xd1ffade2,0x0010d501,0x108b2c05,0xe8ffffcc, +0x10851421,0x04902c9c,0x10859610,0x108555e9,0x00000000,0xb80028e1,0xc10240e0,0x10896505, +0xc20900e4,0x0086dbe0,0xc10074e1,0x008659e0,0x00000000,0x0085d7e5,0xe8fffcbd,0x049025e0, +0x10869a10,0x10861811,0xd2fffd9e,0xc1000019,0xd1fff998,0x0080d468,0x0010b903,0xd2ffff9f, +0x10924941,0x1081c940,0x9000891d,0x10924761,0xc10000e1,0xe8000011,0x04e03810,0xc1000029, +0xd600033e,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924935, +0x1081c97c,0x9000891c,0x9000c905,0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc1008825, +0x00900724,0x00924725,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075, +0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058, +0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e4,0xc1ffe4e1,0x00000000, +0x034747e8,0x034707e5,0x00000000,0x0346c7e1,0x00158201,0x00178401,0x0017c300,0x00000000, +0x00168501,0x00000000,0xb80302e3,0x00000001,0xe800008c,0xc1000061,0x14103800,0x00154300, +0xc100005d,0xc10003e0,0xc1ffff19,0x00000000,0x9003c2e1,0x00000000,0xb8004055,0x1091c77c, +0xb8000050,0xb800c05d,0x1091c734,0xb8008058,0xb8010061,0x00000000,0xb800c704,0xb8018069, +0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079,0x00000000,0xb802c07c, +0xb8004721,0x1082477c,0xb8024074,0xb800871d,0x07000101,0x10824935,0x00100901,0x00000000, +0xb801c3e7,0xc21000e1,0x029e39e1,0xe8000059,0x14003801,0xe8000049,0x14101b05,0xc1000951, +0xd1ffb306,0x10808271,0x00000000,0xb80196e3,0x00000001,0x009e3819,0xe8000045,0x04e03851, +0xd2ffff54,0xc10000e0,0xc1200ce5,0x00000000,0x900356e0,0x9003d6e5,0xc1ffff19,0xd2ffffc6, +0xc1001151,0xe8000011,0x14101b05,0xd2ffffb6,0xc1001151,0xd2ffffae,0xc1002051,0x00000000, +0xb801d5e3,0x00000001,0x129e3841,0xe800005d,0x14003801,0x1200d40c,0xac031510,0x10809671, +0xd1ffb51f,0x00000000,0xac0355e0,0x8403151b,0x00000001,0xe8000035,0x040006e1,0x00000000, +0xb8025fe3,0x00000001,0xc10000e0,0x129e7805,0xe8000019,0x041038e5,0xc12009e0,0xc1ffff5d, +0x00000000,0x9003d6e1,0xc1fff8e4,0xb801d5e0,0xc1fffce1,0xc21000f0,0x008ec8e4,0x109e8951, +0xd1ffa2e4,0x109e0960,0x008e48e1,0x10809670,0x900038e4,0x0010db01,0x00115a00,0x90003aec, +0x029138f1,0xe8000019,0x14000601,0xe8000011,0x14101701,0xc1ffff5c,0x9003d619,0xc1fffce1, +0xc1ffe8e0,0xb801d5e0,0x034e48e1,0x008088e3,0x028e38e5,0x00000000,0x9001d5e1,0x00000000, +0xb80215e0,0xb8005ae7,0x00000001,0x028e38e5,0x00000000,0x900215e1,0x00000000,0xb801960d, +0xd1ffb107,0xd1ffb2c8,0xc1ffe8e1,0x00000000,0x008088e1,0xc100200d,0xc20000e5,0xc20000e0, +0x00150600,0xc3ffe6e5,0xc3ffe2e0,0x029e46e5,0xe8000061,0x041039e1,0xc20000e1,0xc30001e1, +0xc10000e0,0x029e46e1,0xe800001d,0x041038e5,0xd1ffb1ac,0xc1ffe8e1,0x00000000,0x008088e1, +0xc100100d,0xc20000e1,0xc30008e1,0x029e14e1,0xe8000155,0x14003801,0xc10009e5,0xd1ffb250, +0xc1ffe8e1,0x0010f900,0x008088e2,0x00160601,0xd1ffb114,0x10809673,0x00000000,0xb80196e0, +0xb8001aeb,0x00000001,0x00957819,0x008e7a55,0x01be18e5,0x00000000,0x06163861,0xe8000111, +0x14103a00,0xc1000050,0x00967961,0x00000000,0xb801d6e7,0x109e0841,0x00000000,0x900038e5, +0x00000000,0xb80216e7,0x109e0831,0xc10000e0,0x900038e5,0x00151900,0x900356e1,0xe800004c, +0x00955551,0x14101701,0xc1fff0e0,0x109e8950,0x109e4961,0xd1fff660,0x109e0970,0x008088e1, +0x0010df00,0x90003a74,0x9000386d,0x00115a00,0x90003970,0x00111e01,0xe8000011,0x14000601, +0xc1ffff5c,0x9003d619,0xe8000039,0x140017fd,0xc1fff0e4,0xc1fff4e1,0x00000000,0x034e48e7, +0x00000001,0x00000000,0x900256e5,0x00000000,0x034e08e3,0x00000001,0x00000000,0x900296e1, +0xc1fff8e1,0x00000000,0x034e08e3,0x120e590d,0xe80000d8,0x009e39e1,0x04901560,0x9002d6e1, +0x00111800,0xb80196e0,0xb803160a,0xd1fffb56,0x0090f861,0x00000000,0x90035661,0xd2fffc58, +0x00119703,0xd2fffeba,0xc10008e5,0x00000000,0xb80356e7,0x00000001,0xe8000025,0x04b03ae5, +0xe8ffff1d,0x14101701,0xd2ffff14,0xc12010e1,0x00000000,0x9003d6e1,0xc1ffff5d,0xc1fff0e0, +0xb80316e1,0x008088e2,0xd1ffaefd,0x008e38e5,0x0090f8e9,0x00000000,0xb8001ae3,0x00000001, +0xe8fffedd,0x04b019e1,0xd1ffaf7c,0x009519e0,0x10809673,0x00000000,0xb80316e4,0xb80356e1, +0x00111401,0xd1fffabe,0x0010c600,0x0080b9e1,0x00000000,0xb80356e3,0xd2fffea5,0x008e3851, +0x00000000,0x900356e1,0x00000000,0xb8001ae3,0x00000001,0xe8000089,0x04f019e1,0x00000000, +0x00953865,0x008e1455,0xe800000d,0x04b03861,0x00951855,0x00000000,0xb80356e3,0x00000001, +0xe8000025,0x04f014e1,0x00111400,0xb803160b,0xd1fffa51,0x008e3809,0x0090f851,0x00000000, +0x90035651,0x00111500,0xb80356e5,0x00000000,0xb80316e8,0xb80196e2,0xd1fffa2a,0x0080bae4, +0x0090f855,0x00000000,0xb80356e3,0xd2fffed1,0x008e3855,0x00000000,0x900356e1,0xd2ffffc8, +0xc10000e1,0x00000000,0x900356e2,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1007425,0x00900724,0x00924725,0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c, +0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xd1ff71fb,0xd1ff8800, +0xc2fffc09,0xc1004010,0xc100000c,0xc300010a,0xd1ff8938,0xc2393c09,0xc300000a,0xd1ff71c7, +0xc28000e4,0xc20004ed,0xc2a344fc,0xc30000ec,0xc20000e9,0xc20004f0,0xc20000e0,0xc2a34465, +0xc2a37c68,0xc30001fc,0xc21ee459,0xc2a3805c,0x008f7be4,0xc21f1041,0xc21ee850,0xc30300e8, +0xc21eec49,0xc30000f0,0xc2003038,0xc2003431,0xc30300e0,0xc2002c2c,0xc20010ed,0xc2a384f8, +0xc20008e4,0xc3000165,0xc3000168,0x10863f40,0xc3000159,0xc300015c,0xc1000054,0xc100004d, +0xc3000150,0xc3000140,0x0283fce9,0xc3000148,0x02837de0,0xc1000045,0xc3038238,0xc303822c, +0xc10000e9,0xc3038230,0xc1200028,0xc30001f9,0xc2a384fc,0xc10001f4,0xc30382ed,0xc20010f0, +0x90001760,0x90001a65,0xc10001e0,0x9000144c,0x90001655,0xc10a04e8,0x900010e8,0x80001245, +0xc30382e4,0x90000c34,0x90000e3d,0xc30001fc,0x90003ef4,0x90000b29,0xc30382f0,0x900039e0, +0x90003be9,0x00000000,0xb8003ce7,0xc10200e1,0x029e39e1,0x00000000,0x90003fe1,0x00000000, +0xb8003fe3,0x00000001,0xe8ffffdd,0x14103801,0xc2010ce0,0xc1000409,0xc30382e0,0xc100020d, +0x00000000,0xb80038e6,0xd10000dc,0xc21ee0e1,0xc30001e1,0xc1000114,0x900038e4,0xc1000511, +0xc2a384e1,0xe800001c,0xc30001e1,0x14000600,0x90003819,0xd10001aa,0xc1000208,0xc1301f0d, +0xd10005f9,0xc2a34409,0xc3000109,0xd1ffb625,0xc2a34409,0xc3000109,0xc2a37ce4,0xc2a380e0, +0xc10000ed,0xc30001e4,0xc30001e0,0xc10000e9,0x00000000,0xb80039f0,0xb80038e6,0xc10000e1, +0xd1000221,0xc2a34408,0x9000fce8,0x9000bced,0xc3000108,0x9000b9e1,0xc1000019,0x1091c741, +0x00000000,0xb800c704,0xb8008059,0x00000000,0xb8004055,0x00000000,0xb8014064,0xb8018069, +0x00000000,0xb8000050,0xb8010061,0x00000000,0xb800c05c,0xb800871d,0x07000101,0x10824741, +0x00100901,0x10924941,0x1081c940,0x9000891c,0xc1003025,0x00924725,0x001e8401,0x001fc200, +0x001f4500,0x001f8301,0xc20008e4,0xc10000ed,0xc30382e5,0x001e7901,0x00000000,0xb80039e3, +0x00000001,0x129e3805,0xe800001d,0x14003801,0xc20000e1,0x108efb04,0xc30001e1,0xe8ffffdd, +0x04a03be1,0x120e7e10,0x120e3d25,0x120eba18,0x028effe4,0xc20008e5,0xc20010e8,0x028efbe8, +0xc30382e5,0xc30382e8,0xc10001e0,0x028efbe1,0xe8000054,0x900039e0,0x90003aed,0x14003d00, +0xc10000f1,0xc20010e8,0xc10000ed,0xc30382e9,0x001eba01,0x00000000,0xb8003ae7,0xc10200e1, +0x029e39e1,0xe8000021,0x14003801,0xc20000e1,0x108efb04,0xc30010e1,0xe8ffffdd,0x04a03be1, +0xc10001f1,0x0011bc01,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0x00000000, +0x90000051,0x001e0200,0x00150301,0xd1fffed9,0x0010b801,0xc1000210,0xc100000c,0xc1000115, +0xe800001d,0x14000601,0xd1fffebd,0xc1000211,0xc1000208,0xc100000c,0xc1000115,0xc2000ce0, +0xc20018e8,0xc20008e5,0xc30382e0,0xc30382e9,0xc30382e4,0xb80038e4,0xc10001e1,0x00000000, +0x900039e0,0x90003a52,0xc2000ce1,0xc30382e0,0x128e7905,0x00000000,0x900038e5,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc100bc24,0x90004920,0x10920741,0x00900724, +0x00924725,0x00000000,0x9002c07c,0x90030081,0x00000000,0x90024074,0x90028079,0x00000000, +0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061, +0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0x0016c201,0xc1004ce1,0xc10000e4, +0xc1000060,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb8028283,0x00000001,0xe8000079, +0x14102001,0xc1ffff19,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059, +0x00000000,0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c, +0xb8020071,0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x00000000, +0xb8004720,0xb800871d,0x07000101,0x10824741,0x00100901,0xc20004e4,0xc2002ce0,0xc10048e9, +0xc30382e4,0xc30382e0,0xc21f00f9,0x00000000,0xb80039e8,0xb80038e1,0xc21ef8f0,0xc10040ed, +0xc21ef4e4,0xc10000e8,0x009e08e9,0xc1ffb42c,0x900038e9,0xc2126828,0xc30001f0,0xc30001f9, +0x129ffa0c,0xc30001e4,0x109f48b1,0xc10010ec,0x0087a0ec,0x120eb809,0xc1ffb8e0,0x0087c82c, +0x00876029,0xd1ffa6b4,0x10868240,0x00170201,0x008088e0,0x90003dfc,0x90003efd,0xc100000c, +0x900039e8,0x90003ced,0xe800016d,0x140006fd,0xc2002850,0xc201085d,0xc2a37064,0xc3038250, +0xc2a37459,0xc21ee854,0xc3000158,0xc3000165,0xc303825c,0x00151400,0xc3000155,0xd100027c, +0x00109c00,0x0010e003,0xe8000131,0x14000641,0xc10100e1,0xe8000121,0x040006e1,0xc21000e1, +0xe8000101,0x040006e1,0xd1ffb258,0x00000000,0x0010df01,0xc2a37414,0x00111a00,0x00109b01, +0xc3000115,0xe800004d,0x141006fd,0x00000000,0xb803e0e7,0xc2f000e1,0xc10000e0,0x029e79e1, +0xe80000c1,0x040038e5,0xd1ffb091,0x00111e00,0x0010e000,0x00109f02,0xe80000c1,0x14000641, +0xc10100e1,0xe80000b1,0x040006e1,0xd2ffff9f,0x00000000,0xb801a0e4,0xb80160e1,0x00000000, +0xb80019e4,0xb80017e3,0x009eb9e1,0x008e79e9,0xe8000088,0x900019e5,0x04c039e1,0xe8ffff6d, +0x14100601,0xc1ffb8e4,0xb80016e4,0xc21004e1,0x00815de0,0x00000000,0x008088e5,0xd10003fd, +0x109e0951,0x00111e00,0x900038e4,0x0010da01,0xe8000049,0x14000641,0xc10100e1,0xe8000039, +0x040006e1,0x00000000,0xb80015e3,0xd2ffff1d,0x108e3805,0x00000000,0x900014e0,0x900015e1, +0x00000000,0xb803e0e3,0x00000001,0xe8fffed1,0x14003805,0xc1ffff61,0xc2a374e0,0xc10048e4, +0xc10003ed,0xc30001e0,0x009e88e4,0xc1ffb8e5,0x008088e4,0x90003aec,0xb800380d,0xd1ffa4ff, +0x00000000,0xb8029be3,0x00000001,0x00000000,0xb803f8eb,0x00000001,0x110e7a00,0x110e3a05, +0x028e39e1,0xe8000021,0x14003801,0xd1fffbd0,0x00000000,0x0010fa02,0xc1000109,0xd2fffd2c, +0x00119803,0xd1fffbb8,0x00000000,0x0010fa02,0xc1000209,0xd2ffffeb,0x10924941,0x1081c940, +0x9000891c,0xc1002425,0x00924725,0xc21f14e0,0xc22ec0ed,0xc30001e0,0xc280c8e9,0x129e38f0, +0xc30001e9,0xc22ebce4,0xc252c0e0,0x108f3821,0xc30001e4,0x900042f0,0xc30001ed,0xc280c8e4, +0x900039f0,0xc30001e1,0xc30001e4,0x900282e8,0x900142ed,0xc25cc8e8,0x900339e0,0xc21200e5, +0xc30001e8,0xb80282f0,0xc22278e1,0x008ebae6,0xc22274e4,0x00000000,0xc25cc8ed,0xc30001ec, +0x008e7ce5,0x00000000,0x900039ed,0x00000000,0xb80282e7,0x00000001,0x008e39e1,0x00000000, +0x900038e9,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1003c25,0x00900724,0x00924725,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0x00154200,0x00158301,0x00000000,0xb800c2e3,0x00000001, +0xe800003d,0x14003801,0xc1001019,0x1091c741,0x00000000,0xb800c704,0xb800805b,0x00000000, +0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0x00000000, +0xb80183eb,0x00000001,0xe8000029,0x14003a01,0x00000000,0xb80042e4,0xb80082e3,0x00000001, +0x008e39e1,0x009e38e9,0x00000000,0x900082e1,0xc21ee0e4,0xb80082fc,0xc21f14e1,0xc30001e4, +0x00000000,0xc30001e1,0x00000000,0xb80039e6,0x008e3fe1,0x00000000,0xb80183f1,0x129fb90d, +0x009e38f9,0xc10004e0,0x00000000,0x129e780d,0xe800004c,0x009e38e5,0x14003c00,0x129f780d, +0xc21f14ec,0xc10000e1,0xe8000034,0xc30001ed,0x04e038fc,0xc10000e8,0x008e7ded,0x001e7901, +0x00000000,0x031e3cea,0x108eba05,0xe8fffff5,0x04803afc,0x108e7904,0x800039e1,0xc21f14e4, +0xc21ee0e8,0xc10fa0e1,0xc30001e4,0xc30001e8,0x009f38fd,0x108e3c0c,0x008f7de4,0x009efff9, +0x109e0950,0x900042f4,0x008e78f9,0x12217908,0xb8003ae0,0x0080fded,0x00000000,0x900038f1, +0xd1000296,0xc1000008,0x009138f9,0xe8000041,0x141006fc,0x00150601,0xc10001e0,0xb80055e4, +0xb80095e1,0x00000000,0x9000d5e3,0xc1000050,0x008e78e5,0x10851404,0xc10000e1,0xe8fffff8, +0x800039e1,0x14801420,0x108e7905,0xc21ee4e4,0xc20108e1,0xc30001e4,0xc30382e1,0x00000000, +0xb80039e4,0xb80038e3,0x00000001,0xe8000041,0x048039e1,0xe8000039,0x14e01421,0x00000000, +0xb80095e0,0xb80055e7,0x00000001,0x008e14e1,0x008e78e5,0x10851404,0xc10000e1,0xe8fffff8, +0x800039e1,0x14801420,0x108e7905,0x00109600,0xb80095e0,0xb800550f,0xd1000dcd,0x008e3851, +0x00113800,0x900095e1,0xd1ff7a02,0xc1000009,0xd2fffdfe,0xc1000019,0x1092497d,0x10924915, +0x1081c97c,0x9000891c,0x9000c905,0x1081c714,0xc1004825,0x00900724,0x00924725,0x00000000, +0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0xc1ffece0,0x00164301,0x00000000,0x0345c7e3,0x00168200,0x00000000, +0x00160501,0x00000000,0xac008550,0xb800855a,0x00000000,0xb800c556,0xe800000d,0x14101405, +0xc1000055,0x00000000,0xb80083e3,0x00000001,0xe80000a9,0x04003851,0xc10001e4,0x90010250, +0xc10001e1,0x0010d700,0x9001c2e0,0x900002e5,0x00000000,0xb80005e3,0x00000001,0x00000000, +0x900182e1,0x00000000,0xb80005e2,0xd1ffa0ae,0x00000000,0x900142e1,0xe8000061,0x141006fd, +0xc1010019,0x1091c77d,0x1091c715,0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8004054, +0xb8000051,0x00000000,0xb800c05d,0x00000000,0xb8008058,0xb8018069,0x00000000,0xb8014064, +0xb800871d,0x07000100,0x00000000,0x1082477d,0x10824915,0x00100901,0x00000000,0x00000000, +0x90011a51,0x00109a00,0x90009951,0x0010d700,0xb8011ae1,0x00000000,0xac00d8e3,0x00000000, +0x9000d9e1,0x00000000,0x90029a58,0x90025ae1,0x00000000,0x9002da55,0xc10000e4,0xb80059e0, +0xc10002e1,0x00000000,0x90001ae0,0x90031ae5,0xd1ff9fea,0x00000000,0x90039ae1,0xe8000011, +0x141006fd,0xd2ffff42,0xc1010019,0xd2ffff3a,0xc1000019,0x1092497d,0x10924915,0x1081c97c, +0x9000891c,0x9000c905,0x1081c714,0xc1005425,0x00900724,0x00924725,0x00000000,0x90010060, +0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece0, +0x00164301,0x00000000,0x034587e3,0x00000001,0xc21ee4e4,0xc20108e1,0xc30001e4,0xc30382e1, +0x00000000,0xb80039e4,0xb80038e3,0x00000001,0xe800005d,0x048039e1,0xc1ffff19,0x1091c77d, +0x1091c715,0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8004055,0x00000000,0xb8000051, +0x00000000,0xb800c05c,0xb8008059,0x00000000,0xb800871c,0xb8014065,0x07000100,0x00000000, +0x1082477d,0x10824915,0x00100901,0xc21f08e8,0xc2011ce4,0xc2010ce1,0xc30001e8,0xc30382e4, +0xc30382e1,0x00000000,0xb8003ae0,0xb8003961,0x00000000,0xb80038f7,0x120e8508,0x00000000, +0x129e78f1,0x008f3d60,0x008e39e9,0xe80001e1,0x04a03861,0xc21ee0e0,0x00000000,0x009ed8e5, +0xc30001e0,0x0095faed,0x00000000,0xb80038eb,0x00000001,0x01ae3af0,0x01ee7af5,0x029e39e1, +0xe8000165,0x14003801,0xc21f0ce8,0xc21efce4,0xc10000e1,0xc30001e8,0xc30001e5,0x00000000, +0x900039e0,0x90003af1,0x12257b09,0xe800001d,0x14001501,0xd1ff7090,0x00115502,0xc1000009, +0xd1ff76aa,0xc1000009,0xc21efce1,0xc30001e1,0x00000000,0xb80038e3,0x00000001,0xe8000135, +0x14003801,0xd1fff421,0xc1000511,0xc1000408,0xc100020c,0xc1000115,0x00150601,0xe8000015, +0x14001401,0xd1fff4fa,0xc1000208,0xc1301f0d,0x122e1709,0xe8000035,0x14003801,0xc21f0ce0, +0x120e5508,0x00117801,0xc30001e0,0xc1000008,0x0080d9e5,0x00000000,0xb8003811,0xd1ff700b, +0xd1ff762a,0xc1000009,0xc21f08ec,0xc21f0ce4,0xc21f08e9,0xc30001ec,0xc30001e4,0xc21ee0e1, +0x00000000,0xb8003bec,0xb80039e7,0x00000001,0x009ed8ed,0xc30001e8,0x009ed6ed,0xc30001e0, +0x90003aec,0x008e79ed,0x00000000,0x900038e5,0xc21ee4e4,0xc20108e1,0xc30001e4,0xc30382e1, +0x00000000,0xb80039e8,0xb80038e3,0x00000001,0x008e7a59,0xe800000d,0x04a039e1,0x0095b8e9, +0xd2fffdfc,0xc20038e0,0xc21ee4e5,0xc30001e4,0xc30382e0,0x008eba59,0x00119600,0x900038e8, +0x900039e9,0xe8fffec5,0x04803af1,0xd2fffebc,0xc21efce4,0xc21f0ce9,0xc30001e8,0xc30001e4, +0xc10001e1,0x00000000,0x900039e0,0x90003af5,0xd1fff2f5,0xc1000511,0xc1000408,0xc100010c, +0xc1000115,0xd2fffeda,0x00150601,0xe8000011,0x14000501,0xd1ff6f12,0xc1000009,0xc21f08ec, +0xc21ee0e4,0xc21f08e9,0xc30001ec,0xc30001e4,0xc21ee0e1,0x00000000,0xb8003bec,0xb80039e6, +0xc30001e9,0xd1ff7505,0xc30001e0,0x008efb58,0x008e7959,0xc1000008,0x900038e4,0x90003aed, +0xd2ffff13,0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x90004921,0x1081c724,0xc1002825, +0x00920724,0xc100e825,0x00900724,0x00924725,0x00000000,0x90010060,0x90014065,0x00000000, +0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece4,0xc1ffe8e1,0x00000000, +0x034487e4,0x034447e3,0x00000001,0x00000000,0xa40203e4,0xa41083e1,0x00000000,0xa40243ec, +0xa410c3eb,0x00000001,0x129e7920,0x011ebbe8,0x129e3821,0x011e39e1,0x028e3ae1,0xe8000049, +0x14003801,0xc1201419,0x00000000,0xb8000050,0xb8004055,0x1091c77c,0xb8008058,0xb800c05d, +0x1091c724,0xb8010060,0xb8014065,0x1082477c,0xb8004720,0xb800871d,0x07000101,0x10824925, +0x00100901,0x00000000,0xb80084e9,0xc1ffb2e1,0x008408e1,0xc1000058,0x00000000,0x001e5001, +0x10859604,0xc10027e1,0xe8fffff8,0x840039e9,0x049016e0,0x108e7909,0x00000000,0xb80084e3, +0x00000001,0x129e3805,0xe8000351,0x14003801,0x00000000,0xb801c4e8,0xa410c3e2,0x00000000, +0x00000000,0xb80042f5,0xc10100e5,0xe8000428,0x028e7ae5,0x14103808,0x1085c3e8,0x9001c4e5, +0xc10058e4,0xa40217e1,0xc10054e8,0xc10000f0,0xc1005ce1,0xc1ffa4e8,0x009ec8e4,0x009e48e9, +0xc10000f0,0x900039f0,0x009e48e1,0xea000084,0xc10000e8,0x008348e9,0x129e3820,0x900039e8, +0x90003bf1,0xc1000060,0xc1000050,0xc100003d,0x14003800,0xc1000030,0xc100004d,0x00000000, +0x03155317,0xc10000e1,0xe800002d,0x04f03854,0xc1000058,0x1084d305,0xc10000e5,0x00000000, +0x034e3de7,0x00000001,0xe8000345,0x14003801,0x00131301,0xc10024e0,0x00851454,0x120e5509, +0xe8ffffbc,0x008f7de5,0x049014e1,0x0013d301,0xe8000075,0x04f01444,0xc1000039,0x00000000, +0x03155317,0xc10000e1,0xe800003d,0x04f03854,0xc1000058,0x1084d305,0xc10000e5,0x00000000, +0x034e3de7,0x00000001,0xe80002f9,0x14003801,0x120e0e08,0x00161301,0x008e0de1,0x00000000, +0x9000384d,0x108e4e04,0x120e1508,0x00851455,0x11be3908,0x008f7de1,0xe8ffffa4,0x0613b9e1, +0x04901445,0x111e5800,0x009e8f30,0xc10000e1,0x00000000,0x00000000,0x061e7ae6,0x00833931, +0xe8000025,0x04f03830,0xc1000059,0x00000000,0xb80084e3,0x00000001,0x00129000,0x1292f8f9, +0xd6000342,0xe800002d,0x04f00f60,0x00158f00,0xc1000039,0x1202cf04,0xb80084e1,0x00828b43, +0x129e38f9,0x120e3841,0x12233841,0xd6006346,0xc1ffa4e0,0xc21e08e4,0xc100c0ed,0xc30001e4, +0x034388e1,0xc100e4e8,0x1082d748,0xc10090e1,0xc1000058,0xc10021f8,0x008283ed,0xc10022fc, +0x00000000,0x008f03e9,0x108f57d8,0x008eb8e4,0xc10004ed,0xe8000221,0x04b03f39,0xc1fff4e0, +0x031e0bf9,0x00000000,0x034e3ae3,0x00000000,0x80003de1,0x00000000,0x90003ae0,0x031e0afb, +0x00000001,0x00000000,0x80003ce1,0xeaffffc8,0x03438ded,0x10859604,0x108f7d04,0x108efb11, +0x108eba10,0x108fff04,0x108f3c05,0x1490160c,0x00000000,0x108fbe05,0x00000000,0xb801c4e7, +0xc21000e1,0x029e39e1,0xe800035d,0x14003801,0x00000000,0xac00d7e3,0xc2b088e4,0x00000000, +0xc1003ce9,0xc30001e4,0x129ef804,0xc10000e1,0xc100c0e8,0xc1000050,0x060ebbe9,0xe800009c, +0x008643e9,0x04f03844,0xc100004c,0x00863ae5,0xc21e0834,0xc100003d,0xc3000134,0x00139001, +0x1085d748,0x00134d01,0x00000000,0x00000000,0x032e903f,0x00000000,0x03155315,0xc10000e0, +0x129e7a05,0xe8000031,0x040038e5,0x00000000,0x031e194f,0x00000001,0xe8000255,0x14003801, +0x129e3af9,0x120e3841,0x122e3841,0x00000000,0x84000ee1,0x00000000,0x00000000,0x00851455, +0xe8ffffa8,0x10838e08,0x1084d305,0x04901444,0x10834d10,0x1083cf09,0x00000000,0xb80084e3, +0x00000001,0x129e3809,0xe800009d,0x14003801,0x00000000,0xb801c4e7,0xc10200e1,0xc2cc44e0, +0x028e79e1,0xc30001e0,0x9001c4e5,0x00000000,0x00000000,0xb8007831,0xc10000e1,0xe8000068, +0xc100004d,0x04f03844,0xc1000051,0xc100002d,0x00000000,0x00000000,0x032e102e,0x00000000, +0x03155316,0xe8000025,0x14103809,0xc10000e1,0xe8000019,0x04f03854,0xc1000059,0x008e1251, +0x1202b809,0xd6002356,0x00000000,0x00000000,0x00851455,0xe8ffffbd,0x04901444,0x1084d304, +0x1082cb09,0xd2fffb86,0xc1000019,0x10859605,0xe8fffcad,0x04901654,0x108e7911,0xd2fffcbb, +0x10859605,0xe8fffcf9,0x04901654,0x108e7911,0xd2fffd17,0xe8fffe19,0x04103f39,0xd2fffe10, +0xc10001e0,0xc10000e5,0x00000000,0x90003ae0,0x80003de6,0xc10000e1,0xe8000060,0xc1000031, +0x04f03844,0xc1000050,0xc100004d,0x00000000,0x03155317,0xc10000e1,0xe800002d,0x04f03854, +0xc1000058,0x1084d305,0xc10000e5,0x00000000,0x034e3de7,0x00000001,0xe8000099,0x14003801, +0x00131301,0x120e1508,0x00851455,0xe8ffffc0,0x008f7de1,0x04901445,0xc10000e1,0xe8000025, +0x04f03830,0xc1000059,0x00000000,0xb80084e3,0x00000001,0x00129000,0x1292f8f9,0xd600035e, +0xe8000065,0x14f00c55,0xc21e08e4,0xa40997e4,0xc21e08e1,0xc30001e4,0xc30001e1,0x00000000, +0xb80539e6,0x00000000,0x8009d7e5,0x00000000,0xa43503e5,0x00000000,0x900578e5,0xd2fffd5c, +0xc100d5e1,0x008e03e1,0x00000000,0x800038e5,0x10859605,0xe8ffff59,0x04901654,0x108e7911, +0xd2ffff67,0xe8fffd35,0x14100c55,0xd2fffd2c,0xc21e08e5,0xc30001e4,0xc10000e8,0xc10001e1, +0x00000000,0x8009d7e8,0x900579e1,0x00000000,0xb8000de0,0x031e974f,0x00000001,0xe8fffdb9, +0x040038e9,0xe8000029,0x14103a01,0xc10000e1,0xe8fffda5,0x04f03854,0xc1000059,0x008e1251, +0x1202b809,0xd6002362,0xd2fffd8f,0xc10000e1,0xe8fffd85,0x04f03854,0xc1000059,0xc1ffffe0, +0x1292fa04,0x008e5251,0x00000000,0x008e3ae1,0x121e3805,0x1202b908,0x12033809,0xd600436a, +0xd2fffd57,0xc10000e1,0xe8fffd71,0x04f03844,0xc1000050,0xc100004d,0x1083d748,0xc1000038, +0x00135001,0x00000000,0x00000000,0x032e903b,0x00000000,0x03155315,0xc10000e0,0x129e7a05, +0xe8000031,0x040038e5,0x00000000,0x031ecf4f,0x00000001,0xe8000041,0x14903b1d,0x129e3af9, +0x120e3841,0x122e3841,0x00000000,0x84000de1,0x00000000,0x00000000,0x00851455,0xe8ffffa8, +0x1084d305,0x04901444,0x10838e08,0x10834d09,0xd2fffceb,0xc10000e1,0xe8ffffd9,0x04f03854, +0xc1000059,0xc10006e4,0xc2cdf0e8,0xc2cdf0e1,0x120efb08,0x009e79ec,0xc30001e9,0x120e7908, +0x03433be8,0xc30001e1,0x008e1250,0x0342f9e3,0x1202b809,0xd6002376,0xd2ffff9b,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002c25,0x00900724,0x00924725,0x00000000, +0x90000051,0x00150201,0xc21f14e0,0xc10000e4,0xc10000f5,0xc10000f0,0xc10000ec,0xc10000e9, +0xc10000e4,0x900002e4,0xc30001e1,0xd1ff95b8,0x900082f0,0x900042f5,0xc100000c,0x900102e8, +0x9000c2ed,0x10808270,0x900182e0,0x900142e5,0xd1ff9594,0x10809492,0xc100000d,0xc10000e8, +0xc10000e0,0xc10001e5,0xc10000e0,0x900354e0,0x9002d4e9,0x00000000,0x9003d4e0,0x900394e5, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102, +0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900750,0x10924751,0xd1ff9528, +0x008e0310,0x9000020d,0xc10001e0,0x9001420c,0x900042e1,0x10808270,0x9001820c,0x9000c2e1, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002825,0x00900724,0x00924725,0x00000000, +0x90000050,0x90004055,0x00154201,0xd1ff955a,0x10808271,0x00000000,0xb80055ef,0x00000001, +0x109ebb05,0xe8000079,0x04f006e8,0x00150601,0x00000000,0xa40006e7,0xc100ffe1,0xe8000025, +0x041039e1,0x00000000,0xa40046e7,0xc100e0e1,0xc100e0e0,0x029e79e1,0xe8000045,0x040039e1, +0x10851405,0xe8000039,0x04f014e9,0x00000000,0xa40014e7,0xc100ffe1,0xe8ffffe9,0x041039e1, +0x00000000,0xa40054e7,0xc100e0e1,0xc100e0e0,0x029e79e1,0xe8ffffcd,0x041039e1,0x00000000, +0x009e3b51,0xe8000035,0x14e03821,0xc1ffff19,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901,0xd1ff93ec,0x10809570, +0x0010d403,0xd2ffffce,0xc1000019,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1005025, +0x00924725,0xc20e00e0,0xc1000045,0x008402e1,0xc100003c,0x00139001,0xc20a00e0,0xc20e00f1, +0xc20c00e8,0xc20800ec,0xc10400e5,0xc10600e8,0x00930ef0,0x0092cee9,0xc1000034,0xc10200e0, +0x00928ee1,0x1083cf04,0x009f8eec,0x009f0ee9,0xc10000e8,0xc10000fc,0x009ecee5,0xc10000e0, +0x009e4ee0,0xc10000f5,0xc10000e8,0x90000be8,0x90000c35,0xc10000e0,0x90003efc,0x90000ae1, +0xc10000e0,0x90003be0,0x90003cf5,0xe8ffff8c,0x90000ee0,0x900039e9,0x14900f20,0x10838e11, +0x10845105,0xe8ffff6d,0x14901140,0x10841081,0xc21000e0,0xc21008e5,0xc21004e8,0x008f42e0, +0xc2100ae1,0xc10000f8,0xc10000ec,0xc10000f1,0x008e42e8,0x008e02e0,0x008e82e5,0xc10000e4, +0x900039f0,0x90003df9,0x00000000,0x840038e4,0x84003aed,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x9000c905,0x1081c724, +0xc1008c25,0x00900724,0x00924725,0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c, +0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece4,0xc1ffe8e0, +0x00164201,0x00000000,0x034587e4,0x034f87e3,0x00160401,0x00000000,0xb90002f1,0x120e0508, +0x120f452c,0xc2100ce5,0x008e82e4,0x109e4950,0xc2ce34ed,0xc30001ec,0x0340bae0,0xc20900e9, +0xd1ff9808,0xc2ce340c,0x109e0961,0x00857d08,0x90003958,0x00813be9,0xc300010c,0x900038f0, +0x00117e01,0x00000000,0xb900195d,0xc10000e1,0xe80002f0,0xc1000035,0x04f03858,0x00000000, +0x00151801,0xc2ce34e4,0xc10400e1,0xc20900e0,0x0082d5e0,0xc30001e5,0x008339e1,0x129e5704, +0xc10480e0,0xc2ce34ed,0x1203b924,0x060f39e0,0x121e1705,0xc30001ec,0x00000000,0x121e8d05, +0x120e7808,0x00829538,0x008e0b39,0xc1000060,0x1204ba08,0x0084fced,0x0083f8e4,0x00844cf0, +0x00840ae5,0xd600237e,0xc1ffffe0,0x00000000,0x00168a01,0xc1ffffe0,0x008e57e0,0xc2a80865, +0x129e793c,0xc3000164,0x02ae385d,0x128eb904,0x129e7804,0xc2a808e1,0x120e7924,0x12063a08, +0xc30001e1,0x0084d8e0,0x008f95e4,0x00844be5,0xc2a808e0,0xb8007eec,0x034f15e5,0xc30001e0, +0xb80393e4,0xb800bee9,0x129e17f8,0xb80313e4,0x034ed8e1,0x120f7808,0xb800fee9,0xc2a808e1, +0xc30001e0,0xb80293e0,0x21ce3be5,0x0084bde0,0x21cefae4,0x21cf3ced,0xc2a808e4,0xb8013ee9, +0x008f3ce0,0xb80213e0,0xb8017eed,0x008efcec,0xb80193e8,0x21ce3ae1,0xc30001e4,0xb801bee9, +0x008f3be0,0xb80113e1,0xc1007ce0,0xb801fee4,0x21ce3ae1,0x008414e0,0xb80093e0,0x21ce7be9, +0x008efce0,0x034e3de4,0x034e5539,0x008f3be4,0xb8004ae8,0x21cebae1,0xc1ffffec,0xb80392e5, +0x008f3ce8,0xb8008ae8,0x21ce79e1,0xc2a808e0,0xb80312e4,0x21cf39e1,0x008fbce4,0xb800cae8, +0xb80292e5,0x02ae7bf8,0xb8010ae8,0x21cefae5,0x108fb904,0xb80212e5,0x008f3ef0,0xb8014ae8, +0x21ce7ae5,0x008efcec,0xb80192e4,0x21cefae5,0x008f3be4,0xb8018ae8,0xb80112e5,0x008f3cec, +0xb801cae4,0x21cefae5,0xc30001e0,0xb80092e1,0x008efcec,0x00000000,0x21ce3ae5,0x0093b860, +0x00000000,0x21cebae5,0x008efbe1,0xc2a808e0,0x21ce79e0,0x008ebbe9,0xc30001e1,0x0092b8f4, +0x008e7ae5,0xc100013c,0x900014e4,0x10851411,0xd6018386,0xc10080e0,0xb80011fc,0xb80051e9, +0x008659e0,0xb80091f4,0xb800d1e5,0x00829960,0xb80111ec,0x034f9961,0x00000000,0xb8038ae0, +0xb8030af1,0x00000000,0xb8028ae0,0xb8020aea,0x00000000,0xb80151e4,0xb8018ae1,0x00000000, +0x21cfbae0,0x21cffff9,0x00000000,0xb80191e0,0xb8010af5,0x008fbff8,0x21cf39e0,0x21cf7df1, +0x00000000,0xb801d1e4,0xb8008ae1,0x008e7ef4,0x21ceb9e0,0x21ce7be9,0x008ef9f1,0x008efbe4, +0x21ce38f5,0x008e7be8,0x21ce39e1,0x008e79e1,0xc1ffffe0,0x008e79e0,0x10834d05,0xc10040e4, +0x02aeb8e4,0x108e1705,0xe8fffd54,0x1295f83c,0x108e3a05,0x04900d58,0x900014e0,0x008514e5, +0xc1000019,0x1091c77d,0x1091c725,0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8004054, +0xb8000051,0x00000000,0xb800c05d,0x00000000,0xb8008058,0xb8018069,0x00000000,0xb8014064, +0xb800871d,0x07000100,0x00000000,0x1082477d,0x10824925,0x00100901,0x10924941,0x1081c940, +0x9000891c,0x9000c905,0x10900760,0x10924761,0xc20010e4,0xc20114e1,0xc30001e4,0xc30382e1, +0x00000000,0xa00039e0,0x9000380b,0x00000001,0x129e3805,0xe800007d,0x14003801,0xd1ffe2e9, +0xc1000311,0xc1000408,0xc100010c,0xc1000115,0xc2000ce4,0xc2000ce0,0xc1012c09,0xc30382e4, +0xc30382e1,0x00000000,0xb80039e7,0xd1ff8c51,0x128e7905,0x00000000,0x900038e5,0xc2000ce4, +0xc1000019,0xc10000e0,0xc30382e5,0x00000000,0x900039e1,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824742,0x07000102,0x00100901,0xd1ffe275,0xc1000311,0xc1000408,0xc100020c, +0xc1000115,0xd2ffff8f,}; + +/* cga */ +static unsigned long srp_fw_cga[] __devinitdata = { +0x8ae3fe80,0x03403432,0x14020004,0x00000002,0x00000000,0xa1100000,0x00000000,0x0001a000, +0x00140000,0x9022a964,0x00000000,0xa0020001,0xa8200003,0x80000320,0x28400206,0x01000000, +0x88140000,0xa0000010,0x00000143,0x00000000,0x40000000,0x00000190,0x001ac000,0x42200000, +0x0064c000,0x00400000,0x00000000,0x35400000,0x00002804,0x00001a08,0x000140c0,0x00000000, +0x0421d000,0x00000000,0x00000000,0x805fa000,0x10ebfffa,0x02802d03,0x64022800,0x10000802, +0x00ce6820,0x8c980800,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x01815000, +0x00010000,0x80000010,0x00200606,0x00000038,0x00000000,0x48000000,0x00000103,0x00000000, +0x04a40000,0x00000000,0x00000000,0x19300000,0x00000000,0x0010a700,0x00000000,0x00000000, +0x00006810,0x80100000,0x00000000,0x01930000,0x0541a000,0x00002000,0x00000000,0x00000000, +0xc2fffffa,0x038a3022,0x00000650,0x00000100,0x0c002830,0x00000800,0x00000801,0x00040000, +0x00000a01,0x90209020,0x00000000,0x00000100,0x07400000,0x40002400,0x00102287,0x04304000, +0x00000800,0xa8000400,0x00000143,0x00000000,0x34080000,0x00a80000,0x00000000,0x00000000, +0x41089002,0x010ca000,0x00000000,0x388c22c8,0x00000000,0x00000a04,0x80000600,0x00000000, +0x01204001,0x40000b80,0x00000000,0x00000000,0x26f7f000,0x0a00a2b0,0xf404682c,0x5ea03002, +0x00002810,0x00400000,0x00164001,0xd4000100,0x06301c01,0x9022a964,0x00000000,0x38000009, +0x06602137,0x21590224,0x40000400,0x004000c4,0x20000000,0x10008490,0x00000000,0x00000000, +0x14080740,0x00ec8151,0x000a0172,0x00800000,0xc02c8810,0x00201020,0x00000000,0xa1400000, +0x24006834,0xe0000a01,0x00000a00,0x21090e00,0x80000800,0x00003c01,0x00000000,0x805fa000, +0x2603ffc0,0x01682000,0x6400080c,0x50691046,0x00002810,0x00080000,0x001640b2,0x0000c060, +0x00021c00,0x606c0004,0x00000000,0x36615406,0x066846c3,0x8bd92400,0x42000607,0x00000000, +0x80000000,0x00000410,0x000c4000,0x00000000,0x14024800,0x00a81202,0x000a0000,0x00000000, +0xd02c8002,0x024010c1,0x00000000,0x003e1000,0x02282800,0x000401d1,0x07000000,0x00010d80, +0x00000801,0x00000004,0x00000000,0x00000000,0x26000000,0x0000fa70,0x66b02e58,0x5020d280, +0x00000810,0x00000900,0x00164000,0x0e02c000,0x00000000,0x00200004,0x00000000,0x04039810, +0x074800e4,0x2b910000,0x00200400,0x00000080,0x24000000,0x08908484,0x000a4000,0x00000000, +0x14080e78,0x05048110,0x00000000,0x00800000,0xc8000164,0x00000c00,0x00000000,0xf87f1000, +0x24040004,0x260000d3,0x000002c1,0x00080e00,0x00000000,0x00000c04,0x00000000,0x00000000, +0x00000000,0x00000000,0x43244808,0x50213000,0xf0000000,0x08480003,0x00000000,0x0e040000, +0x00000000,0x00240000,0x00000000,0x307b9200,0x48003617,0x82010000,0x24002286,0x000000b8, +0x24000000,0x40000080,0x00060103,0x00000000,0x14080008,0x05008000,0x00200160,0x00900800, +0x40020164,0x00001000,0x00000000,0x00000000,0x03300000,0x30000110,0x00000e01,0x001b0000, +0x00000084,0x00001804,0x00000000,0x00000000,0xc0000000,0x003e03f9,0x34066818,0x50081000, +0x00000004,0x00080000,0x008c0001,0x0e020000,0x00001b00,0x10800000,0x00000000,0x10800102, +0x48388024,0x320e0330,0x30002000,0x000000d0,0x04020000,0x0b000080,0x000ac000,0x00000000, +0x140a4800,0x09aa0000,0x000ac0f6,0x42000000,0x702c8164,0x00201001,0x00000000,0x00000000, +0x03a06d70,0x60000152,0x00000200,0x0109f700,0x40000001,0x00000003,0x00000000,0x00000000, +0x00000000,0x00000290,0x80044800,0x0a890100,0x00018000,0x00080004,0x000c0109,0x0e042000, +0x00000000,0x04240000,0x00000000,0x00611008,0x04600604,0x0a0003a8,0x28108000,0x0043c0cc, +0x20000000,0x10000080,0x00000000,0x00000000,0x14086818,0x00aa8008,0x00224190,0x00100000, +0x80000164,0x00000400,0x00000000,0x00000000,0x36260020,0x3000015d,0x00000041,0x00010000, +0x00000001,0x00004000,0x00000000,0x00000000,0x00000f40,0x002a0000,0x2418002c,0x50083152, +0x00000000,0x00480000,0x001640b2,0x00040100,0x00000000,0x60a40000,0x00000000,0xb0015c20, +0x48100227,0x0bd10000,0x00042400,0x000000b0,0x24000000,0x08000084,0x000a6000,0x00000000, +0x14024808,0x00008190,0x000c0000,0x00900000,0xc0020000,0x00201020,0x00000000,0x00000000, +0x03a60550,0x40001b90,0x06c000a0,0x20080e00,0xbc01e001,0x00002c00,0x00000000,0x00000000, +0x27000000,0x00000000,0x37300010,0x0aa02800,0x00006800,0x00400000,0x000c2000,0x0d840000, +0x00020000,0x00240004,0x00000000,0x1c020002,0x6e608054,0x1b5d0004,0x18000400,0x000000b8, +0x80000000,0x10008490,0x00060000,0x00000000,0x0002002c,0x05000a04,0x002240e0,0x00100000, +0x00424164,0x000010e1,0x00000000,0x003b1000,0x34060000,0x00000151,0x00001000,0x00000000, +0xb8000001,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00184820,0x5e8840c9, +0x0000000c,0x00080000,0x00164001,0x0d800060,0x00000000,0x10800000,0x00000000,0x20020008, +0x48200903,0x0bdd27a6,0x00000000,0x00000060,0x04020000,0x03000400,0x00000000,0x00000000, +0x00002f40,0x00000151,0x08224120,0x42000000,0xf8000164,0x00200a00,0x00000000,0x00000000, +0x37360000,0x00000154,0x000004e0,0x24200d80,0x38000001,0x00003804,0x00000000,0x00000000, +0x0003e000,0x0a00e000,0xf7344824,0x90488802,0x00006d48,0x00480000,0x001640b2,0x0d86a000, +0x00000000,0x90840004,0x00000000,0x00600110,0x80000600,0x0a040331,0x1b800000,0x00200000, +0x24000000,0x10000080,0x00060000,0x00000000,0x3410483c,0x05cb0a06,0x00180192,0x00000000, +0x78004164,0x00200401,0x00000000,0x003e1000,0x03300030,0x8008011c,0x06c00000,0x20000e00, +0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x0002f800,0xe4160440,0x901061d8, +0x00c02810,0x00000010,0x008c00b2,0x000640c0,0x00000f00,0x20208004,0x00000000,0x10220006, +0x00080824,0x20001620,0x4c908000,0x002800b0,0x24000000,0x00021000,0x000c0000,0x00000000, +0x1720082c,0x00000154,0x00000160,0x00800000,0x81180000,0x00001001,0x00000000,0xe0400f84, +0x00100820,0xc00121d1,0x06c00600,0x00080f80,0x80000800,0x00183c03,0x00000000,0x00000000, +0x00f80000,0x003e0000,0xf4100648,0x904004c8,0x00014810,0x21000004,0x00000460,0x0c0400a0, +0x000c1b00,0x20200004,0x00000000,0x240b1020,0x48300226,0x820003a4,0x10108207,0x00000000, +0x80000000,0x07000090,0x000a2000,0x00000000,0x0408480c,0x05021351,0x000e8160,0x10900000, +0x802c88c0,0x00000841,0x00000000,0x00391f84,0x37382810,0x68080150,0x01c02300,0x20080000, +0x00000821,0x00003c80,0x00000000,0x00000000,0x7e03f000,0x0038000f,0xc4160760,0x00100018, +0x00002800,0x00480000,0x00010460,0x00020100,0x000a1b00,0x00240004,0x00000000,0x241a0608, +0x0020b003,0x220007a6,0x1c802000,0x00400080,0x80020000,0x1c000410,0x00060000,0x00000000, +0x14100010,0x05cb0154,0x08200000,0x42000000,0x302c8000,0x00000a01,0x00000000,0xf87f1e04, +0x14100758,0x40160209,0x05c00200,0x04200000,0x81000800,0x00000003,0x00000000,0x00000000, +0x2703ffc0,0x003f0000,0xe4004f5c,0x00307348,0x0000e80c,0x21000008,0x00840000,0x0003a080, +0x00000000,0x20200004,0x00000000,0xb00a0032,0x6e401603,0x21510006,0x10108000,0x00280080, +0x24040000,0x19021000,0x000c0000,0x00000000,0x152e0e6c,0x01cb0bd6,0x00200060,0x42000000, +0x80000002,0x00000840,0x00000000,0x003d1e84,0x24182838,0x6e170190,0x00004500,0x30090100, +0x80000800,0x00082384,0x00000000,0x00000000,0x80000ffe,0x00000393,0x24160660,0x503100c6, +0x00016d74,0x00480000,0x98840001,0x0006006c,0x00040000,0x10801080,0x00000000,0xa6720106, +0x482c4283,0x920803a0,0x14802206,0x003000c0,0x80000100,0x13800410,0x00060000,0x00000000, +0x17af2808,0x05010390,0x000c00c0,0x00801000,0xf0024002,0x00401000,0x00000000,0xfc400e44, +0x27b02f64,0xc0171206,0x00000500,0x00080080,0x00000c84,0x00000004,0x00000000,0x00000000, +0x00fbffc0,0x0000ffe0,0x962c080c,0x10703242,0x00014b78,0x00480008,0x00002001,0x0d84a0e0, +0x00000000,0x108100f0,0x00000000,0x18015320,0x482c1324,0x92080000,0x28108206,0x002b0480, +0x24000000,0x49b21000,0x000a0103,0x00000000,0x2400480c,0x05020002,0x000ec116,0x00101000, +0x40000164,0x00400901,0x00000000,0xfc400000,0x27bc0008,0x6e000a00,0x00000700,0x00090000, +0x00000884,0x00102000,0x00000000,0x00000000,0x0003ffc0,0x003eff80,0xf4004f48,0x50303886, +0x00012a64,0x00480000,0x00012009,0x00060000,0x00000100,0x10800004,0x00000000,0x046a0406, +0x6e6c04e4,0x0a060000,0x14802000,0x00100060,0x04000000,0x46b00400,0x00060103,0x00000000, +0x24104828,0x09001b93,0x08290112,0x00801000,0xf1080000,0x00400c00,0x00000000,0xe07e1000, +0x03b84c58,0xc0010a01,0x00000700,0x04200000,0x0201e084,0x00003803,0x00000000,0x00000000, +0x00fbffc0,0x0039fbd0,0x241e6838,0x9030d889,0x00014952,0x00480008,0x00012009,0x0004a100, +0x00000000,0x10808004,0x00000000,0x10015422,0x074c0224,0x9201240e,0x38108206,0x00400060, +0x24040000,0x4cb21000,0x000a0103,0x00000000,0x24106800,0x05888192,0x000c0080,0x42001000, +0x40004002,0x00400801,0x00000000,0xfc400000,0x03b80008,0x60010a04,0x00000700,0x10090000, +0x38000884,0x00100984,0x00000000,0x00000000,0x0003ffc0,0x00000000,0x44062e4c,0x50600006, +0x0000e974,0x00480008,0x18840420,0x0d860024,0x00000000,0x00040004,0x00000000,0x100a0636, +0x07703474,0x820c1404,0x10108206,0x00000060,0x04000000,0x46821000,0x000a0103,0x00000000, +0x24126838,0x01040000,0x000c0094,0x00801000,0xc0424164,0x000010e0,0x00000000,0xf47e1000, +0x03b80548,0x20170a01,0x00400701,0x00090080,0x00000884,0x00100000,0x00000000,0x00000000, +0x3e03ffc0,0x00000000,0xf4066800,0x50311200,0x00012804,0x00480000,0x008400b2,0x000400c0, +0x00040000,0x000500f0,0x00000000,0x0e720022,0x000c8214,0x8a0c03a0,0x19002206,0x000000c0, +0x80040000,0x46800490,0x00040103,0x00000000,0x14044f4c,0x000001dc,0x08260000,0x42001000, +0xf0000000,0x00001001,0x00000000,0xf8400000,0x03b82e69,0xc0070a05,0x06c00600,0x14200080, +0x00000084,0x00003800,0x00000000,0x00000000,0x3efbffc0,0x00000000,0x0416082c,0x5c88c063, +0x00000000,0x21000000,0x98164000,0x0001a0d0,0x00000100,0x00040004,0x00000000,0xa00a0606, +0x68009067,0x92080000,0x28000606,0x00300080,0x24040000,0x49800080,0x0008a103,0x00000000, +0x24126838,0x0000019e,0x00000060,0x42001000,0x01080000,0x00000400,0x00000000,0x00000000, +0x27bc0648,0x20150201,0x00004601,0x00090d80,0x80000084,0x00004802,0x00000000,0x00000000, +0x0003fffe,0x00000000,0xc006481c,0xd00800c6,0x00002810,0x21000000,0x00000001,0x00010020, +0x00000100,0x002500f0,0x00000000,0xa7615122,0x04402107,0x81920006,0x12800606,0x00000000, +0x00000000,0x4c800080,0x00000103,0x00000000,0x04b64800,0x05021a00,0x002e0120,0x10900800, +0xf1080012,0x00000400,0x00000000,0xf8400000,0x041c4820,0xc0112000,0x000044c0,0x00010000, +0x00000c84,0x00002400,0x00000000,0x00000000,0x8003ffc0,0x0000000f,0x00066c70,0x5cc00010, +0x00012801,0x00480000,0x00164001,0x00040080,0x00000000,0x00040004,0x00000000,0x000b9100, +0x00300024,0x81d00320,0x00000606,0x00104454,0x24000000,0x49800084,0x00040103,0x00000000, +0x24004808,0x09008192,0x00000040,0x00100000,0x00024000,0x000006e0,0x00000000,0x003e1000, +0x00002818,0xb0172000,0x000010c0,0x11090d80,0x08000000,0x00002803,0x00000000,0x00000000, +0x3e03ffc0,0x0000fc05,0x00066e78,0x9058c040,0x00018550,0x08480000,0x18000001,0x00010000, +0x00000100,0x00040024,0x00000000,0x16220106,0x07400034,0x8b960010,0x10002206,0x00000000, +0x00020000,0x4c808480,0x00000103,0x00000000,0x34100448,0x00000204,0x002c0000,0x42000012, +0xf1080212,0x00001000,0x00000000,0xfc7e1000,0x03200008,0x80130a02,0x00000600,0x28010000, +0x0241e001,0x00002000,0x00000000,0x00000000,0xa7fbffc0,0x000003ff,0x0006074c,0xdcc090c4, +0x00010008,0x21000000,0x00002801,0x00040100,0x00000100,0x000120f0,0x00000000,0x06600032, +0x07708634,0x80030320,0x28000606,0x00000040,0x24000000,0x49800084,0x00000103,0x00000000, +0x24080800,0x05000192,0x002080b6,0x00100000,0x01080000,0x000006e0,0x00000000,0x00000000, +0x24040558,0xb0011200,0xc6002300,0x00010000,0x00000000,0x00002800,0x00000000,0x00000000, +0x0a03ffc0,0x000000f0,0x24006838,0xdcf00810,0x00004800,0x00480000,0x000c00b2,0x000600a0, +0x05100100,0x00000004,0x00000000,0x061a0202,0x07700024,0x93d202a8,0x4a802206,0x000000b0, +0x04000000,0x498004a0,0x000a0103,0x00000000,0x1410480c,0x05020002,0x00000100,0x00100800, +0x91080000,0x000006e1,0x00000000,0x00000000,0x24100018,0x80130a01,0x06c00620,0x00010000, +0x00000084,0x00001800,0x00000000,0x00000000,0x3a03ffc0,0x00040100,0x02360e40,0x0e981981, +0x00000268,0x00480000,0x000000b2,0x0005c060,0x00000000,0x00040004,0x00000000,0x00020020, +0x05700200,0x819207a4,0x29000606,0x000800c0,0x20000000,0x48908480,0x000a0103,0x00000000, +0x0001cf48,0x09010b90,0x00000180,0x00100000,0x88004000,0x00000a00,0x00000000,0xe47f1000, +0x03300009,0x80150002,0x07000600,0x31090000,0x00000021,0x00003800,0x00000000,0x00000000, +0x0b03ffc0,0x0eff0000,0x24066c4c,0x0cd00004,0x00000020,0x00080000,0x980000b2,0xb400010c, +0x00000000,0x00040004,0x00000000,0x22135038,0x4f602036,0x9a031408,0x18000606,0x00030040, +0x24000000,0x49800084,0x000a0103,0x00000000,0x24a0876c,0x058b0004,0x00080000,0x00800000, +0xf0005002,0x000006e1,0x00000000,0xec7e1fc4,0x03240448,0x86190005,0x07001000,0x20080000, +0x00000800,0x00001800,0x00000000,0x00000000,0xcd03ff80,0x003ee00f,0x34000778,0x00193140, +0x00004800,0x00080000,0x00164000,0xb4040000,0x00000000,0x000500f0,0x00000000,0x1e235904, +0x07700104,0x819e0000,0x28002606,0x000300b0,0x24020000,0x49800484,0x000a0103,0x00000000, +0x000c4c50,0x00ee0152,0x00000180,0x42000800,0x80005002,0x00000a01,0x00000000,0xe8400000, +0x00044d48,0x20130a00,0x00000001,0x00080e00,0xcd01e084,0x00004001,0x00000000,0x00000000, +0x4c000f80,0x0000011e,0x07bc680c,0xdc900010,0x00000000,0x00000000,0x000000b2,0x0e050060, +0x00000000,0x00040000,0x00000000,0x06600d08,0x2f4d3034,0x9b922406,0x10000606,0x000000d4, +0x20000000,0x4c900080,0x000c0103,0x00000000,0x00004c60,0x05020000,0x000a4180,0x00100000, +0xc0004164,0x00040600,0x00000000,0xe4400000,0x03204808,0x90010004,0x07000000,0x20010000, +0x0501e021,0x00001800,0x00000000,0x00000000,0x3903ef80,0x0003f400,0x02204f4c,0x90700082, +0x00000008,0x00000000,0x000100b2,0x000500e1,0x00000000,0x20200004,0x00000000,0x01815020, +0x4f6c0234,0x920e3404,0x49002606,0x000000c0,0x24000000,0xcc900084,0x00000103,0x00000000, +0x00004c72,0x00ca1b9c,0xe02c0180,0x00800010,0xf8004000,0x000c0c00,0x00000000,0xfc7e1000, +0x03344c58,0xe6000110,0x07001000,0x24080000,0x00000001,0x00001c83,0x00000000,0x00000000, +0xff03ef80,0x0fc081cf,0xf406002c,0x0c913040,0x00802834,0x00080000,0x001640b2,0x000520c0, +0x00000000,0x902200f0,0x00000000,0xa6639100,0x07630903,0x000a2406,0x48042400,0x000000a0, +0x24000000,0xc9000084,0x00000103,0x00000000,0x00004c60,0x05000192,0x00000000,0x00100000, +0xf8020002,0x240406c0,0x00000000,0xf4400000,0x03a40658,0xb2010000,0x07001080,0x20080e00, +0x40000800,0x00001803,0x00000000,0x00000000,0x1d03e000,0x000087f0,0x47b84f4c,0x50304880, +0x00004800,0x08480000,0x00000000,0x00066000,0x00000000,0x10200004,0x00000000,0x063b5002, +0x06700274,0x8b940321,0x4c002207,0x002000d0,0x24000000,0xc9108484,0x000c0103,0x00000000, +0x15200f70,0x05ee819e,0x002c0130,0x00800800,0xb8004010,0x480c0e01,0x00000000,0xe0400000, +0x00060000,0xe0000000,0x00000400,0x00010000,0x00000084,0x00001c00,0x00000000,0x00000000, +0xde03ef80,0x003e8ec7,0x04060e6c,0x5008f050,0x00c04860,0x00080000,0x00164009,0xb005c000, +0x00001c01,0x00040000,0x00000000,0x06000436,0x00323874,0x00022405,0x49000400,0x001800d4, +0x24000000,0xc0000084,0x00080103,0x00000000,0x14122800,0x05069a08,0x000000a0,0x00900000, +0x882c8810,0x00000001,0x00000000,0x00000fc4,0x03a00444,0x8a182190,0x000010e0,0x20080e00, +0x00000821,0x00000001,0x00000000,0x00000000,0x12000f80,0x0000fd30,0x3626680c,0x500303c9, +0x00c06820,0x00480000,0x000000b2,0x00030000,0x00000000,0x00048004,0x00000000,0x06035808, +0x04403000,0x9a0003a0,0x40002607,0x000000cc,0x20000000,0x09600000,0x000c8000,0x00000000, +0x2400482c,0x010403d7,0x00270180,0x00800000,0xc0000002,0x000c0641,0x00000000,0xfc400f84, +0x00002800,0xa818c002,0x07000000,0x01090000,0x38000801,0x00001803,0x00000000,0x00000000, +0xce000000,0x00003d6f,0x37260f7e,0x90013000,0x0001c804,0x00000000,0x002120b2,0x0e000000, +0x00001c00,0x04240000,0x00000000,0x00320100,0x68103040,0x81940330,0x40002207,0x000000c0, +0x24000000,0xc9c00484,0x000ca103,0x00000000,0x24100f48,0x0d0101dc,0xe00800a0,0x00100007, +0xa82c8164,0x00080641,0x00000000,0x00000000,0x17ae4c60,0xa8000190,0x07000000,0x24080000, +0x00000001,0x00000000,0x00000000,0x00000000,0x17000000,0x00380140,0x34182f4c,0x904000c8, +0x0001c808,0x00080000,0x001640b2,0x000000c1,0x00000000,0x00200000,0x00000000,0x00015038, +0x48003234,0x0b920230,0x18002000,0x000000c0,0x20000000,0xc0000480,0x00080103,0x00000000, +0x0010680c,0x00c80000,0x00000120,0x00000000,0xf0000000,0x00001000,0x00000000,0xfc400000, +0x00082818,0x8e001202,0x07000400,0x00010e00,0x00000001,0x00003800,0x00000000,0x00000000, +0x9803e000,0x003e0396,0x3418081c,0x90400116,0x0001c838,0x00080000,0x000000b2,0x00020000, +0x00001c00,0x000620f0,0x00000000,0x18035900,0x00000904,0x00060006,0x4b802400,0x0000004c, +0x24000000,0x00000084,0x00080000,0x00000000,0x00000830,0x09050a02,0x04200180,0x00000000, +0x002c8002,0x00000c01,0x00000000,0xe0400000,0x03a64d50,0xc4101212,0x07000060,0x24200000, +0x00000000,0x00000000,0x00000000,0x00000000,0x21000000,0x003891b0,0x3416680c,0x10300081, +0x0001a820,0x08480000,0x001640b2,0xd40660e0,0x00000001,0x24240000,0x00000000,0x00615d00, +0x680c3134,0x20000018,0x21842400,0x000000cc,0x04000000,0x00000080,0x000a0000,0x00000000, +0x24006800,0x00ed9a0c,0x00000130,0x00100000,0xc0001002,0x00001080,0x00000000,0x00000000, +0x02204808,0x02160b92,0x07000421,0x00080e00,0x00000001,0x00001804,0x00000000,0x00000000, +0x15000f80,0x003f0190,0x47a60f5c,0xd0003302,0x00014810,0x00480000,0x000000b2,0x0e0280e0, +0x00000000,0x00040004,0x00000000,0x1c015d36,0x2e6b2024,0x2b900320,0x20002000,0x000000d0, +0x24000000,0x00008484,0x0006a000,0x00000000,0x3404680c,0x09010000,0x002c00a0,0x00900000, +0x18004164,0x00001041,0x00000000,0xfc781000,0x03a64820,0x4e000a06,0x07000400,0x20080000, +0x00000021,0x00004c00,0x00000000,0x00000000,0x20000000,0x003f0190,0x00000000,0x90004802, +0x00014820,0x00080000,0x001640b2,0x00000000,0x00000000,0x00240004,0x00000000,0x042b9102, +0x68200014,0x120e3400,0x10002000,0x003800d4,0x24000000,0x09b00404,0x00000000,0x00000000, +0x2400481c,0x00c90194,0x002240a0,0x00800000,0x40020000,0x000c1040,0x00000000,0x00000000, +0x00064820,0x00061315,0x07000200,0x00010e00,0x38000001,0x00003803,0x00000000,0x00000000, +0x00000000,0x00000230,0xc3a6045c,0x901008c2,0x0001a820,0x00080000,0x001640b2,0x0e020060, +0x00001c00,0x00000000,0x00000000,0xa07a0120,0x000c0007,0x22000404,0x21000000,0x00400000, +0x24000000,0xc6000404,0x000a2103,0x00000000,0x00042f78,0x00010003,0x00000120,0x00000000, +0xc02c8164,0x000010c1,0x00000000,0x00000000,0x03a00444,0x000c0a00,0x07000461,0x20080e00, +0x38000821,0x00001804,0x00000000,0x00000000,0x2103e000,0x00009ba0,0x3626074c,0x0cc00000, +0x00012e44,0x08480000,0x000000b2,0x0e01c000,0x00001c00,0x04240004,0x00000000,0x06420e04, +0x07403624,0x21d42409,0x40000400,0x00380084,0x20000000,0x10000400,0x00000000,0x00000000, +0x2400680c,0x0dcf01d2,0x00230000,0x00100000,0xf02c8164,0x000010c1,0x00000000,0x003f1f84, +0x00020648,0x30001356,0x070002c1,0x00080000,0x00000800,0x00001800,0x00000000,0x00000000, +0x1f03e000,0x0e40979e,0x2418074c,0x00111000,0x00c06801,0x00480000,0x00164000,0x00060000, +0x00001c00,0x40040000,0x00000000,0x00015238,0x077c0004,0x01980327,0x43802400,0x000000a0, +0x24000000,0x07008484,0x000ca000,0x00000000,0x0014080c,0x00cd8000,0x000000a0,0x10900000, +0xd02c8000,0x6c0010c0,0x00000000,0xe0400000,0x02204820,0x08160209,0x000004e1,0x00010e00, +0xb8000801,0x00000001,0x00000000,0x00000000,0x1a000000,0x00000150,0x03a0000c,0x9000cb06, +0x00c0e838,0x00400000,0x000000b2,0x00020000,0x00000000,0x00200000,0x00000000,0xb0039100, +0x07700003,0x920207a0,0x31002607,0x000000c4,0x24000000,0x10000400,0x000a0000,0x00000000, +0x00006800,0x008c1202,0x002400a0,0x00148000,0xc0000010,0x00000001,0x00000000,0x00000000, +0x02a02800,0x2e18120c,0x07000e01,0x01090000,0x38000081,0x00003c03,0x00000000,0x00000000, +0x3803e000,0x003ef390,0x03be044c,0x90110003,0x00004800,0x20400000,0x000020b2,0x0e01c0e0, +0x01b00000,0x2426a0f0,0x00000000,0x004a0008,0x0d443000,0x819836b9,0x0b802207,0x00280000, +0x20000000,0x10000090,0x00000000,0x00000000,0x00066830,0x0000019b,0x00080000,0x00100000, +0x00020164,0x00000c00,0x00000000,0xf8400000,0x03a60544,0xe0101a08,0x070908a0,0x21090000, +0x00000021,0x00003804,0x00000000,0x00000000,0xa3000000,0x003ff808,0x34060740,0x905901c0, +0x00c06838,0x00400000,0x00840000,0x0e02c000,0x00001c00,0x20240004,0x00000000,0x06000128, +0x00300524,0x20000006,0x28000400,0x00280060,0x00000000,0x00000080,0x000c0000,0x00000000, +0x25a0680c,0x00ea0000,0x000ac136,0x10900000,0x802c8164,0x00000c00,0x00000000,0x00000fc4, +0x00064820,0x20100190,0x00000d01,0x00080080,0x00000800,0x00000000,0x00000000,0x00000000, +0x40000000,0x003fe629,0x373c680c,0x90588050,0x00002830,0x00400a20,0x002120b2,0x0005c080, +0x00000000,0x20240000,0x00000000,0xa00a0300,0x0f5c1003,0x800003a0,0x13902207,0x00400060, +0x04000000,0x10000080,0x0006c080,0x00000000,0x3416080c,0x0d058392,0x002c0120,0x10900000, +0xd0000000,0x00000241,0x00000000,0x00000f84,0x03a02e49,0x20000196,0x07000481,0x20010000, +0x38000800,0x00003803,0x0000002d,0x00000000,0x00000000,0x00000240,0x74060544,0xd0401346, +0x00004b40,0x00400000,0x800020b2,0x0e03c0e0,0x00000000,0x04240004,0x00000000,0x06000d00, +0x003c0600,0x01920018,0x38000400,0x000000d0,0x24000000,0x13008480,0x000c0080,0x00000000, +0x34060004,0x09001358,0x00200000,0x00800000,0x70004164,0x00000e61,0x00000000,0x00000fc4, +0x03b82e64,0x0018019e,0x070010c1,0x00080000,0x00000801,0x00004800,0x00000024,0x00000000, +0x2403e000,0x09ff0390,0xf416074c,0x0c803902,0x00004809,0x00400fc0,0x00164000,0x00004060, +0x00000000,0x102220f0,0x00000000,0xa001d002,0x68000303,0x3b5c0000,0x48102000,0x00400000, +0x20000000,0x10000400,0x000c8000,0x00000000,0x34066d54,0x01c9000c,0xc0224140,0x10900006, +0x80004000,0x7e000c61,0x00000000,0xe0400000,0x03a62804,0x30100002,0x00000621,0x24080e00, +0xc0000001,0x00001804,0x00000000,0x00000000,0x22000000,0x00250250,0x34196c4c,0x00007006, +0x00006e78,0x08480000,0x00164408,0x000340ec,0x02401c00,0x00200004,0x00000000,0x04615008, +0x680c0040,0x33de36a8,0x48002000,0x000000c0,0x20000000,0x08000410,0x00060000,0x00000000, +0x353c281c,0x00ee0002,0xc0224120,0x00800006,0xc02c8212,0x00001000,0x00000000,0xfc400e84, +0x03260441,0xc0001350,0xb4001000,0x24080e00,0x00000800,0x00000003,0x00000000,0x00000000, +0x3f03e000,0x000003d0,0x03a6480c,0x50400309,0x0001280c,0x20400000,0x80164001,0x0e05c00a, +0x00000000,0x000600f0,0x00000000,0x38615130,0x074c0937,0x120203a6,0x1b842400,0x00402000, +0x20000000,0x10000080,0x00000000,0x00000000,0x00100830,0x00070000,0x40140120,0x0086c002, +0xc0000164,0x00000c01,0x00000000,0xf4400000,0x02a80448,0x20000098,0x000902c1,0x04080e00, +0x38000081,0x00003004,0x00000000,0x00000000,0x3903ef80,0x0aa7ee60,0xc41e6808,0x00004012, +0x00004b48,0x08480000,0x001640b2,0x0e0200c0,0x03f00000,0x902280f0,0x00000000,0x1c0a0106, +0x2f4c00f4,0x0192032e,0x42000400,0x004000d4,0x20000000,0x00000090,0x00000000,0x00000000, +0x25b80030,0x00c80154,0x00000000,0x00800000,0xf0004164,0x00201081,0x00000000,0xfc400000, +0x04040e48,0x0e001a0a,0x07000a01,0x00080e00,0x1441e000,0x00003c84,0x00000000,0x00000000, +0x80fc0000,0x097f9e3e,0x83a04810,0x900041c0,0x00004818,0x00080000,0x00000000,0x0e032000, +0x00000000,0x60a40004,0x00000000,0xa6135600,0x074c04c3,0x01920000,0x43802400,0x000000d4, +0x24000000,0x09008484,0x000c8000,0x00000000,0x341c4804,0x00c913d0,0x00160060,0x00100000, +0xe0020164,0x01e010e1,0x00000000,0xa8b91fc4,0x36200460,0x2000009b,0x00000201,0x00080000, +0x00000801,0x00003800,0x00000000,0x00000000,0x0003f000,0x0000e3f0,0x34066c4c,0x9ef00003, +0x0001c820,0x00080000,0x00164001,0x0005c000,0x00001c00,0x04240000,0x00000000,0x06135900, +0x48303040,0x01dc0000,0x23800400,0x1c400040,0x20000002,0x10000400,0x00000000,0x00000000, +0x24000000,0x05e90198,0x002e00a0,0x00800000,0xc02c8000,0x000010e1,0x00000000,0x00000000, +0x03260800,0x201013da,0x000004c1,0x20090e00,0x80800821,0x00001803,0x00000000,0x00000000, +0xcdf7ef80,0x00004cc2,0x00004800,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000c, +0x00000000,0x00009020,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000008c0,0x00000000,0x00132000,0x00000000,0x00000000,0x00000000,0x00000000, +0x05218800,0x00000000,0x00000000,0xbf400000,0x00000000,0x00000d30,0x00000008,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x000180c4,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000, +0x01b00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000006,0x00000040,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x20000000,0x00000206,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000008c0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x01900000,0x00000000,0x00000000,0x00000000,0x00008480,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x40000000,0x00000005,0x00000000,0x00000000,0x00000020,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00080000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000c000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00060000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x80000000,0x00000003,0x24000000,0x90000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000034, +0x00000000,0x00000000,0x00000000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x04000f40,0x00000000,0x00040000,0x00040000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002000,0x00000000, +0x34000000,0x00000000,0x90000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x28010000,0x00000005,0x00000000,0x00000000,0x00000000, +0x80fbef80,0x05002c02,0x00006800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80209020,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x02000000, +0x00000100,0x08000000,0x00060000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00080400,0x00000000,0x508b2288,0x00000000,0x00000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x00fc0000,0x00140000,0x0000000c,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x29740000,0x00000002,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xc0000400,0x00000103,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3f400000, +0x0ff7ef80,0x00004cf3,0x00040000,0x00100000,0x00000000,0x80000000,0x00000000,0x00000000, +0x00000000,0x00009020,0x00000000,0x01000801,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000300,0xc0000000,0x00000103,0x00000000,0x00080000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00132000,0x00000000,0x00000000,0x00000000,0x00000000, +0x05418800,0x00000000,0x00000000,0xbf400000,0x40000000,0x00004c04,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000002, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x08a00000,0x00000000,0x00000000, +0x00100000,0x00000000,0x00000000,0x00000000,0x00000000,0x0004a000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x04000000,0x00000000,0x00004800,0x00000000,0x00000800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x20000000,0x00000206,0x00000000, +0x00000000,0xc0000000,0x00000103,0x00000000,0x24004800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0003d000,0x00000040,0x00000008,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x01300002,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000001,0x00000000,0x00000000,0x00800000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00060000,0x00120000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002804,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000002,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80000000,0x00000207,0x00000034,0x00000000,0x00000000,0x00000000,0x00000000, +0x24000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34060000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00004180,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000034, +0x00000300,0x00000000,0x00000000,0x00000000,0x24100000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x34060000,0x00000000,0x00000000,0x00000000, +0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00152c00,0x00000000,0x00000000, +0x00000030,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000054,0x00000000,0x00000000,0x00000000,0x00000000, +0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00180000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00006800,0x00000000,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00002000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x03a00000,0x80000000,0x000000c0,0x20000000, +0x00000021,0x00000000,0x00000000,0x00000000,0x4efbef80,0x05123803,0x34000030,0x00000000, +0x00000030,0x08480000,0x00000000,0x00000000,0x00000000,0x80209020,0x00000000,0xa0000000, +0x00000007,0x00000000,0x00008000,0x01800000,0x00000c00,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x508e2348, +0x00180000,0x00000000,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x00000000, +0xd5ffefbe,0x00143002,0x00060000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000c, +0x00000000,0x69749020,0x00000002,0x01800000,0x00000000,0x00000000,0x00000000,0x06000000, +0x00000300,0x00000000,0x00000000,0x00000000,0x01200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x48000000,0x00000000,0x000c22c8,0x00000000,0x60000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x3f400000,0xcdfbffc0,0x02800c03,0x34000000,0xd0000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x902280c4,0x00000000,0x0001d000, +0x00000034,0x00000000,0x00042400,0x00000000,0x00000000,0x08900000,0x00000000,0x00000000, +0x01a00000,0x00000000,0x00000000,0x00000000,0x00000000,0x01840000,0x00000000,0x28800000, +0x00000000,0x00000000,0x00000000,0x00000000,0x05418800,0x00000000,0x00000000,0x00000000, +0x84d3ff76,0x04ce4c02,0x0004e800,0x00000000,0x00000060,0x80000000,0x00001000,0x00000000, +0x00000000,0x90229964,0x00000000,0x00000001,0x00000600,0x20000000,0x2b800286,0x00300000, +0x00001600,0xc0000000,0x00000103,0x00000000,0x34180000,0x00000000,0x000a0000,0x00000000, +0x00000000,0x00200000,0x00000000,0x4d400e44,0x00000000,0x80000a00,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x805fa000,0x0cffff00,0x02f92950,0x77200000,0x00000000, +0x000a6800,0x00000000,0x00212000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000000,0x00000000,0x00002000,0x00000000,0x00000400,0x08000000,0x00000000,0x00000000, +0x34060000,0x00000000,0x00000000,0x00000000,0x00000000,0x0020a000,0x00000000,0x2c8a2000, +0x00002800,0x001000d6,0x00000000,0x00200000,0x04418800,0x00000000,0x00000000,0x00000000, +0x4edbf000,0x04c04c05,0x00000000,0xd0000000,0x00006830,0x08480000,0x00000000,0x00000000, +0x00000000,0x90229964,0x00000000,0xa0120003,0x00000003,0x00000000,0x00000000,0x00300000, +0x00001600,0x08a00000,0x00000000,0x00000000,0x04060000,0x00000000,0x00000000,0x00000000, +0x00000000,0x0024a000,0x00000000,0x4d400000,0x00020030,0x00000050,0x00000000,0x00000000, +0x00000004,0x00000000,0x00000000,0x805fa000,0x0bfc0f38,0x02842800,0x74000000,0x00184000, +0x00000800,0x80000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x01800800, +0x00000000,0x00000000,0x00000000,0x00000034,0x00000000,0xc0000000,0x00000103,0x00000000, +0x34302800,0x00000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800000, +0x24000800,0x00000004,0x000000c0,0x00000000,0x04418800,0x00000000,0x00000000,0x00000000, +0x00e3ff00,0x050050a0,0x43a10000,0x00000000,0x000a4810,0x00000000,0x01003000,0x00000000, +0x00000000,0x9022a960,0x00000000,0x00000001,0x00000000,0x80000000,0x00000287,0x02302800, +0x00000000,0x00000000,0x00000000,0x00000000,0x34040000,0x00000000,0x00000000,0x00000000, +0x00000000,0x01000000,0x00000000,0x51400000,0x00006c4b,0x00101204,0x00000000,0x08010000, +0x0221e000,0x00000000,0x00000000,0x805fa000,0x17ebffbc,0x059758e3,0x1403a803,0x0ae80000, +0x00000030,0x00000000,0x02000000,0x0e000002,0x00001c00,0x9022a960,0x00000000,0x00000001, +0x00000064,0x80000004,0x00000206,0x08000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00066c40,0x0d000000,0x08180140,0x00000000,0x006c8164,0x00800000,0x00000000,0x59400308, +0x00000758,0x00100008,0x00000000,0x19200000,0x01204400,0x00000000,0x00000000,0x805fa000, +0x80fbdfba,0x02c00002,0x00030808,0x00080000,0x00020000,0x00000008,0x20002001,0x000000d1, +0x00060000,0x90200184,0x00000000,0x04000000,0x04400100,0x80000000,0x00102206,0x08342400, +0x20000000,0x08000010,0x00000000,0x00000000,0x14080030,0x00e9c000,0x04000000,0x00000000, +0x00000000,0x02000000,0x00000000,0x2c800288,0x00000030,0x001700d4,0x00000000,0x14080000, +0x01204400,0x00004000,0x00000000,0x00000000,0x8d03ffc0,0x00002c20,0x24004800,0x1a804002, +0x01020000,0x00000000,0x00000000,0x00000000,0x00000000,0x000100f0,0x00000000,0x000a0000, +0x05400200,0x80000000,0x10000206,0x00422400,0x00000000,0x40800000,0x00000103,0x00000000, +0x34000460,0x00000000,0x001b0166,0x00000000,0xc0004000,0x00000000,0x00000000,0x00192000, +0x00004800,0x6013920c,0x00000000,0x00000000,0x0201e000,0x00000000,0x00000000,0x00000000, +0x0cffffc0,0x03590970,0x24146820,0x10080000,0x00002800,0x00000008,0x023641b2,0x00000000, +0x00040000,0x00000000,0x00000000,0x00200408,0x00040880,0x800003a0,0x00108207,0x00000000, +0x80000000,0x40000010,0x00000103,0x00000000,0x00000000,0x00000000,0x08000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000740,0x00000000,0x07000000,0x04200e00, +0x0201e000,0x00000000,0x00000000,0x00000000,0x40f3ffc0,0x06406573,0x36282c44,0x0c800000, +0x00000800,0x00000000,0x00000000,0x00000000,0x00000000,0x90209044,0x00000000,0x00200002, +0x00000514,0x80000000,0x00000206,0x08000000,0x00002000,0x48000000,0x00000103,0x00000000, +0x00006800,0x00000000,0x00001200,0x00000000,0x00000000,0x00800000,0x00000000,0x00000348, +0x0000680c,0x00061a00,0x00000000,0x00000000,0x39204000,0x00004481,0x00000000,0x00000000, +0xcfe3ffb8,0x064064b2,0x14000742,0xda800002,0x00000008,0x00000000,0x28165000,0x0e0000e1, +0x00000000,0x90229964,0x00000000,0x00000009,0x00000000,0x80000000,0x00000206,0x08302400, +0x00001000,0x40000000,0x00000103,0x00000000,0x00060550,0x00000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x654002c8,0x00000008,0x000000dc,0x00000000,0x10000e00, +0x01204400,0x00004380,0x00000000,0x805fa000,0x57fbfffb,0x028038f3,0x66200000,0x00600000, +0x00022810,0x00000000,0x28000000,0x000000c1,0x00001c00,0x902110f0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000206,0xfc302400,0x0001f4ff,0x40000000,0x00000103,0x00000000, +0x00106e40,0x00880000,0x00000000,0x00000000,0x002c8000,0x02000000,0x00000000,0x28800000, +0x00000000,0x0010000c,0x00000000,0x00000000,0x0221e400,0x00000000,0x00000000,0x00000000, +0x17ffffbb,0x00003170,0x40040000,0x00080006,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00020000,0x07400100,0x80000000,0x00000206,0x00000000, +0x0001fc00,0x40000000,0x00000103,0x00000000,0x34000038,0x50000000,0x000000d6,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00001200,0x00000000,0x00000000, +0x0221e400,0x00000000,0x00000000,0x00000000,0x0ffffffc,0x039734f3,0x00006803,0x0a810000, +0x00006830,0x00000000,0x000011b2,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00300800,0x80000000,0x00000206,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x04060640,0x50000000,0x001b0000,0x00000000,0x00000000,0x02000000,0x00000000,0x388d2308, +0x0000680c,0x00000008,0x07000000,0x00000000,0x39204400,0x00000001,0x00000000,0x00000000, +0xcfe3ffb8,0x064064b2,0x14000742,0xda800002,0x00000008,0x00000000,0x28165000,0x0e0000e1, +0x00000000,0x90229964,0x00000000,0x00000009,0x00000000,0x80000000,0x00000206,0x08302400, +0x00002200,0x40000000,0x00000103,0x00000000,0x00060550,0x00000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x654002c8,0x00000008,0x000000dc,0x00000000,0x10000e00, +0x01204400,0x00004380,0x00000000,0x805fa000,0x57fbfffb,0x028038f3,0x66200000,0x00600000, +0x00022810,0x00000000,0x28000000,0x000000c1,0x00001c00,0x902110f0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000206,0xfc302400,0x0001f4ff,0x40000000,0x00000103,0x00000000, +0x00106e40,0x00880000,0x00000000,0x00000000,0x002c8000,0x02000000,0x00000000,0x28800000, +0x00000000,0x0010000c,0x00000000,0x00000000,0x0221e400,0x00000000,0x00000000,0x00000000, +0x17ffffbb,0x00003170,0x40040000,0x00080006,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00020000,0x07400100,0x80000000,0x00000206,0x00000000, +0x0001fc00,0x40000000,0x00000103,0x00000000,0x34000038,0x50000000,0x000000d6,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00001200,0x00000000,0x00000000, +0x0221e400,0x00000000,0x00000000,0x00000000,0x0ffffffc,0x039734f3,0x00006803,0x0a810000, +0x00006830,0x00000000,0x000011b2,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00300800,0x80000000,0x00000206,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x04060640,0x50000000,0x001b0000,0x00000000,0x00000000,0x02000000,0x00000000,0x388d2308, +0x0000680c,0x00000008,0x07000000,0x00000000,0x39204400,0x00000001,0x00000000,0x00000000, +0x40dfefb8,0x04402ff3,0xb6b00000,0xdc800000,0x00026c6c,0x00000000,0x803640b2,0x0f84a00e, +0x00000000,0x902290d0,0x00000000,0x00000009,0x054020c0,0x81900006,0x30000286,0x0a000000, +0x04001400,0x40000084,0x00000143,0x00000000,0x3406080c,0x00008000,0x00000112,0x00000000, +0x70000164,0x00200600,0x00000000,0x45c00f84,0x00000000,0x60000000,0x07c00200,0x00000f80, +0x0521a000,0x00000000,0x00000000,0xbf400000,0x0d03ef80,0x000048b0,0x00066e60,0x0e980000, +0x0801067c,0x80080008,0x000001b2,0x000000c0,0x00000000,0x000180f0,0x00000000,0xa001d000, +0x00002002,0x81920220,0x20108306,0x08300000,0x20000000,0x40000080,0x00000183,0x00000000, +0x04062804,0x00000000,0x08000000,0x00800000,0xf0000000,0x000010c1,0x00000000,0x00000000, +0x00000800,0x80000000,0x07c00000,0x04200000,0x04c1a000,0x40001800,0x00000000,0x00000000, +0xc0ebef80,0x003c3402,0x00090003,0x00010101,0x10000000,0x80000000,0x00000000,0x000300c0, +0x00001f00,0x000210d0,0x00000002,0x02011000,0x00040000,0x800203a0,0x18000686,0x16384a00, +0x20001400,0x40000400,0x00000143,0x00000000,0x00000008,0x00000000,0x00300178,0x00000000, +0x406c8000,0x00000000,0x00000000,0x00000000,0x00004808,0x80000200,0x00000ac0,0x00010000, +0x0421a000,0x80000000,0x00000000,0x00000000,0x7dfbef80,0x02c02c03,0x36380010,0x10100008, +0x30000740,0x00400000,0x000020b2,0x000000e1,0x00000000,0x902210d0,0x00000000,0xa0011008, +0x2f603002,0x800003b8,0x20000706,0xf4302a00,0x040028ff,0x40000000,0x00000183,0x00000000, +0x34100550,0x00000150,0x00180000,0x00100000,0xc0000000,0x06000601,0x00000000,0x2c800fc4, +0x00002c40,0x24000000,0x07c008e1,0x00010000,0xc221e000,0x00000003,0x00000000,0x00000000, +0x00ffef80,0x00113520,0x24060540,0x0c980100,0x08002800,0x00400000,0x00002000,0x0f800000, +0x00000000,0x697120f0,0x00000002,0x00000008,0x00001840,0x81900220,0x00002286,0x00000000, +0x20000000,0x40000080,0x00000143,0x00000000,0x00024d44,0x00000001,0x0032c0c0,0x00000000, +0x00000164,0x00600000,0x00000000,0x00381e44,0x00006800,0x00000000,0x00000600,0x00010000, +0x8221e000,0xc0000003,0x00000000,0x3f400000,0xfffbffc0,0x02b93402,0x34106800,0x50100000, +0x3800075c,0x28480000,0x00164001,0x0f80c000,0x00000000,0x902290d0,0x00000000,0x20000006, +0x08000002,0x80020000,0x2c000286,0x08000000,0x00001000,0x48000000,0x00060143,0x00000000, +0x03200e64,0x00c80000,0x00660166,0x00000000,0x00000164,0x00800000,0x00000000,0x28800000, +0x24000810,0x00000000,0x00000000,0x00000f80,0x0521a000,0x80004380,0x00000000,0x00000000, +0x0be3fffb,0x00002cd0,0x40000000,0x00084000,0x18000808,0x00000014,0x001641b2,0x00000000, +0x00161f00,0x000660d0,0x00000002,0x00000000,0x00000200,0x80000000,0x00202686,0x12000000, +0x24000c00,0x40000020,0x00000143,0x00000000,0x07b80f40,0x00a80000,0x00310100,0x00800000, +0x002c8000,0x00000600,0x00000000,0xf4400000,0x00040002,0x00001a00,0x07c00000,0x10080f80, +0xc4c1a000,0x00000003,0x00000002,0x38400000,0x83efff80,0x04404403,0x2401cd4c,0x00000002, +0x0000000c,0x00400000,0x00001000,0x00000000,0x00000000,0x90229960,0x00000000,0x26011101, +0x04433002,0x80000000,0x00002306,0x02000000,0x00000600,0x48000000,0x00000183,0x00000000, +0x00060000,0x00000000,0x00181ad6,0x00000000,0x00000000,0x0024a000,0x00000000,0x45400388, +0x0000000b,0x00000000,0x00000000,0x10000000,0x01204000,0x80004280,0x00000001,0x805fa000, +0xc3fbef80,0x03523032,0x00040009,0x00000000,0x30026800,0x00000000,0xaa0021b2,0x000000d0, +0x00001c00,0x90209020,0x00000000,0x00015000,0x00000000,0x80000000,0x00040686,0x02302000, +0x00000400,0xc9000000,0x00000103,0x00000000,0x24000000,0x00000000,0x001ac000,0x00000000, +0x006c8000,0x008c6000,0x00000000,0x348c22c8,0x00006800,0x00100000,0x07000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x8ffbfffc,0x02804924,0x00000000,0x0a800000, +0xc0462e4c,0x00000000,0x00364000,0x00000000,0x00000000,0x902100f0,0x00000000,0x00000000, +0x05403000,0x80000000,0x00000286,0x00000000,0x00000000,0xc8000000,0x00000103,0x00000000, +0x14200000,0x00000000,0x0018c000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800f84, +0x00000003,0x001212d0,0x00000000,0x00000e00,0x0441e000,0x00000000,0x00000000,0x00000000, +0x3efbfffc,0x00c00124,0x02a00000,0x00080002,0x00000348,0x00000000,0x80164000,0x0000000c, +0x00000000,0x000260d0,0x00000000,0x00000100,0x00000000,0x80000000,0x00000207,0x00000000, +0x00000000,0x40000000,0x00000143,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000f84,0x00000800,0x0000000c,0x00000400,0x00000e00, +0x0521a000,0x80000000,0x00000007,0x00000000,0xd0ffffc0,0x00002900,0x00020000,0x0c800000, +0x30000830,0x80080000,0x00000000,0x00000000,0x00000000,0x000280f0,0x00000000,0x00011000, +0x00040000,0x80000000,0x00200686,0x0c000000,0x00000000,0x40000000,0x00000143,0x00000000, +0x00100640,0x00000000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x14000000,0x80000200,0x00000000,0x00000000,0x04c1a000,0x00004381,0x00000003,0x00000000, +0xc3ffffc0,0x04be4003,0x16200800,0x00100000,0x90000000,0x80000000,0x010020b2,0x00000000, +0x00001c00,0x90209020,0x00000000,0x00019000,0x00000004,0x80000000,0x00400706,0x02000000, +0x00000400,0x40000000,0x00000143,0x00000000,0x04000008,0xb0000000,0x00000000,0x00000000, +0x002c8002,0x00800000,0x00000000,0x489023c8,0x00006800,0xf2000000,0x07000260,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x00f7ff40,0x03c03c50,0x00026808,0x0e800000, +0xe0000000,0x00000000,0x02000000,0x00000000,0x00000000,0x9022a960,0x00000000,0x00000001, +0x00000124,0x80080000,0x4ac00286,0x12000000,0x00000000,0xc8000000,0x00000143,0x00000000, +0x00000663,0x00000000,0x00000000,0x00000000,0x00000000,0x00280000,0x00000000,0x3d400000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0421e000,0x40000000,0x00000003,0x805fa000, +0x43fbffc0,0x030c3823,0x00040808,0x08820000,0xe88e0000,0x00000000,0x02000000,0x00000000, +0x00000000,0x9022a0d0,0x00000000,0x04600000,0x00000800,0x80000000,0x00400306,0x00000000, +0x00000000,0xc8000000,0x00000143,0x00000000,0x00000660,0x00000000,0x00000000,0x00000000, +0x00000000,0x12082000,0x00000000,0x30800000,0x00000642,0x00120000,0x00000000,0x00080000, +0x0541a000,0x80000000,0x00000003,0x00000000,0x00fbffc0,0x02ca3003,0x14000000,0x0ac04000, +0x500e0000,0x00000000,0x00000000,0x00000000,0x00000000,0x902290d0,0x00000000,0x00000000, +0x00000024,0x80000000,0x00000287,0x0c000000,0x00000800,0xc8900000,0x00000143,0x00000000, +0x04000660,0x00000000,0x00000000,0x00000000,0x00000000,0x09082000,0x00000000,0x2c800000, +0x00000000,0x00120090,0x00000000,0x00000000,0x0521a000,0xc0000000,0x00000003,0x00000000, +0x0cfbffc0,0x028000c0,0x00000000,0x10000000,0x80000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x902260d0,0x00000000,0x00000000,0x00000900,0x80000000,0x00000287,0x10000000, +0x00001000,0xc0000000,0x00000103,0x00000000,0x34000660,0x00000000,0x00000000,0x00000000, +0x00000000,0x09000000,0x00000000,0x28800000,0x00000000,0x00000298,0x00000000,0x00000000, +0x04c1a000,0x00000000,0x00000000,0x00000000,0x8003ffc0,0x00002802,0x24002808,0x08801000, +0x08000020,0x00000000,0x00000000,0x00000000,0x00000000,0x000290d0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000286,0x08000000,0x00000800,0x40000000,0x00000143,0x00000000, +0x00060660,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000002,0xa0000008,0x00000000,0x00000000,0x0521a000,0x40000000,0x00000001,0x00000000, +0x0afbffc0,0x000000a0,0x40000003,0x00600000,0x18004808,0x00000000,0x80000000,0x00000100, +0x00000000,0x000260d0,0x00000000,0x0013d000,0x00000900,0x92000000,0x00000706,0x0c300000, +0x00002000,0x40000000,0x00000183,0x00000000,0x34000740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00004800,0x00000008,0x00000000,0x00000000, +0x04c1a000,0xc0000000,0x00000001,0x00000000,0x0003efc0,0x00000003,0x34004800,0x00200000, +0x08000008,0x00000000,0x00000000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00000800, +0x00000100,0x80080000,0x00000286,0x18000000,0x00004400,0x40000000,0x00000143,0x00000000, +0x24060660,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004808,0x00000000,0x00000000,0x00000000,0x0421a000,0xc0000000,0x00000000,0x00000000, +0x8003effe,0x00002c02,0x00006800,0x00000000,0x38000000,0x00000000,0x00000000,0x000000c0, +0x00000000,0x000210f0,0x00000000,0x01600c00,0x00003900,0x80000000,0x00000306,0x18300000, +0x00000400,0x40000000,0x00024183,0x00000000,0x00040020,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x003f1000,0x00006828,0x00100000,0x00000000,0x10000000, +0x0521a400,0x40000000,0x00000001,0x00000000,0x0003fffe,0x00003003,0x0400c802,0x00001000, +0x48006e40,0x00000000,0x1a000000,0x000000e1,0x00000000,0x002210d0,0x00000000,0x00000022, +0x00000224,0x80000000,0x00000286,0x1a304420,0x00002800,0x40000000,0x00000143,0x00000000, +0x03a40030,0x00000000,0x01400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004808,0x001001d0,0x00000000,0x00000000,0x0421a400,0xc0000000,0x00000002,0x00000000, +0x8003fffe,0x000b33f2,0x14010000,0x00000000,0x48000008,0x00000000,0x20000000,0x000000e1, +0x00000000,0x000110f0,0x00000000,0x00120000,0x00000800,0x92000000,0x00000286,0x04302400, +0x00000c00,0x40000000,0x00000143,0x00000000,0x00044800,0x00000000,0x01c00000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x03a0000e,0x0000000c,0x00000000,0x30000000, +0x0221e400,0xc0000000,0x00000002,0x00000000,0x8003fffe,0x00003002,0x34038001,0x00000002, +0x50000030,0x00000000,0x98000000,0x000000e0,0x00000000,0x000110f0,0x00000000,0x00000800, +0x00000000,0x80080000,0x00000286,0x08302400,0x00001400,0x40000000,0x00000143,0x00000000, +0x00060740,0x00000000,0x01440030,0x00000000,0x00000000,0x00000600,0x00000000,0x00000000, +0x0006000c,0x800000d0,0x00000000,0x10000000,0x0221e400,0x40000000,0x00000003,0x00000000, +0x0003fffe,0x00003003,0x43226c43,0x00000000,0x70004800,0x00000000,0x18010008,0x000000e1, +0x00000000,0x000110f0,0x00000000,0x00600000,0x00003000,0x81d00000,0x00000686,0x0c382434, +0x00001c00,0x40000080,0x00000143,0x00000000,0x0000002c,0x00000000,0x00064000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000fc4,0x0000000c,0xa000000c,0x00000000,0x10000000, +0x0221e400,0x80000000,0x00000003,0x00000000,0x3f03ffc0,0x00002803,0x0321000c,0x00000002, +0x78000002,0x00000000,0x18010000,0x000000e1,0x00000000,0x000110f0,0x00000000,0x00000000, +0x00000804,0x80030000,0x00000686,0x10382400,0x00003000,0x40000000,0x00000143,0x00000000, +0x34000000,0x00000000,0x000000d6,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x03a04800,0x86000000,0x00000000,0x00000000,0x0221e001,0xc0000000,0x00000003,0x00000000, +0x0003ffc0,0x00003003,0x24090770,0x00000000,0x8000480c,0x00000000,0x00000008,0x00000100, +0x00000000,0x000110f0,0x00000000,0x0001d000,0x00000000,0x80000000,0x00002286,0x12002000, +0x00003400,0x40000000,0x00000143,0x00000000,0x00060000,0x00000000,0x00000020,0x00000000, +0x00000000,0x000006e0,0x00000000,0x003f1000,0x00180000,0x86000000,0x00000000,0x00000000, +0x0221e000,0x80000000,0x00000004,0x00000000,0x0b03fffe,0x00002843,0xc0038743,0x0a800000, +0x80000008,0x00000000,0x00000008,0x000000c1,0x00000000,0x000220f0,0x00000000,0x0001dc00, +0x00002600,0x81d00000,0x00002286,0x04302020,0x00000000,0x40000400,0x00000143,0x00000000, +0x00000640,0x00000000,0x000000c0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80000000,0x00000000,0x00000000,0x04c1e400,0xc0000000,0x00000004,0x00000000, +0x0003fffe,0x003f3003,0x34030003,0x00080000,0x88006808,0x00000000,0x00000001,0x000000c1, +0x00000000,0x000210f0,0x00000000,0x00000c00,0x00003000,0x800c0000,0x00000686,0x10382400, +0x00001000,0x40000000,0x00000143,0x00000000,0x05a00008,0x50000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00000000,0x00000000,0x20000000, +0x0421e400,0x00000000,0x00000005,0x00000000,0x0303ffc0,0x00003003,0x00080000,0x00000002, +0x88000000,0x00000000,0x00001000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00600000, +0x00003000,0x80000000,0x4a800286,0x14382400,0x00000c00,0x40000000,0x00000143,0x00000000, +0x00060000,0x00000000,0x00310000,0x00000000,0x00000000,0x00000600,0x00000000,0x00000000, +0x0000680e,0x80000000,0x00000000,0x00000000,0x0221e000,0x40000000,0x00000005,0x00000000, +0x0003fffe,0x00003003,0x03220000,0x00000008,0xb0002820,0x00000000,0xa8010000,0x000000e0, +0x00000000,0x000210f0,0x00000000,0x0101d000,0x00000034,0x81d00000,0x00002286,0x20300000, +0x00003000,0x40000400,0x00000143,0x00000000,0x00200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000460,0x00000000,0x00000000,0x00006e43,0x00000000,0x00000000,0x00080000, +0x0221e400,0x80000000,0x00000007,0x00000000,0x0003ffc0,0x00003003,0x00000000,0x0c800000, +0xb8002818,0x00000000,0x80000000,0x00000000,0x00000000,0x000110f0,0x00000000,0x01800c00, +0x00000000,0x81dc0000,0x00000286,0x0c384400,0x00002c00,0x40000400,0x00000143,0x00000000, +0x00060000,0x50000000,0x00000000,0x00000000,0x00000000,0x00000460,0x00000000,0x00000000, +0x00000023,0x00000000,0x00000000,0x00000000,0x0421e000,0xc0000000,0x00000007,0x00000000, +0x0003ffc0,0x000030b3,0x64010002,0x0e80c000,0xc0000004,0x00000000,0x80001000,0x000000c0, +0x00000000,0x000260f0,0x00000000,0x00000002,0x00000200,0x81dc0000,0x00000286,0x1c304000, +0x00000400,0x40000400,0x00000143,0x00000000,0x00060740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x80000000,0x00000000,0x00000000, +0x0221e000,0x00000000,0x00000008,0x00000000,0x0003fffe,0x00003003,0x14020000,0x5000c000, +0xc8000000,0x00000000,0x28000000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00000000, +0x00000000,0x800c0000,0x00000686,0x0a302000,0x00001c00,0x40000000,0x00000143,0x00000000, +0x2418080c,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x0421e400,0x40000000,0x00000008,0x00000000, +0x00ffffc0,0x00003000,0x00048000,0x5ee2c000,0xd0000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x4a800286,0x16384400, +0x00003c00,0x40000000,0x00000143,0x00000000,0x00040740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000600,0x00000000,0x00000000,0x00180000,0x80000000,0x00000000,0x00000000, +0x0421e000,0x80000000,0x00000008,0x00000000,0x00ffffc0,0x038034c0,0x00046800,0x5ee20000, +0xd8000000,0x00000000,0x00000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000100,0x81d00000,0x00000686,0x22302000,0x00004800,0x48000080,0x00000143,0x00000000, +0x0000074c,0x00000000,0x00000000,0x00000000,0x00000000,0x12080000,0x00000000,0x388d2000, +0x00000740,0x00000000,0x00000000,0x00080000,0x0221e000,0xc0000000,0x00000008,0x00000000, +0x8bf7ff80,0x03823832,0x0000c804,0x00000000,0x00000270,0x00000000,0x02000000,0x00000000, +0x00000000,0x90229964,0x00000000,0x02000001,0x00000000,0x00000000,0x00000000,0x04000000, +0x00001000,0x08000000,0x00000000,0x00000000,0x01200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00400000,0x00000000,0x39400288,0x24004f41,0x00000090,0x00000000,0x08010000, +0x01204000,0x00000000,0x00000000,0x805fa000,0x8a03ffc0,0x000008c0,0x14000008,0x00000000, +0x00060020,0x00000000,0x00000000,0x00000000,0x00000000,0x0002a0d0,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xc9800000,0x00000103,0x00000000, +0x01b00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002000,0x00000000,0x00000000, +0x0010000b,0x001200d8,0x00000000,0x10000000,0x0541a000,0x00000000,0x00000000,0x00000000, +0x0003ef80,0x00000c20,0x36200000,0x00000000,0x00020000,0x00000000,0x01002000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x80000000,0x00000207,0x00000000, +0x00000000,0xc0000000,0x00000103,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x001023c8,0x00000000,0x0013000c,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0xcdffffc0,0x035030f2,0x24064800,0x00000000, +0x00002840,0x00000000,0x00000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000024,0x80000000,0x00000207,0x04000000,0x00000800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x348c22c8, +0x00004800,0x00000000,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x00000000, +0xa903ff80,0x0c96c84b,0x64040800,0x90080006,0x00000340,0x00400000,0x001640b2,0x0f83c000, +0x00001f00,0x9022a960,0x00000000,0xba000300,0x48000002,0x120802a2,0x18000400,0x480000d0, +0x04000000,0x10000000,0x000c0000,0x00000000,0x01b84838,0x00e99202,0x002e0112,0x00100000, +0x002c8164,0x00200a00,0x00000000,0xc9400b88,0x00040020,0x2a000000,0x07c01041,0x00010f80, +0xc1204001,0x00003983,0x00000000,0x805fa000,0x6f03ffc0,0x02febc05,0x00040004,0x9010c000, +0x00002830,0x00400000,0x001640b2,0x0f868000,0x00001f00,0x20200000,0x00000000,0x080bd800, +0x00088800,0x01920002,0x00002000,0x00000054,0x00000000,0x00000080,0x000c8000,0x00000000, +0x24300008,0x00a88192,0x002e0196,0x00800000,0xc82c8164,0x00000001,0x00000000,0xfc400000, +0x00002e40,0x00000051,0x07c002e0,0x00080f80,0x90000001,0x00004484,0x00000000,0x00000000, +0xdb03ffc0,0x094066fb,0xb7200800,0xd0500000,0x00004820,0x00400000,0x001640b2,0x0f80c000, +0x00001f00,0x00200000,0x00000000,0xa8120000,0x065030c3,0x00020000,0x1c800000,0x00200058, +0x20000000,0x00000000,0x000a0000,0x00000000,0x341c0000,0x00038008,0x00000138,0x00800000, +0x382c8164,0x00001001,0x00000000,0x00000000,0x37200020,0xe0000a06,0x07c010c0,0x00000f80, +0x00000001,0x00003c80,0x00000000,0x00000000,0x4203ffc0,0x0bfcbfbc,0x37366e48,0x9000b052, +0x20004820,0x00400000,0x000000b2,0x0003a000,0x00001f00,0x20200000,0x00000000,0xa2000606, +0x07408002,0x800002b0,0x20000686,0x00000000,0x20000000,0x40000080,0x00000183,0x00000000, +0x15b80000,0x00ac0000,0x002e0000,0x00900000,0x002c8000,0x000010e0,0x00000000,0x00000f84, +0x34184800,0xc0000b14,0x07c00ac0,0x00080000,0x00000801,0x40000000,0x00000000,0x00000000, +0xdf03ffc0,0x08febc0b,0xf41c2800,0xd0710106,0x68004964,0x00400000,0x00164000,0x00000000, +0x00000000,0x20200000,0x00000000,0xa2120302,0x06480042,0x92000002,0x12800706,0x000000d0, +0x00000000,0x40000400,0x000c0143,0x00000000,0x00006800,0x09001200,0x00000000,0x00800000, +0x00000000,0x00000a00,0x00000000,0x00000000,0x041c0008,0x00000a04,0x000000e0,0x00010f80, +0x00000000,0x80003803,0x00000002,0x00000000,0x2f03ffc0,0x087fbc07,0x07380818,0x90000000, +0x80004820,0x00400000,0x00000000,0x0004a0e0,0x00000000,0x24240000,0x00000000,0xa2000200, +0x680c0102,0x80080000,0x0b800286,0x004000b8,0x00000000,0x40000080,0x000c8103,0x00000000, +0x25b84800,0x00030002,0x00000000,0x00000000,0xc8004002,0x00000001,0x00000000,0x00000000, +0x37206810,0x30000b14,0x00000841,0x00080000,0x00000001,0x00000000,0x00000000,0x00000000, +0x0003f03e,0x0800bc00,0x34040800,0x00100010,0x10000000,0x00400000,0x00000000,0x00064000, +0x00000000,0x00200004,0x00000000,0x06e00000,0x00380034,0x80000000,0x13802286,0x00000000, +0x20000000,0x40000000,0x000a0143,0x00000000,0x373c0808,0x00000000,0x001400e0,0x00800000, +0x00000000,0x00000d00,0x00000000,0x00000f84,0x34180830,0x30000a04,0x00000e81,0x00080000, +0x00000c01,0xc0002800,0x00000000,0x00000000,0x0003f000,0x0afebc00,0x37382830,0xd0180046, +0x40000000,0x00400000,0x00a12001,0x0004a060,0x00000000,0x20200004,0x00000000,0x24020000, +0x06400056,0x80000000,0x00002286,0x000044c0,0x00000000,0x40000400,0x0000c183,0x00000000, +0x0018680c,0x00001200,0x00160042,0x00800000,0xf0004000,0x00000000,0x00000000,0xfc400000, +0x341c6800,0x72000a04,0x00000ec0,0x00080000,0x00000000,0x40000000,0x00000002,0x00000000, +0x50fbffc0,0x0a4000be,0x02b84c40,0x00180008,0x70006824,0x00400000,0x00010009,0x0001a000, +0x00000000,0x00200004,0x00000000,0x1a1b9001,0x00080624,0x81900000,0x12002286,0x100000a0, +0x20000000,0x00028480,0x00000000,0x00000000,0x000c000c,0x05000002,0x00000000,0x00800000, +0xb0000000,0x00000200,0x00000000,0x00391000,0x3418680c,0x00000b94,0x00000ae0,0x00000000, +0x0321e001,0x00000000,0x00000000,0x00000000,0x8e03ff80,0x000000d4,0x24010018,0x0e800006, +0x78014800,0x00400000,0x00000000,0x0004c000,0x00000000,0x14240000,0x00000000,0xb6000300, +0x00000026,0x81980320,0x33800286,0x00400058,0x24000000,0x00828480,0x00000000,0x00000000, +0x00a86800,0x000201d0,0x001800c0,0x00800000,0x00000000,0x00000600,0x00000000,0x00000000, +0x34186e70,0x20010bd4,0x000006c1,0x00080000,0x38000001,0x00001401,0x00000000,0x00000000, +0x1503ff80,0x00000130,0x80044808,0x0ef8c010,0x38002b70,0x00400000,0x001640b2,0x0f800060, +0x00001f00,0x00000000,0x00000000,0xb69a0e00,0x00000626,0x93d80010,0x10000706,0x00404040, +0x00000000,0x49000080,0x000a0183,0x00000000,0x05a0680c,0x00000190,0x001800c0,0x00800000, +0x002c8164,0x00000000,0x00000000,0x00000f84,0x00186c74,0x00012a06,0x07c00600,0x10080f80, +0x38000801,0x40001381,0x00000001,0x00000000,0x1703ef80,0x003e0160,0xf4000d58,0x98f80100, +0x58000054,0x28480000,0x181640b2,0x0f8400e1,0x00001f00,0x20200004,0x00000000,0xb69a0f00, +0x00000126,0x9a0c1400,0x00000306,0x04000054,0x00000000,0xc9000000,0x000a8143,0x00000000, +0x2400077c,0x00c80200,0x001800c0,0x00000000,0x002c8164,0x00040400,0x00000000,0xf8781000, +0x26206e72,0x0e012004,0x07c01081,0x25090f80,0x3c21e0a1,0x40000001,0x00000002,0x00000000, +0x9a03ff80,0x002fbdef,0x07b84d50,0x0a9c0000,0x60018000,0x08480000,0x001640b2,0x0f8000c1, +0x00000000,0x002110f0,0x00000000,0xb69b9306,0x4f400027,0x9b133410,0x18002706,0x004040c0, +0x00008c00,0xc9000080,0x00000143,0x00000000,0x05bc054c,0x000413db,0x001800c0,0x50900000, +0x00000164,0x00040401,0x00000000,0xf8400000,0x00106832,0x00120000,0x07c00000,0x00000f80, +0x39000801,0x40004381,0x00000001,0x00000000,0xe503ef80,0x000002af,0x26268660,0x50380726, +0x18010378,0x00000000,0x801640b2,0x0f860100,0x00001f00,0x142610f0,0x00000000,0x101a0f06, +0x682c2700,0x9a0c2400,0x28000287,0x3c304020,0x04004800,0xc9000080,0x00000143,0x00000000, +0xc120081c,0x0dc81a00,0x00300160,0x00000000,0x402c8164,0x00080001,0x00000000,0xf0400000, +0x34006830,0x00000a90,0x07c00000,0x20010f80,0xc421e000,0xc0004383,0x00000005,0x00000000, +0xe203ef80,0x0e0001d0,0x36ac2818,0x00180046,0x88010800,0x00080000,0x001640b2,0x0f8000a0, +0x00001f00,0x000210f0,0x00000000,0x383a0b00,0x08003117,0x9a031732,0x00000286,0x18182080, +0x04003800,0xcc000000,0x000c6143,0x00000000,0xb418281c,0x01e99310,0x00300170,0x00100000, +0x002c8164,0x00100e00,0x00000000,0x00000000,0x17382e70,0x2c121208,0x07c00001,0x20010f80, +0x8421e000,0x40004383,0x00000004,0x00000000,0x2803ef80,0x0f800120,0x03a66d50,0x0aa05107, +0xe801c860,0x00000000,0x001640b2,0x0f820100,0x00001f00,0x00200004,0x00000000,0x1b1b1f04, +0xa8008434,0x9a030000,0x00002287,0x382000a0,0x00000000,0xc8000080,0x000c0143,0x00000000, +0x05a9a81c,0x05001a0c,0x00300160,0x00000000,0x002c8164,0x00101000,0x00000000,0xec7a1000, +0x03a06800,0x80160204,0x07c00a00,0x20000f80,0xc421e000,0x80004383,0x00000002,0x00000000, +0x2c000f80,0x00000260,0x66a24d74,0xd03802c2,0xc0c04808,0x00080000,0x801640b2,0x0f8200ad, +0x00001f00,0x00040004,0x00000000,0x033a0326,0x0f700004,0x9a0f1400,0x00000687,0x00400000, +0x00001f00,0xc9000080,0x0000c143,0x00000000,0x3418281c,0x00021a03,0x00180160,0x00100000, +0x402c8164,0x00040481,0x00000000,0xf8400e04,0x04106c70,0x80120a0c,0x07c00000,0x20010f80, +0xc0000800,0xc0004383,0x00000003,0x00000000,0x2303ff80,0x000002c0,0x03a70664,0x0060f056, +0x1001cb78,0x00000001,0x801640b2,0x0f8600ad,0x00001f00,0x002002c8,0x00000000,0x0a3b1326, +0x0f4c4024,0x8b180408,0x28000687,0x0c000060,0x04001f00,0xc9000400,0x000c2143,0x00000000, +0x34380e50,0x0100000c,0x00300160,0x00100000,0x402c8164,0x00040ca1,0x00000000,0xfc400000, +0x2408074c,0x8008c000,0x07c00000,0x00010f80,0xc421e000,0x00004383,0x00000008,0x00000000, +0x5f03e000,0x003ff98e,0x001a054c,0x100811c6,0x00014808,0x00080000,0x801640b2,0x0f800000, +0x00001f00,0x002002c8,0x00000000,0xa41b5308,0x074c38e6,0x32030000,0x00000421,0x00402000, +0x04000000,0xcb000400,0x00000143,0x00000000,0x00b80f4c,0x0dcd83d0,0x00300170,0x00100000, +0x402c8164,0x00000ca1,0x00000000,0x003f1000,0x34064f72,0xec010a04,0x07c00c00,0x20010f80, +0x80000000,0x40004384,0x00000005,0x00000000,0x0003ef80,0x0000fbc0,0x94000838,0xd0290002, +0x30004828,0x00080000,0x001640b2,0x0f800060,0x00001f00,0x000290f0,0x00000000,0xb0e00720, +0x480c2206,0x82070000,0x18002306,0x324000d4,0x04001000,0x1b000400,0x00000000,0x00000000, +0x34006830,0x05061208,0x00300170,0x00000000,0x002c8164,0x00000900,0x00000000,0x00391000, +0x00060830,0xec000a01,0x07c00000,0x00000f80,0x0421e000,0x00003b04,0x00000000,0x00000000, +0x24000f80,0x0ff80000,0x27a22810,0xd06900c9,0xa0004978,0x00000000,0x001640b2,0x0f800000, +0x00001f00,0x20200004,0x00000000,0x021a0c02,0x00021124,0x920b0000,0x30002287,0x000040a0, +0x00000000,0x14000400,0x00000000,0x00000000,0x3401803c,0x00c91202,0x00320190,0x00000000, +0x282c8164,0x00000c61,0x00000000,0x003f1000,0x03a06802,0x720c0151,0x07c00240,0x20080f80, +0x00000821,0x00004380,0x00000000,0x00000000,0xa1000f80,0x0020ebff,0x07b64d50,0xd0684001, +0x00014829,0x00400000,0x801640b2,0x00000100,0x00001f00,0x24048004,0x00000000,0x3063d306, +0x0f403003,0x2a0303b8,0x13802000,0x1a040080,0x20000000,0x1c000400,0x000c4000,0x00000000, +0x04064820,0x09010a00,0x00320180,0x00000000,0xa02c8000,0x000c1060,0x00000000,0x00000000, +0x3406480c,0x12000000,0x07c00400,0x20010f80,0x3d21e000,0x00000004,0x00000000,0x00000000, +0x6403ef80,0x0000f97f,0x00060574,0xd0680420,0x00000148,0x00080000,0x001640b2,0x0f800100, +0x00000000,0x042610f0,0x00000000,0x00000026,0x0440b054,0x01d80324,0x41002000,0x0fa860a0, +0x20002c00,0xc5000400,0x00000143,0x00000000,0x34ac0800,0x0d004000,0x00324170,0x00000000, +0x40000164,0x00000901,0x00000000,0x00000000,0x00066800,0xe80a0a01,0x07c00000,0x20080f80, +0x0501e000,0x40004384,0x00000008,0x00000000,0x9a03ef80,0x000001df,0x04000804,0xdae81206, +0x01018000,0x00080000,0x001640b2,0x0f800000,0x00001f00,0x000210f0,0x00000000,0xa4fa0300, +0x08000002,0x20031406,0x13802000,0x000000cc,0x04004000,0x10000400,0x000ca000,0x00000000, +0x01b86804,0x00ca1a0c,0x00324172,0x00000000,0xb82c8164,0x00000000,0x00000000,0x00000000, +0x14000810,0x30000001,0x07c00200,0x20080f80,0x80059001,0x00004003,0x00000000,0x00000000, +0x9e03ef80,0x0000fa7f,0x03a00d48,0xd07893c6,0x38014800,0x00400000,0x801640b2,0x0f810061, +0x00001f00,0x00200000,0x00000000,0x3881df00,0x08000077,0x9a000324,0x29802687,0x0f986040, +0x20001f00,0x00000000,0x00000000,0x00000000,0xc1b8074c,0x00000200,0x00320000,0x00000000, +0x582c8164,0x00040ec0,0x00000000,0xfc400f44,0x03b00570,0x30161a08,0x07c004e1,0x00080f80, +0x80000001,0x00001003,0x00000000,0x00000000,0x2d000000,0x0ec000f0,0xc3a62810,0xd0608146, +0x0041cb49,0x00400000,0x00164000,0x0f800001,0x00001f00,0x400422c8,0x00000000,0xa613dc10, +0x68300003,0x3a030000,0x14802000,0x00004000,0x20000000,0xc0000400,0x00080143,0x00000000, +0x00a8003c,0x09070000,0x001800e0,0x00100000,0x382c8164,0x009004c1,0x00000000,0xe0400000, +0x03200010,0x00000a04,0x00000001,0x20080f80,0x00459000,0x80001404,0x00000005,0x00000000, +0xb803ef80,0x000003ef,0x00000554,0x50088300,0xd800c808,0x00000000,0x00164001,0x0f838000, +0x00001f00,0x000660f0,0x00000000,0x00020328,0x0e701600,0x92032404,0x00000687,0x0f9c6000, +0x20006800,0xc0008480,0x00000143,0x00000000,0x1408000c,0x09040000,0x00000170,0x00000000, +0x402c8164,0x00001040,0x00000000,0xec7c1e04,0x00142830,0xce0e0a04,0x00000840,0x00080f80, +0xc541e000,0xc0000003,0x00000004,0x00000000,0x1d03e000,0x0e3ff800,0x34064804,0x90190200, +0x00018008,0x00400000,0x000000b2,0x0f81a080,0x00000000,0x000290f0,0x00000000,0x241a0838, +0x68040703,0x20003730,0x13802000,0x000000a0,0x04007c00,0x00000400,0x00000000,0x00000000, +0x0000680c,0x0dcc01d8,0x002c0174,0x00800000,0x40000164,0x00000001,0x00000000,0x00000000, +0x00066800,0x26161204,0x07c01001,0x00010000,0xc0059000,0x00001803,0x00000000,0x00000000, +0x1b000000,0x00000000,0x34062800,0xd00001a2,0x0001800c,0x00080000,0x000020b2,0x0f800000, +0x00000000,0x00000004,0x00000000,0x04020324,0x680c0024,0x2000033c,0x10002400,0x000000b8, +0x04000000,0x03000000,0x00000000,0x00000000,0x00000f6c,0x00018190,0x00280170,0x00900000, +0x00004164,0x00000841,0x00000000,0x003f1e04,0x3400680c,0x00000a0c,0x07c002e0,0x20080000, +0x80000000,0x00004c03,0x00000000,0x00000000,0x00000000,0x0029fc00,0x00000554,0x0ef84142, +0x00004820,0x00400000,0x000020b2,0x0f8200e0,0x00001f00,0x00008004,0x00000000,0x063b9312, +0x48380000,0x00003404,0x14800400,0x00400060,0x20000000,0x1b000400,0x00080000,0x00000000, +0x01b86830,0x09011a07,0x002f0190,0x00000000,0x782c8164,0x00000a01,0x00000000,0x00000000, +0x00000770,0xe0000a01,0x07c00420,0x00010000,0x80000001,0x00003c84,0x00000000,0x00000000, +0x00000000,0x0a80f000,0x001a0004,0xd01842c0,0x00016838,0x00400000,0x001640b2,0x0f83c000, +0x00001f00,0x00040004,0x00000000,0x10020302,0x68040734,0x01d00000,0x00000400,0x00000040, +0x20000000,0x10000400,0x00000000,0x00000000,0x00000800,0x0904000c,0x002e0194,0x00100000, +0xf82c8164,0x00000300,0x00000000,0x003c1fc4,0x00000030,0x200c0156,0x07c00e21,0x20080f80, +0x00000800,0x00003c00,0x00000000,0x00000000,0xc0000000,0x003f7009,0x74024d6c,0x10093002, +0x00002830,0x00400000,0x001640b2,0x00004060,0x00001f00,0x00000000,0x00000000,0x001a0800, +0x683418c0,0x21dc0000,0x12800400,0x0f9ae040,0x20000000,0x00000400,0x00000000,0x00000000, +0x0006683c,0x05058000,0x002a0190,0x00800000,0x402c8000,0x00000ca1,0x00000000,0x00000000, +0x34180740,0x00000a04,0x07c00500,0x01010f80,0x80000001,0x00004b81,0x00000000,0x00000000, +0x24000000,0x0ebb0000,0x57ba080c,0x10010048,0x00006820,0x00400000,0x001640b2,0x00004060, +0x00001f00,0x20240004,0x00000000,0x20000f20,0x07744083,0x020b0000,0x18000400,0x00000000, +0x04000000,0x00000400,0x00080000,0x00000000,0x2418683c,0x00c98008,0x002a4150,0x00800000, +0xe82c8002,0x00000000,0x00000000,0xec7e1000,0x0000681c,0x80000009,0x07c00a00,0x20080f80, +0xb8059000,0x00004c04,0x00000000,0x00000000,0x0c000000,0x0f3902ae,0x27a66804,0x1010c060, +0x00014800,0x00080000,0x801640b2,0x0f84006f,0x00001f00,0x00040004,0x00000000,0x041a0000, +0x04400800,0x20012400,0x13000400,0x0f986040,0x20001f00,0x1a000000,0x00000000,0x00000000, +0x3400000c,0x09030bd0,0x002a0156,0x00800000,0x802c8164,0x00000e00,0x00000000,0xe47f1f04, +0x04000f4c,0x00021a02,0x07c00840,0x00080f80,0x80000000,0x00004b84,0x00000000,0x00000000, +0x96000000,0x067f023f,0x440e0008,0x1a910002,0x00000060,0x00400000,0x801640b2,0x0f80000b, +0x00001f00,0x800402c8,0x00000000,0x201a0d10,0x074c0103,0x20002410,0x00000000,0x0f82e000, +0x04001f00,0x19000080,0x000c8000,0x00000000,0x34186e78,0x0d001203,0x00260120,0x00100000, +0xc02c8164,0x00000d00,0x00000000,0x00000000,0x2418680c,0x00100a05,0x07c00460,0x20080f80, +0x38459000,0x00004004,0x00000000,0x00000000,0x98000000,0x0000fa8f,0xc3a42800,0x50201102, +0x00014810,0x00400000,0x801640b2,0x0f832061,0x00001f00,0x002082c8,0x00000000,0x240a0d00, +0x04400803,0x20010010,0x1c000000,0x0f986000,0x20001f00,0x1c000400,0x0006c000,0x00000000, +0x3418683c,0x00000000,0x002e0174,0x00000000,0x002c8164,0x00000000,0x00000000,0x003f1e04, +0x00000440,0x20000155,0x07c004a1,0x00010f80,0x19059000,0x00004000,0x00000000,0x00000000, +0x18000000,0x0e0001d0,0x17a60550,0x003851c1,0x00010a48,0x00400000,0x001640b2,0x0f816000, +0x00001f00,0x002002c8,0x00000000,0x1c03d002,0x680c0024,0x1a012400,0x30002000,0x00000000, +0x00000000,0x10000000,0x000c0000,0x00000000,0x362e280c,0x00060000,0x002e0180,0x00800000, +0x002c8164,0x00000400,0x00000000,0x00000000,0x34020770,0x2a001351,0x07c004e1,0x00080f80, +0x38459000,0x00003804,0x00000000,0x00000000,0x00000000,0x0fc00180,0x03a60544,0x50180081, +0x00010000,0x00400000,0x001640b2,0x0f8000e0,0x00001f00,0x00040000,0x00000000,0x3041d306, +0x6c700037,0x1a030000,0x00002000,0x00400000,0x00000000,0x00000080,0x000ac000,0x00000000, +0x14006820,0x0d000000,0x002e4130,0x00800000,0x402c8164,0x00000201,0x00000000,0x00000fc4, +0x14060f4c,0x2a0e1202,0x07c00a01,0x00010f80,0x38000000,0x00004004,0x00000000,0x00000000, +0x2d000000,0x0000fd60,0x02206d74,0x00180040,0x0000000c,0x00080000,0x001640b2,0x0f810000, +0x00001f00,0x00200004,0x00000000,0x3c1a0302,0x07780037,0x20000000,0x40002000,0x003000d4, +0x04000000,0x07000080,0x000c0000,0x00000000,0x0410281c,0x05060008,0x00320178,0x00000000, +0x002c8164,0x00000000,0x00000000,0xe0400fc4,0x34000000,0x12021208,0x07c00a01,0x20010f80, +0x00000800,0x00004000,0x00000000,0x00000000,0x11000000,0x003fe000,0xc2a20550,0x00183346, +0x0000834c,0x00080000,0x001640b2,0x000000a0,0x00001f00,0x20200004,0x00000000,0x2401d300, +0x080008c3,0x3a0c0008,0x00002000,0x000800d0,0x04000000,0x19000000,0x00060000,0x00000000, +0x00186830,0x0dcc0110,0x00328116,0x00100000,0xa82c8000,0x00000000,0x00000000,0x003e1000, +0x03be0000,0x0c00015d,0x07c00001,0x00010f80,0x80000801,0x00004804,0x00000000,0x00000000, +0x40000000,0x0500f0fe,0x36ae2824,0xd0390100,0x00004828,0x00080000,0x001640b2,0x0f800000, +0x00001f00,0x00040004,0x00000000,0x24611404,0x0f4c4603,0x3a030000,0x30002000,0x00400020, +0x20000000,0x14000000,0x000a0000,0x00000000,0x34062810,0x0d060000,0x00328112,0x00000000, +0x002c8164,0x00000601,0x00000000,0xe07f1f04,0x00060020,0x24001208,0x07c00001,0x00000f80, +0x80000801,0x00004384,0x00000000,0x00000000,0x00000000,0x0fbf03a0,0x36380d50,0x5c980812, +0x00014808,0x00000000,0x001640b2,0x0f800060,0x00001f00,0x20200000,0x00000000,0x10015116, +0x2f4c0254,0x21dc0000,0x20002000,0x004000b8,0x04000000,0x10000080,0x000c0000,0x00000000, +0x24062810,0x00c90000,0x00324170,0x00000000,0xc02c8164,0x00000400,0x00000000,0x00000fc4, +0x34006e6c,0x2a001208,0x07c00001,0x20010f80,0xc0000800,0x00003803,0x00000000,0x00000000, +0x40000000,0x0e3f018b,0x24062e74,0xd0200008,0x00004820,0x00000000,0x001640b2,0x0f8000e0, +0x00001f00,0x20200004,0x00000000,0x007a0308,0x080800c0,0x00000400,0x30002000,0x00180000, +0x04000000,0x00000080,0x000c0000,0x00000000,0x00000810,0x0dcf1a04,0x00240170,0x00000000, +0x002c8164,0x00001040,0x00000000,0x00381fc4,0x02280030,0x32001202,0x07c00000,0x00010f80, +0x00000801,0x00003c00,0x00000000,0x00000000,0xa6000000,0x003fecde,0x03b26824,0xd0583010, +0x00004808,0x00000000,0x003640b2,0x00000000,0x00001f00,0x20200004,0x00000000,0x18020006, +0x28100024,0x01d303b8,0x1b002000,0x00000080,0x04000000,0x00000400,0x00006000,0x00000000, +0x00000800,0x00cc000b,0x00320170,0x00000000,0x002c8000,0x000010c0,0x00000000,0x00000e44, +0x00002800,0x0e060a01,0x07c00001,0x00010f80,0x00000800,0x00004802,0x00000000,0x00000000, +0x3a000000,0x003801f6,0x14060000,0xdcf83158,0x00018000,0x00000000,0x001640b2,0x0002c000, +0x00001f00,0x00200000,0x00000000,0x10120308,0x2f5c8124,0x2a020000,0x0a002000,0x000000c0, +0x00000000,0x10000400,0x000a6000,0x00000000,0x00202804,0x00c90200,0x00270010,0x00000000, +0x802c8002,0x00000e00,0x00000000,0xfc400000,0x02b00740,0x0e000000,0x07c00001,0x20080f80, +0x38000000,0x00000000,0x00000000,0x00000000,0x11000000,0x0e4000d0,0xc3b02800,0xd078b800, +0x00006830,0x00000000,0x001640b2,0x0f800000,0x00001f00,0x00200000,0x00000000,0x0001d124, +0x2c508000,0x1a030000,0x00002000,0x00200080,0x04000000,0x00000080,0x0008c000,0x00000000, +0x0002080c,0x09011b58,0x00270196,0x00800000,0x002c8164,0x00001040,0x00000000,0x00000000, +0x17ae0000,0x20000a04,0x07c00201,0x00080f80,0x00000001,0x00003800,0x00000000,0x00000000, +0x14000000,0x0000f800,0x40040550,0x101882c0,0x00008000,0x00080000,0x001640b2,0x0f810000, +0x00001f00,0x00200000,0x00000000,0x001a0c00,0x054440c0,0x03dc3418,0x23002000,0x00000000, +0x00000000,0x00000400,0x00000000,0x00000000,0x34000800,0x00008003,0x00270172,0x00000000, +0x402c8364,0x00000f00,0x00000000,0xe4400e04,0x140e000c,0x0e000a01,0x07c00001,0x20000f80, +0x80000800,0x00004803,0x00000000,0x00000000,0x2d000000,0x0038fc00,0xc0064d44,0xd048f100, +0x00004808,0x00000000,0x001640b2,0x0f86a060,0x00001f00,0x20208004,0x00000000,0x0801d302, +0x2f5c0080,0x00000018,0x1c002000,0x000000ac,0x04000000,0x00000400,0x00000000,0x00000000, +0x34060800,0x01008110,0x002a0196,0x00100000,0xa82c8164,0x00000000,0x00000000,0xfc400000, +0x24000740,0x00000a07,0x07c00000,0x00080f80,0x80000000,0x00003c84,0x00000000,0x00000000, +0xe0000000,0x0000027f,0x03a02824,0x90780600,0x0000000c,0x00000000,0x001640b2,0x0f800000, +0x00001f00,0x00000004,0x00000000,0x04000e30,0x683006c0,0x020003a0,0x00000000,0x000000c0, +0x20000000,0x00000000,0x000c0000,0x00000000,0x34060800,0x00ed8000,0x00224116,0x00800000, +0x582c8164,0x00000001,0x00000000,0x003f1000,0x00000460,0x20000003,0x07c00821,0x00080f80, +0x80000001,0x00004384,0x00000000,0x00000000,0xfc000000,0x003f02ce,0xc7a62e50,0x0000db00, +0x0001826c,0x00400000,0x001640b2,0x0f850060,0x00001f00,0x20200000,0x00000000,0x201a0232, +0x28100603,0x00000400,0x00000400,0x00000000,0x20000000,0x00000000,0x00000000,0x00000000, +0x341e0000,0x0dcf0000,0x00224100,0x00000000,0x002c8164,0x00000ac0,0x00000000,0x00000000, +0x03a04800,0x000e0003,0x07c004e0,0x00000f80,0xc8000001,0x00003803,0x00000000,0x00000000, +0x0a000000,0x002e0000,0x74060574,0x10000250,0x00000000,0x00400000,0x001640b2,0x0f820000, +0x00001f00,0x24040004,0x00000000,0xa02a0302,0x08300203,0x23dd2416,0x4a800000,0x00000000, +0x00000000,0x08000400,0x00000000,0x00000000,0x34260804,0x00070001,0x00224118,0x00100000, +0xc02c8164,0x00000000,0x00000000,0xe8400000,0x00000010,0x20000a07,0x07c00001,0x00000f80, +0x48000000,0x00003800,0x00000000,0x00000000,0x00000000,0x00390000,0x47a66e64,0x0e88d152, +0x00000000,0x00000000,0x001640b2,0x0f82c0a0,0x00001f00,0x00000004,0x00000000,0x06200000, +0x2f500204,0x000c0004,0x00000400,0x00000000,0x04000000,0x17000000,0x000c2000,0x00000000, +0x14180800,0x0dc81a00,0x0022c180,0x00100000,0x002c8164,0x000010c0,0x00000000,0x00000000, +0x00100440,0x00160004,0x07c002c0,0x00080f80,0xb0000000,0x00000003,0x00000000,0x00000000, +0x00000000,0x0ba50000,0xc4080540,0xd018c202,0x00002820,0x00400000,0x001640b2,0x0f800000, +0x00000000,0x00200004,0x00000000,0x24000006,0x6c4c0637,0x3b1003a0,0x4a800000,0x004000c0, +0x04000000,0x10000404,0x00000000,0x00000000,0x34102804,0x0dcd83d3,0x00328000,0x00800000, +0xc0000164,0x00000a01,0x00000000,0x003f1000,0x0400000c,0x00000192,0x07c00000,0x00000f80, +0xc0000000,0x00001804,0x00000000,0x00000000,0x6e000000,0x0c224c04,0x34062f5c,0xd0603010, +0x0001480c,0x00000000,0x00164000,0x0f86a000,0x00000000,0x80040000,0x00000000,0x00000208, +0x480c0240,0x1a030320,0x1c000000,0x00000000,0x20000000,0x09000080,0x00000000,0x00000000, +0x34060810,0x00ee0000,0x002e00c0,0x00000000,0xc0004164,0x00000401,0x00000000,0xf8400e04, +0x00060000,0x2e001a53,0x00000001,0x00080f80,0xc8000801,0x00000003,0x00000000,0x00000000, +0xcaffffc0,0x0c78c11b,0x34064818,0x0018f010,0x0000682c,0x00000000,0x00164001,0x0f820000, +0x00000000,0x90209020,0x00000000,0x0001d006,0x00000640,0x1a030000,0x18002000,0x240000b0, +0x04009000,0x10000080,0x00000000,0x00000000,0x01b8680c,0x00001a03,0x00224114,0x00800000, +0x40000164,0x09000000,0x00000000,0xc4b02bc8,0x34000760,0xe0000add,0x00000100,0x00080f80, +0xc1204000,0x00003c83,0x00000000,0x00000000,0x80e7febc,0x07007002,0x0000000c,0x00000000, +0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x90229964,0x00000000,0x01000001, +0x00000000,0x80000000,0x00000207,0xfc000000,0x000020ff,0xc0000400,0x00000143,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00200000,0x00000000,0x71400000, +0x00000003,0x00000000,0x00000000,0x00000000,0x0421e401,0xc0000000,0x00001fff,0x805fa000, +0x4bffffc0,0x028084b8,0x00002800,0x00000000,0x000a0000,0x00000000,0x00000000,0x00000000, +0x00000000,0x90200000,0x00000000,0x00000000,0x00000034,0x80000000,0x00000206,0x00186034, +0x00000000,0x46000000,0x00000103,0x00000000,0x34100000,0x50000000,0x00000000,0x00000000, +0x00000000,0x120406c0,0x00000000,0x28800000,0x17280440,0x00092000,0x00000000,0x28010000, +0x0541a100,0x00000000,0x00000000,0x00000000,0xd0ebffbd,0x044044f2,0x36200000,0x08800000, +0x00000000,0x00000000,0x22003000,0x000000e1,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00001300,0x80000000,0x00000206,0x08382400,0x00000000,0xc0000000,0x00000143,0x00000000, +0x00000440,0xb0000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x454002c8, +0x00000000,0x00000004,0x00000000,0x00000000,0x01204000,0xc0000000,0x00001fff,0x805fa000, +0x00fbff40,0x02803900,0x04006800,0x08800000,0x008a0000,0x00000000,0x00001000,0x00000000, +0x00000000,0x902110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x00000206,0xfc000000, +0x000000ff,0x40000000,0x00000103,0x00000000,0x00000000,0x00000000,0x00001200,0x00000000, +0x00000000,0x02000000,0x00000000,0x28800000,0x00006800,0x00100001,0x00000000,0x00000000, +0x0221e000,0x00000000,0x00000000,0x00000000,0x10fffffb,0x03803503,0x00018003,0x00000000, +0xe8000000,0x80000003,0x02000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000800,0x80000000,0x00000287,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x00000540,0x00000000,0x00201600,0x00000000,0x00000000,0x02086000,0x00000000,0x388d2308, +0x0000280c,0x00001200,0x00000000,0x00000000,0x01204400,0x00000000,0x68000000,0x00000007, +0x40ebff40,0x03803804,0x02260000,0x00180000,0x00000830,0x00000000,0x00001000,0x0e000000, +0x00041c00,0x90229960,0x00000000,0x00000031,0x000c0000,0x800003a0,0x00000286,0x00000000, +0x80000800,0x08000010,0x00000000,0x00000000,0xc0000000,0x00000000,0x08000000,0x00000000, +0x006c8164,0x0024a000,0x00000000,0x39400000,0x00000000,0x000000d0,0x00000000,0x04200000, +0x0501a000,0x00000000,0x00000000,0x805fa000,0x10fbff3b,0x028044b0,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x9022a0d0,0x00000000,0x000a0000, +0x00000000,0x800002a8,0x00000286,0x00000000,0x24000000,0xc8b00020,0x00000143,0x00000000, +0x14000540,0x00000000,0x00c00040,0x00000000,0x00000000,0x00906000,0x00000000,0x28800408, +0x00000000,0x00000002,0x00000500,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x0003ef00,0x00003404,0x34000000,0x00000102,0x00000000,0x0047fff8,0x00000001,0x00034000, +0xfffe0000,0x00000003,0x00000000,0xa0000100,0x00000003,0x00000000,0x00142400,0x00000000, +0x24000000,0xc8000014,0x00000103,0x00000000,0x00080544,0x00000000,0x001a0160,0x00000000, +0x00000000,0x00000000,0x00000000,0x000f2000,0x00000000,0x00001200,0x00000000,0x10000000, +0x00000000,0x00000000,0x00000000,0x00000000,0xc0ffffc0,0x034f3002,0x04060000,0x08800006, +0x00020800,0x80000000,0x003641b2,0x00000000,0x00000000,0x90209020,0x00000000,0x01800000, +0x08000000,0x00000008,0x28000000,0x02020000,0x00000400,0x10000000,0x00000000,0x00000000, +0x00000000,0x00000110,0x00000000,0x00800000,0xc0000000,0x00800000,0x00000000,0x348c22c8, +0x00000000,0x00000000,0x07000000,0x00000e00,0x39204000,0x00001380,0x00000000,0x00000000, +0x00eff000,0x02c02c00,0x14060000,0x00000006,0x78800800,0x00000000,0x02000000,0x00000000, +0x00000000,0x9022996c,0x00000000,0x00015001,0x00000000,0x81100000,0x00142687,0x00382400, +0x00001f00,0x49028480,0x00000183,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00480600,0x00000000,0x2d400000,0x02a80000,0x80100000,0x00000000,0x20000000, +0x000000a1,0xc0000000,0x00000003,0x805fa000,0x0003ff80,0x00002800,0xc0020000,0x00000000, +0x08860800,0x00000000,0x02000000,0x00000000,0x00000000,0x000290d0,0x00000000,0x00015400, +0x00002000,0x81500000,0x00142687,0x06000000,0x00000c00,0xc8028480,0x00000143,0x00000000, +0x00000000,0x00000000,0x000012c0,0x00000000,0x00000000,0x00082000,0x00000000,0x00000000, +0x00080000,0x00120000,0x00000000,0x00000000,0x0221e000,0x40000000,0x00000001,0x00000000, +0x8003fffd,0x000000a2,0xc0010540,0x0000c000,0x38006800,0x00000000,0x22000509,0x00000100, +0x00000000,0x000260d0,0x00000000,0x00200402,0x00002040,0x80040000,0x00000287,0x1a000000, +0x00002400,0xc8000000,0x00000143,0x00000000,0x14000000,0x00000000,0x00040000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00002800,0x00000000,0x00000000,0x00000000, +0x0521a400,0xc0000000,0x00000002,0x00000000,0x0a03dfc0,0x00000000,0x03202801,0x1000c000, +0x08000030,0x00000000,0x20a12000,0x00000100,0x00000000,0x000110f0,0x00000000,0x00000002, +0x00000004,0x80000000,0x00000286,0x22382420,0x00003400,0x40000000,0x00000143,0x00000000, +0x14082800,0x00000000,0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00002804,0x00000000,0x00000000,0x00000000,0x04c1a000,0x40000000,0x00000001,0x00000000, +0x00ffdf3e,0x02800000,0x03a30000,0x50000006,0x38400000,0x00000000,0x00a12000,0x00000000, +0x00000000,0x902110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x00000306,0x12000020, +0x00004400,0x40000000,0x00000143,0x00000000,0x00082801,0x00000000,0x00000000,0x00000000, +0x00000000,0x12000600,0x00000000,0x28800000,0x03200004,0x80100000,0x00000000,0x20000000, +0x0221e4a1,0xc0000000,0x00000002,0x00000000,0x03b7fe31,0x02822840,0x43a00803,0x00000000, +0x004b4810,0x00000000,0x00003000,0x00000000,0x00000000,0x9022a960,0x00000000,0x00000001, +0x00002000,0x00000000,0x00040607,0x00300000,0x00000000,0x00000000,0x00000000,0x00000000, +0x363c0000,0x50000000,0x00200000,0x00000000,0x00000000,0x00200000,0x00000000,0x29400000, +0x0000080c,0x00107a03,0x00000000,0x00000000,0x04418400,0x00000000,0x28000000,0x805fa006, +0x80e3ff00,0x058b58c2,0x00006808,0x00000000,0x000a0000,0x00000000,0x00001000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000001,0x00000000,0x40000000,0x00000287,0x01000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x24080000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400294,0x00006802,0x00120094,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x805fa000,0xcdebff80,0x0580598f,0x34040000,0x00000000, +0x00000000,0x00000000,0x00000060,0x00000000,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00000024,0x00000000,0x00042400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x08000000,0x00000000,0x00000000,0x002006c0,0x00000000,0x59400000, +0x00000740,0x00000000,0x00000000,0x04200000,0x01030800,0x00000000,0x00000000,0x805fa000, +0x00000fc0,0x00000000,0x00060000,0x00000000,0x00006820,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x04000000,0x00000000,0x41100000,0x28000206,0x00000000, +0x00000000,0x08080e80,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000388,0x34000030,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x038c0000,0x40002800,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x00000000, +0x00000200,0x00000000,0x00000000,0x00000000,0x00000000,0x49000000,0x00000103,0x00000000, +0x00000540,0x00000000,0x00128000,0x00000000,0x00000000,0x00216000,0x00000000,0xe0400000, +0x00180000,0x00000000,0x00000000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000, +0x8003fffb,0x00382d02,0x36a00004,0x00000000,0x00000000,0x00000000,0x00010000,0x00000000, +0x00000000,0x607c9020,0x00000000,0x00000000,0x00000800,0x00000000,0x00000000,0x01000000, +0x00000200,0xa0000000,0x00000143,0x00000000,0x14080000,0x00000000,0x00000184,0x00000000, +0x00000000,0x00400000,0x00000000,0xe04b2288,0x00000000,0x80000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x0cc7ff32,0x058c5950,0x001c6800,0x90004009, +0x00006a70,0x00000000,0xa81650b2,0x0000010c,0x00000000,0x9022a964,0x00000000,0x07000201, +0x00000134,0x80020000,0x00000206,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x15ba0470,0x10000000,0x00000001,0x00000000,0x00000000,0x00200460,0x00000000,0x59400fc4, +0x0000680c,0x8a001202,0x07000000,0x00000e00,0x0201e400,0x00000000,0x48000000,0x805fa006, +0xb8fffff5,0x028008a0,0x76206d6c,0x50204006,0x000a081c,0x00000000,0x00001000,0x00000000, +0x00000000,0x902100f0,0x00000000,0x0021d000,0x00002104,0x81d00000,0x00002286,0x02434400, +0x00000000,0x45880480,0x00000143,0x00000000,0x04086810,0x00000000,0x002e0180,0x00000000, +0x00000000,0x00806000,0x00000000,0x28800000,0x14000803,0x000900d4,0x00000000,0x00000000, +0x0521a000,0x40000000,0x00000000,0x00000000,0x80e3ff00,0x058b58c2,0x00006808,0x00000000, +0x000a0000,0x00000000,0x00001000,0x00000000,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00000000,0x40000000,0x00000287,0x01000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x24080000,0x00000000,0x00000000,0x00000000,0x00000000,0x00200000,0x00000000,0x59400294, +0x00006802,0x00120094,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x805fa000, +0x00dbff3d,0x05805950,0x00006800,0x00000000,0x08404800,0x00000000,0x00001000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000001,0x00002000,0x80000000,0x00000286,0x00000000, +0x00000000,0x40000000,0x00000103,0x00000000,0x24000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400000,0x00000000,0x00150000,0x00000000,0x00000000, +0x00000400,0x00000000,0x00000000,0x805fa000,0x80ff7fc0,0x02802800,0x14082803,0x0a800000, +0x000a0020,0x00000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x00000000, +0x00000100,0x80000000,0x00000207,0x00000000,0x00000000,0x01800000,0x00000000,0x00000000, +0x00100744,0x50000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800000, +0x00006808,0x00120000,0x00000000,0x00000000,0x0521a000,0x00000000,0x00000000,0x00000000, +0x00cffcc0,0x05805950,0x040e0548,0x0ce80002,0x0001c82c,0x00000000,0x00002000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000b07,0x800c2004,0x8a0c0004,0x00000286,0x00000000, +0x00000000,0x44800000,0x00000103,0x00000000,0x05b00808,0x0d009208,0x00140000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400000,0x00080030,0x00000000,0x00000000,0x10010000, +0x0401e000,0x00000000,0x00000000,0x805fa000,0x0cdbffc0,0x000008b6,0x14000000,0x503000c0, +0x00c22800,0x00000000,0x000c0000,0x000000c0,0x00000000,0x00000000,0x00000000,0x00120000, +0x68003100,0x00043400,0x21800000,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00006800,0x00060008,0x000000d4,0x00000000,0x30000000,0x00000001,0x00000000,0x003c1000, +0x00006800,0xe4179a00,0x00000500,0x00000000,0x00000000,0x00003c80,0x00000000,0x00000000, +0x3cffef40,0x028028b0,0x662a6810,0x0aa03050,0x00000b60,0x00480000,0x000000b2,0x00000000, +0x00000000,0x902210d0,0x00000000,0x0063d006,0x08000214,0x82000320,0x48002207,0x00342000, +0x20000400,0x00000000,0x00000000,0x00000000,0x00002e50,0x09001a00,0x00300000,0x00000000, +0x00180000,0x00800000,0x00000000,0x28800000,0x24002c50,0x00000004,0x07000000,0x01090000, +0x00000000,0x00000000,0x00000000,0x00000000,0xc0d3fef6,0x058b595e,0x00066e44,0x00604008, +0x00000140,0x00000000,0x28001000,0x000000d1,0x00000000,0x9022a964,0x00000000,0x00000401, +0x00002000,0x80000000,0x00000207,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00000f40,0x50c82000,0x000000c0,0x00000000,0x00000000,0x00200000,0x00000000,0x59400f04, +0x00006804,0x00000000,0x00000000,0x00000000,0x38000400,0x00000001,0xc8000000,0x805fa006, +0x8cfffff7,0x028008a0,0x0400480e,0x10000000,0x010a6808,0x00000000,0x000010b2,0x0e000000, +0x00000000,0x902100f0,0x00000000,0x00120002,0x00000100,0x80000000,0x00000286,0x02000000, +0x00000000,0x04800000,0x00000000,0x00000000,0x34180010,0x50000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x28800000,0x00006830,0x00112050,0x07000000,0x00000000, +0x0521a400,0x00000000,0x00000000,0x00000000,0xd2dfff80,0x060f6123,0x84000800,0x00000000, +0x008a4800,0x00000000,0x02001000,0x00000000,0x00000000,0x90229964,0x00000000,0x00000001, +0x00000000,0x80000000,0x00000206,0x10000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x34180000,0x50000000,0x00000000,0x00000000,0x00000000,0x00286000,0x00000000,0x614003c8, +0x00004810,0x0012120c,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x805fa000, +0x00fffff9,0x04c04404,0x14000000,0x0a800000,0x00060020,0x00000000,0x00001000,0x00000000, +0x00000000,0x90209020,0x00000000,0x00000000,0x00000200,0x80000000,0x00000287,0x10000000, +0x00004800,0xc8000000,0x00000143,0x00000000,0x34180540,0x00000000,0x00001600,0x00000000, +0x00000000,0x09002000,0x00000000,0x4c912408,0x00002800,0x00100098,0x00000000,0x00000000, +0x01204400,0x00000000,0x28000000,0x00000007,0x92ebff80,0x03c03c06,0x47b80f44,0x00000306, +0x4000000c,0x00000001,0x000001b2,0x00020000,0x00001c00,0x90229964,0x00000000,0x001a0031, +0x00000700,0x81100400,0x18002306,0x10030000,0x04001000,0x40000080,0x00000143,0x00000000, +0x34040000,0x00000150,0x001b00d6,0x00800000,0xb86c8000,0x00200a80,0x00000000,0x3d400000, +0x17a06810,0x001212d2,0x07000400,0x10000000,0x0521a001,0x00000000,0x00000003,0x805fa000, +0x0efbefba,0x068044a0,0x04082800,0x00000001,0x20026c40,0x00080001,0x003641b2,0x00000000, +0x00000000,0x902260d0,0x00000000,0x00120800,0x280000c4,0x9a000000,0x00000286,0x7a000000, +0x2000c400,0x40000400,0x00000183,0x00000000,0x24180020,0x00000001,0x00260030,0x00100000, +0xa8000002,0x04000600,0x00000000,0x68800f44,0x00002800,0x00120000,0x07000000,0x00010e00, +0x8481a000,0xc0001184,0x0000000d,0x00000000,0xbdfbfffb,0x04406806,0x03300d64,0x00081008, +0xc8010030,0x00000001,0x003641b2,0x00060000,0x00001c00,0x902290d0,0x00000000,0x001a0c02, +0x00040800,0x811d0000,0x20000286,0x14000000,0x20002c00,0x40000080,0x00000183,0x00000000, +0x14104804,0x00000000,0x001a80d8,0x00000000,0xf86c8002,0x04000000,0x00000000,0x44be1e84, +0x00080010,0x40000008,0x070008a0,0x00000e00,0x2d21a000,0x00000002,0x0000000a,0x00000000, +0x40fbffc0,0x06404404,0x14000640,0xd8800003,0x20012800,0x00400000,0x003641b2,0x00066000, +0x00000000,0x902290d0,0x00000000,0x12035202,0x00002000,0x82000000,0x48000686,0x0c000000, +0x20001400,0x40080000,0x00000183,0x00000000,0x03284d48,0x008a0150,0x000000d4,0x00800000, +0x00000010,0x10000000,0x00000000,0x64bd1000,0x24040770,0xd2000390,0x07000000,0x00010e00, +0x0521a000,0x40001404,0x0000000d,0x00000000,0x9afbffc0,0x04ce0114,0x00020660,0x00580306, +0x68006804,0x00000000,0x000001b2,0x0e020000,0x00001c00,0x902260d0,0x00000000,0x000a0400, +0x002000d4,0x9a000000,0x00002286,0x120000a0,0x00001c00,0x40080000,0x00000143,0x00000000, +0x17a06804,0x10000a01,0x000c00d9,0x00800000,0xf06c8164,0x10000c00,0x00000000,0x4c800000, +0x14040800,0x0e001208,0x070006e1,0x00010000,0x04c1a000,0x80000000,0x00000003,0x00000000, +0xfdfbfffe,0x03804fe4,0x00000800,0x08801040,0x00002803,0x00400000,0x000030b2,0x0006a000, +0x00000000,0x902290d0,0x00000000,0x081b9d02,0x4d400000,0x80070220,0x1b802286,0x480000a0, +0x20009800,0x40000080,0x00000143,0x00000000,0x262c0030,0x10a80194,0x001a80c5,0x00100000, +0x00000000,0x10000b00,0x00000000,0x38800000,0x001a0000,0x700000de,0x07000000,0x20000000, +0xc521a000,0x40000003,0x00000000,0x00000000,0x93fbfffe,0x04803802,0x00000770,0x9a80c0c6, +0x10008004,0x00000000,0x283651b2,0x0e000060,0x00000000,0x902290d0,0x00000000,0x00000006, +0x00080800,0x83d00000,0x20002306,0x44000070,0x0000dc00,0x40000400,0x00000183,0x00000000, +0x00066d60,0x05008150,0x00260112,0x00800000,0x00000364,0x10000000,0x00000000,0x48be1e44, +0x14002800,0x8000000e,0x07000200,0x20080e00,0x04c1a000,0xc0003804,0x00000003,0x00000000, +0x80fbefc0,0x02900184,0x04020020,0xd8a05000,0x70002f40,0x80080001,0x283641b2,0x0e000061, +0x00001c00,0x902110f0,0x00000000,0x20215800,0x00040037,0x8a082400,0x13800686,0x54000000, +0x00000000,0x40000000,0x00000143,0x00000000,0x26242834,0x05008002,0x00260000,0x00000000, +0xc02c8164,0x10001001,0x00000000,0x28800000,0x02200004,0x72001200,0x07000000,0x00010e00, +0x0521a001,0x00000000,0x0000000b,0x00000000,0x8003ffc0,0x00002802,0x00004800,0x50600000, +0x78000444,0x80000001,0x00364000,0x0003c000,0xfffe0000,0x000110f3,0x00000000,0x18620106, +0x07403014,0x82000220,0x00002286,0x6a300a00,0xa8000000,0x40000090,0x00000183,0x00000000, +0x34040544,0x00020001,0x001a8060,0x00000000,0x00000000,0x00001000,0x00000000,0x003f1e04, +0x00002800,0x241000d0,0x00000401,0x00080e00,0xc521a000,0x80004003,0x0000000a,0x00000000, +0x9103ffc0,0x0000e4ef,0x02a00648,0x1ec08308,0x00000548,0x00080000,0x00364001,0x0e03c000, +0x00000000,0x000260d0,0x00000000,0x00015000,0x280000f4,0x800d0000,0x13802206,0x60300a80, +0x0000e400,0x40000080,0x00080143,0x00000000,0x36be2f44,0x00000000,0x00000060,0x00800000, +0x00004364,0x00000000,0x00000000,0x00000e44,0x00000804,0x0000000c,0x00000400,0x10000e00, +0x3a21a000,0x80001381,0x00000008,0x00000000,0xb803ffc0,0x0e404bf3,0x02a80808,0x1aa00000, +0xe8004830,0x00080001,0x18000001,0x0e0400e0,0x00001c00,0x000690d0,0x00000000,0xb8600000, +0x08100003,0x80000000,0x00000286,0x5e3000b0,0x0000b800,0x40000000,0x00000143,0x00000000, +0x001e0544,0x00000150,0x00020170,0x00800000,0xc02c8364,0x00000c01,0x00000000,0xf4400000, +0x02200020,0x00000000,0x00000000,0x20080000,0x4221a000,0xc0004200,0x0000000e,0x00000000, +0x80ffffc0,0x0000e936,0x00024800,0x0c801044,0x88010764,0x00000001,0x003640b2,0x0e03a000, +0x00021c00,0x000110d0,0x00000000,0x18000100,0x0540a234,0x81901628,0x00000306,0x58030000, +0x2000ec00,0x40000090,0x00000183,0x00000000,0x34a80644,0x09000000,0x00040020,0x00800000, +0x006c8364,0x00000c00,0x00000000,0x00000000,0x00004800,0x52001a08,0x07000400,0x00000e00, +0xc421a001,0xc0000003,0x00000000,0x00000000,0x4affffc0,0x0514400f,0x44004808,0x00680800, +0x30018800,0x00080001,0x003641b2,0x0e046000,0x00000000,0x90209020,0x00000000,0xa8000030, +0x000008c2,0x9a000002,0x00002286,0x66000054,0x0001fc00,0x40000080,0x00000143,0x00000000, +0x03a60008,0x05cc0000,0x00000030,0x00800000,0x80000364,0x00800601,0x00000000,0x50902000, +0x34082800,0xf0001a0c,0x07000000,0x00000e00,0x0481a000,0xc0000400,0x0000000c,0x00000000, +}; + +/* data */ +static unsigned long srp_fw_data[] = { +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x80050000,0x000a800f,0x001e801b,0x80110014,0x00368033, +0x8039003c,0x802d0028,0x00228027,0x00668063,0x8069006c,0x807d0078,0x00728077,0x80550050, +0x005a805f,0x004e804b,0x80410044,0x00c680c3,0x80c900cc,0x80dd00d8,0x00d280d7,0x80f500f0, +0x00fa80ff,0x00ee80eb,0x80e100e4,0x80a500a0,0x00aa80af,0x00be80bb,0x80b100b4,0x00968093, +0x8099009c,0x808d0088,0x00828087,0x01868183,0x8189018c,0x819d0198,0x01928197,0x81b501b0, +0x01ba81bf,0x01ae81ab,0x81a101a4,0x81e501e0,0x01ea81ef,0x01fe81fb,0x81f101f4,0x01d681d3, +0x81d901dc,0x81cd01c8,0x01c281c7,0x81450140,0x014a814f,0x015e815b,0x81510154,0x01768173, +0x8179017c,0x816d0168,0x01628167,0x01268123,0x8129012c,0x813d0138,0x01328137,0x81150110, +0x011a811f,0x010e810b,0x81010104,0x03068303,0x8309030c,0x831d0318,0x03128317,0x83350330, +0x033a833f,0x032e832b,0x83210324,0x83650360,0x036a836f,0x037e837b,0x83710374,0x03568353, +0x8359035c,0x834d0348,0x03428347,0x83c503c0,0x03ca83cf,0x03de83db,0x83d103d4,0x03f683f3, +0x83f903fc,0x83ed03e8,0x03e283e7,0x03a683a3,0x83a903ac,0x83bd03b8,0x03b283b7,0x83950390, +0x039a839f,0x038e838b,0x83810384,0x82850280,0x028a828f,0x029e829b,0x82910294,0x02b682b3, +0x82b902bc,0x82ad02a8,0x02a282a7,0x02e682e3,0x82e902ec,0x82fd02f8,0x02f282f7,0x82d502d0, +0x02da82df,0x02ce82cb,0x82c102c4,0x02468243,0x8249024c,0x825d0258,0x02528257,0x82750270, +0x027a827f,0x026e826b,0x82610264,0x82250220,0x022a822f,0x023e823b,0x82310234,0x02168213, +0x8219021c,0x820d0208,0x02028207,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00007d00,0x0000fa00,0x00017700,0x0001f400,0x00027100,0x0002ee00,0x00036b00, +0x0003e800,0x00046500,0x0004e200,0x00055f00,0x0005dc00,0x00065900,0x0006d600,0x00000000, +0x00007d00,0x0000bb80,0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580,0x0001f400, +0x00027100,0x0002ee00,0x00036b00,0x0003e800,0x0004e200,0x0005dc00,0x00000000,0x00007d00, +0x00009c40,0x0000bb80,0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580,0x0001f400, +0x00027100,0x0002ee00,0x00036b00,0x0003e800,0x0004e200,0x00000000,0x00007d00,0x0000bb80, +0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580,0x0001f400,0x00023280,0x00027100, +0x0002af80,0x0002ee00,0x00036b00,0x0003e800,0x00000000,0x00001f40,0x00003e80,0x00005dc0, +0x00007d00,0x00009c40,0x0000bb80,0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580, +0x0001f400,0x00023280,0x00027100,0x0000ac44,0x0000bb80,0x00007d00,0x00100200,0x00000002, +0x02000000,0x00020014,0x00000100,0x00180100,0x00000001,0x01000001,0x0001001a,0x00010001, +0x01040401,0x01000004,0x04010100,0x00040108,0x01010000,0x01020401,0x00010004,0x04010100, +0x01040101,0x01000000,0x01000101,0x00000001,0x01010100,0x00010100,0x01000000,0x01000101, +0x00000001,0x01010100,0x00010100,0x01000000,0x01000101,0x00000001,0x01010100,0x00010100, +0x01000000,0x01000101,0x00000001,0x01010100,0x00010100,0x01000000,0x010d0201,0x01000102, +0x02010101,0x0102010f,0x01010101,0x010b0201,0x00010102,0x02010101,0x01020107,0x01000101, +0x010e0201,0x01010002,0x02010101,0x0002010a,0x01010001,0x01090101,0x00000101,0x01010101, +0x01010109,0x01010000,0x01060101,0x01010001,0x01010100,0x0001010c,0x01010100,0x01050101, +0x01000101,0x01010100,0x01010103,0x01000001,0x010f0401,0x01010104,0x04010101,0x01040107, +0x01000101,0x010b0401,0x00010104,0x04010101,0x01040103,0x01000001,0x010d0401,0x01000104, +0x04010101,0x01040105,0x01000100,0x01090401,0x00000104,0x04010101,0x01040101,0x01000000, +0x010e0401,0x01010004,0x04010101,0x00040106,0x01000101,0x010a0401,0x00010004,0x04010101, +0x00040102,0x01000001,0x010c0401,0x01000004,0x04010101,0x00040104,0x01000100,0x01080401, +0x00000004,0x04010101,0x00040100,0x01000000,0x00000001,0x10311131,0x01210121,0x00110011, +0x00110011,0x11310830,0x01311031,0x00110011,0x00110011,0x20312231,0x21212121,0x12211221, +0x02210221,0x01310830,0x11211121,0x10211021,0x00210021,0x20312231,0x21212121,0x12211221, +0x02210221,0x11310840,0x01311031,0x00110011,0x00110011,0x23411810,0x13311331,0x30413141, +0x22410341,0x21312131,0x12311231,0x20312031,0x02310231,0x32113311,0x18101030,0x21411a10, +0x02411241,0x10311031,0x11211121,0x11211121,0x01310131,0x00310031,0x30313331,0x32213221, +0x23212321,0x03210321,0x13113111,0x20112211,0x20401040,0x11413020,0x10311031,0x01310131, +0x00110011,0x00110011,0x00110011,0x00110011,0x38103420,0x51413a10,0x3c101541,0x3e100541, +0x24414241,0x41314131,0x14311431,0x04310431,0x32414041,0x30412341,0x31313131,0x13311331, +0x03310331,0x22312231,0x21212121,0x21212121,0x12111211,0x02212021,0x54215521,0x35214521, +0x44115311,0x25115211,0x43115011,0x33113411,0x20401040,0x12412141,0x11211121,0x11211121, +0x10311031,0x01310131,0x00210021,0x00210021,0x38203030,0x51413c10,0x3e101541,0x42414010, +0x41412441,0x14311431,0x04414041,0x23413241,0x13413141,0x03413041,0x22212221,0x22212221, +0x20212021,0x20212021,0x02210221,0x02210221,0x45315531,0x54215421,0x35113511,0x35113511, +0x44215321,0x52115211,0x50112511,0x34114311,0x33110511,0x20301040,0x2c202820,0x21413010, +0x02411241,0x11311131,0x10311031,0x01310131,0x00310031,0x53413210,0x34103541,0x52414441, +0x51412541,0x15311531,0x43314331,0x34313431,0x40410541,0x24314231,0x04313331,0x41214121, +0x14211421,0x23213221,0x31113111,0x13111311,0x03213021,0x20112211,0x54115511,0x50114511, +0x20401040,0x11413020,0x10311031,0x01310131,0x00110011,0x00110011,0x00110011,0x00110011, +0x3c203430,0x48104030,0x4e204a20,0x71415220,0x56101741,0x5c205820,0x16416141,0x60100641, +0x64106210,0x14414141,0x32410441,0x30412341,0x31313131,0x13311331,0x03310331,0x22312231, +0x12212121,0x02212021,0x76317731,0x75316731,0x66315731,0x74217421,0x65214721,0x73215621, +0x37213721,0x64216421,0x45315531,0x36213621,0x27117211,0x70214621,0x07110711,0x26112611, +0x53215421,0x60116011,0x44213521,0x62116311,0x25215221,0x51115111,0x15111511,0x34214321, +0x05115011,0x24114211,0x40113311,0x20401040,0x40303040,0x48102141,0x11311131,0x10311031, +0x01310131,0x00210021,0x00210021,0x4e304a20,0x5a105620,0x72415c20,0x60102741,0x17311731, +0x07417141,0x36416341,0x62100641,0x51416410,0x26312631,0x60416241,0x61316131,0x16311631, +0x43411541,0x66100541,0x24414241,0x14414141,0x04414041,0x32313231,0x23312331,0x31213121, +0x31213121,0x13211321,0x13211321,0x03313031,0x22212221,0x12111211,0x12111211,0x02112011, +0x76217721,0x57216721,0x66216621,0x74217421,0x47214721,0x55317531,0x56216521,0x73117311, +0x64113711,0x45215421,0x35215321,0x70114611,0x52114411,0x50112511,0x33113411,0x20401040, +0x40203040,0x4c104430,0x12412141,0x00414e10,0x11311131,0x10311031,0x01310131,0x54105020, +0x58105610,0x73416541,0x72415a10,0x64412741,0x71414641,0x5c101741,0x36416341,0x45415441, +0x5e104441,0x62316231,0x26312631,0x16311631,0x06416141,0x35415341,0x25415241,0x51315131, +0x15311531,0x43314331,0x34313431,0x40410541,0x42314231,0x24312431,0x41314131,0x14213321, +0x23213221,0x30310431,0x03210321,0x31113111,0x31113111,0x22111311,0x02112011,0x76217721, +0x67116711,0x57117511,0x74116611,0x56114711,0x55113711,0x07117011,0x50116011,0x20404040, +0x31314141,0x11111111,0x11111111,0x40404040,0x30304040,0x30303030,0x10302010,0x20202020, +0x10101041,0x41411020,0x41101010,0x41413131,0x31314141,0x31313131,0x31313131,0x21212121, +0x30404040,0x20302020,0x20202010,0x41412020,0x10101041,0x41411041,0x10101010,0x41411010, +0x41414110,0x41101041,0x31314110,0x41414141,0x41414141,0x31313131,0x31313131,0x31314141, +0x41413131,0x41413131,0x31314141,0x41413131,0x41413131,0x41413131,0x41413131,0x21212121, +0x21212121,0x31313131,0x31313131,0x21212121,0x21212121,0x21213131,0x21213131,0x31313131, +0x21212121,0x21213131,0x31312121,0x31313131,0x21211111,0x21212121,0x11113131,0x11111111, +0x11112121,0x21211111,0x21212121,0x21212121,0x11111111,0x21211111,0x11111111,0x11111111, +0x41301111,0x41414141,0x41414141,0x31311041,0x41413131,0x31313131,0x31313131,0x31313131, +0x31313131,0x31313131,0x31314141,0x21214141,0x21212121,0x31313131,0x21212121,0x21212121, +0x21212121,0x31312121,0x11112121,0x11112121,0x11112121,0x11112121,0x11112121,0x11112121, +0x21211111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, +0x21213131,0x11111111,0x00001111,0x40404040,0x20303040,0x31311010,0x31314141,0x40404040, +0x40303040,0x30303030,0x20303020,0x20202020,0x20202020,0x20101010,0x10201010,0x10411010, +0x10101010,0x41414141,0x10101010,0x41414141,0x41104141,0x41414141,0x41104141,0x41413131, +0x31313131,0x31313131,0x31314141,0x31313131,0x31312121,0x21212121,0x21213131,0x11112121, +0x11111111,0x10411010,0x10411010,0x41414141,0x41414141,0x41414141,0x41414141,0x41414141, +0x10414141,0x31313131,0x41414141,0x31313131,0x31313131,0x31313131,0x31314141,0x31313131, +0x31313131,0x31313131,0x41413131,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131, +0x31313131,0x31313131,0x31313131,0x41413131,0x31313131,0x31313131,0x31312121,0x31313131, +0x21212121,0x21213131,0x21212121,0x31312121,0x21212121,0x21212121,0x31312121,0x21212121, +0x21212121,0x31312121,0x21211111,0x21212121,0x21212121,0x11112121,0x21212121,0x21211111, +0x21211111,0x21212121,0x11112121,0x11111111,0x21211111,0x11111111,0x11111111,0x11112121, +0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, +0x11111111,0x11111111,0x20404040,0x31314141,0x11111111,0x11111111,0x41203030,0x41401020, +0x40414110,0x40404040,0x30303040,0x30303030,0x20102020,0x10411020,0x41101010,0x41411041, +0x31313131,0x31314141,0x21212121,0x31313131,0x31313131,0x31312121,0x21213131,0x21212121, +0x11112121,0x11111111,0x11111111,0x21211111,0x30402121,0x11113030,0x10202020,0x20102020, +0x41202020,0x10101010,0x41101010,0x41101010,0x10414110,0x41413131,0x41414141,0x31311041, +0x41414141,0x41413131,0x41414141,0x31314141,0x31314141,0x31313131,0x41413131,0x41414141, +0x31314141,0x31314141,0x31314141,0x31314141,0x31314141,0x21212121,0x31312121,0x31313131, +0x21212121,0x21213131,0x31312121,0x31313131,0x21213131,0x21213131,0x21212121,0x21213131, +0x31312121,0x21212121,0x21213131,0x11111111,0x21211111,0x21212121,0x11111111,0x11112121, +0x11112121,0x11111111,0x11111111,0x10411111,0x31313131,0x21214141,0x31312121,0x21213131, +0x31312121,0x21212121,0x31313131,0x31312121,0x11112121,0x11111111,0x21212121,0x21212121, +0x11112121,0x21212121,0x21211111,0x11111111,0x21212121,0x11111111,0x11112121,0x11112121, +0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x00001111,0x41404040, +0x40404040,0x20304040,0x41414141,0x41414141,0x41414141,0x41413131,0x31313131,0x31314141, +0x31313131,0x31313131,0x31313131,0x31313131,0x31313131,0x41413131,0x30303030,0x30303040, +0x20202020,0x20202020,0x20203020,0x30203020,0x10202010,0x10101020,0x10101010,0x10101010, +0x10101010,0x10201010,0x41104120,0x41414141,0x41414141,0x41414141,0x41414110,0x10414141, +0x41413131,0x31313131,0x31313131,0x41413131,0x31313131,0x21212121,0x21212121,0x21213131, +0x11111111,0x21211111,0x11111111,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131, +0x31313131,0x31313131,0x31313131,0x31313131,0x31314141,0x21212121,0x21213131,0x21212121, +0x31312121,0x21212121,0x21212121,0x21213131,0x21212121,0x21212121,0x21212121,0x21212121, +0x21212121,0x21212121,0x21212121,0x21212121,0x21212121,0x21212121,0x21213131,0x21212121, +0x21212121,0x21212121,0x21213131,0x21213131,0x21211111,0x21212121,0x21213131,0x21211111, +0x21211111,0x11112121,0x11112121,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, +0x11111111,0x11111111,0x11111111,0x11111111,0x11112121,0x21211111,0x11111111,0x00001111, +0x00200010,0x00400030,0x00100011,0x00010001,0x00000000,0x00000000,0x00000000,0x00000000, +0x00540044,0x00740064,0x00940084,0x00ac00a4,0x00bc00b4,0x00cc00c4,0x00d600d4,0x00e200da, +0x00e800e4,0x00f000ec,0x00f40018,0x00f800f6,0x00fe00fa,0x00150051,0x01020100,0x00410104, +0x00140014,0x00040040,0x00230032,0x00310031,0x00130013,0x00300030,0x00030003,0x00220022, +0x00120021,0x00020020,0x01160106,0x01360126,0x0142013e,0x014e0146,0x01540152,0x015c0158, +0x01640160,0x001f00f1,0x0168000f,0x016c016a,0x016e002e,0x001e00e1,0x01720170,0x01760174, +0x017a0178,0x00d3006c,0x00d2017c,0x00d1002d,0x017e007b,0x003c0180,0x00b40182,0x001d001d, +0x000d00d0,0x008a00a8,0x004c00c4,0x006b00b6,0x00c300c3,0x00c200c2,0x002c002c,0x00b500b5, +0x0098005b,0x00c100c1,0x001c001c,0x00c00089,0x000c000c,0x00a6004b,0x0097006a,0x00b300b3, +0x003b003b,0x00a50088,0x00b200b2,0x0096005a,0x004a004a,0x00780087,0x00490049,0x00670077, +0x002b002b,0x002b002b,0x00b100b1,0x001b001b,0x000b00b0,0x00a40069,0x003a00a3,0x00590095, +0x00a200a2,0x002a002a,0x00a100a1,0x001a001a,0x008600a0,0x000a000a,0x00940068,0x00390039, +0x00850093,0x00760058,0x00920092,0x00290029,0x00570075,0x00830083,0x00380038,0x00740066, +0x00650047,0x00370056,0x00190091,0x00090090,0x00480084,0x00270027,0x00460064,0x00820082, +0x00820082,0x00810028,0x00720073,0x00710071,0x00170017,0x00700055,0x00630007,0x00540036, +0x00620045,0x00530026,0x00080080,0x00160061,0x00060060,0x00440035,0x00520052,0x00500025, +0x00340043,0x00420005,0x00330024,0x00ff0184,0x00fd00fe,0x00fc00ee,0x00fb00ed,0x00ec00bf, +0x018c00cd,0x00ce00ce,0x00dd00dd,0x00dc00af,0x00eb00eb,0x00be00be,0x00f900f9,0x009f009f, +0x00ae00ae,0x00db00db,0x00bd00bd,0x00f800f8,0x008f008f,0x00cc00cc,0x00e900ea,0x00e800e8, +0x00e700f7,0x007f007f,0x007f007f,0x00ad00ad,0x00cb00da,0x006f00bc,0x00f600f6,0x00f5008e, +0x009d00d9,0x007e005f,0x00bb00ca,0x00f400f4,0x004f004f,0x006e00ac,0x003f003f,0x00f300f3, +0x008d00d8,0x002f00f2,0x00c900e6,0x00f000f0,0x00e5009c,0x00ba00ba,0x007d00d7,0x00e400e4, +0x006d008c,0x00e300e3,0x009b009b,0x00aa00b9,0x005e00ab,0x00c8004e,0x003e00d6,0x00e000e2, +0x00d5000e,0x00c7005d,0x00d4007c,0x008b00b8,0x00a9004d,0x00c6009a,0x00b7003d,0x005c00c5, +0x00a70099,0x0079007a,0x00cf00ef,0x00df00df,0x00de00de,0x00de00de,0x009e00fa,0x00200010, +0x00400030,0x00600050,0x00700068,0x00760074,0x00110011,0x00010010,0x00000000,0x00880078, +0x00a80098,0x00c800b8,0x00d800d0,0x00f000e8,0x010000f8,0x010c0108,0x011c0114,0x01240120, +0x012c0128,0x01340130,0x013c0138,0x01420140,0x01460144,0x014c014a,0x0152014e,0x01560154, +0x01580019,0x015c015a,0x0160015e,0x00280082,0x00180081,0x01640162,0x01680166,0x00270072, +0x00710046,0x00170055,0x0063016a,0x00540036,0x00620045,0x00610026,0x0053016c,0x00160016, +0x00440035,0x00520052,0x00250025,0x00510051,0x00150015,0x00050050,0x00430043,0x00420034, +0x00330024,0x00140014,0x00400041,0x00320032,0x00230023,0x00300004,0x00310031,0x00030013, +0x00220022,0x00120021,0x00020020,0x0170016e,0x017200ee,0x01760174,0x017800bf,0x00fa00dd, +0x00eb00af,0x00dc00be,0x00f900cd,0x00ae009f,0x00bd00db,0x008f00f8,0x00e900cc,0x00f7009e, +0x00da007f,0x00cb00ad,0x017a00f6,0x00bc00bc,0x006f006f,0x008e00e8,0x00d900f5,0x005f005f, +0x00e700e7,0x007e007e,0x00ca00ca,0x00ac00ac,0x00bb00bb,0x00d8009d,0x00f400f4,0x004f004f, +0x00f300f3,0x003f003f,0x008d008d,0x006e006e,0x00f200f2,0x002f002f,0x000f00e6,0x00f100f1, +0x001f001f,0x00c900c9,0x009c009c,0x00ba00e5,0x005e00ab,0x007d00d7,0x004e00e4,0x008c00c8, +0x00d600e3,0x003e006d,0x009b00b9,0x00e200e2,0x00aa00aa,0x002e002e,0x00e100e1,0x001e001e, +0x000e00e0,0x00d500d5,0x005d005d,0x007c00c7,0x00b800d4,0x004d004d,0x00a9008b,0x00c6009a, +0x00d3006c,0x003d003d,0x002d002d,0x00d000d2,0x00d100d1,0x00b700b7,0x007b007b,0x001d001d, +0x000d00c5,0x005c005c,0x00a800a8,0x00c4008a,0x00b6004c,0x006b006b,0x00c00099,0x00c300c3, +0x003c003c,0x00a700a7,0x007a007a,0x006a006a,0x00b0000c,0x002c002c,0x00b500c2,0x00c1005b, +0x00890098,0x00b4001c,0x00a6004b,0x009700b3,0x003b003b,0x00880079,0x00a500b2,0x002b002b, +0x00b1005a,0x001b001b,0x0096000b,0x00a40069,0x0087004a,0x00a30078,0x003a003a,0x00590095, +0x002a00a2,0x001a00a1,0x000a00a0,0x00860086,0x00940068,0x00930049,0x00390039,0x00900077, +0x00580085,0x00760092,0x00290067,0x00090091,0x00480084,0x00570075,0x00380083,0x00740066, +0x00800047,0x00650008,0x00730056,0x00640037,0x00070070,0x00060060,0x00fe00ff,0x00fd00ef, +0x00fc00df,0x00ed00cf,0x00fb00de,0x00ce00ec,0x00f000ea,0x00200010,0x00400030,0x00100011, +0x00010001,0x00000000,0x00000000,0x00000000,0x00000000,0x004c0044,0x00ff0054,0x005c0058, +0x002f005e,0x00f1006e,0x0070001f,0x00900080,0x00b000a0,0x00d000c0,0x00e000d8,0x00f000e8, +0x010000f8,0x010c0108,0x01120110,0x011a0116,0x011c0015,0x0120011e,0x00410122,0x01240014, +0x00230032,0x00310031,0x00130013,0x00030030,0x00220022,0x00120021,0x00020020,0x00ef00fe, +0x00df00fd,0x00cf00fc,0x00bf00fb,0x00fa00fa,0x00f900af,0x008f009f,0x00f800f8,0x007f00f7, +0x006f00f6,0x005f00f5,0x00f400f4,0x003f004f,0x000f000f,0x000f000f,0x000f000f,0x000f000f, +0x00f300f3,0x00f300f3,0x01360126,0x0146013e,0x00f000f2,0x0152014e,0x015a0156,0x0160015c, +0x01660164,0x016e016a,0x003e0172,0x01780176,0x017c017a,0x0180017e,0x00d00182,0x01860184, +0x00c30188,0x00c1018a,0x018c000c,0x002e002e,0x00e100e2,0x00d2003d,0x001d002d,0x018e00b3, +0x00d100d1,0x00b6004c,0x007a003c,0x00c200c2,0x005b002c,0x00c0001c,0x004b00b4,0x006a00a6, +0x003b003b,0x005a00a5,0x00b200b2,0x002b002b,0x00b100b1,0x001b001b,0x000b00b0,0x00690096, +0x004a00a4,0x00780087,0x003a003a,0x009500a3,0x00a200a2,0x00860059,0x001a001a,0x00770068, +0x00490049,0x00750094,0x00760076,0x002a002a,0x002a002a,0x00a100a1,0x000a00a0,0x00390093, +0x00580085,0x00920092,0x00290029,0x00900067,0x00910091,0x00190019,0x00840009,0x00570048, +0x00380083,0x00820066,0x00280028,0x00470074,0x00810081,0x00180018,0x00080008,0x00650080, +0x00730073,0x00370037,0x00640056,0x00720072,0x00270027,0x00550046,0x00700070,0x00710071, +0x00710071,0x00170017,0x00630007,0x00540036,0x00620045,0x00610026,0x00160016,0x00060060, +0x00350035,0x00440053,0x00250052,0x00500051,0x00340043,0x00420005,0x00330024,0x00040040, +0x019000ec,0x00ed00ed,0x009e009e,0x009d00ae,0x00ee00ee,0x00ee00ee,0x00de00de,0x00be00be, +0x00eb00eb,0x00dc00dc,0x00bd00cd,0x00ea00ea,0x00cc00cc,0x00ad00da,0x00ca00e7,0x00ac00ac, +0x00d7009c,0x00e500e5,0x00db00db,0x00db00db,0x00e900e9,0x00bc00cb,0x008e00e8,0x007e00d9, +0x00d800bb,0x00e6008d,0x00c9006e,0x00ab00ba,0x007d005e,0x00e400e4,0x00c8004e,0x00e3008c, +0x00d600d6,0x00b9006d,0x00aa009b,0x001e001e,0x004d004d,0x009a008b,0x00b700b7,0x000d007b, +0x000e00e0,0x005d00d5,0x007c00c7,0x00b800d4,0x00c600a9,0x00d3006c,0x005c00c5,0x008a00a8, +0x00c40099,0x00a7006b,0x009800b5,0x00970089,0x00880079,0x00dd00ce,0x00200010,0x00ff0030, +0x00500040,0x00700060,0x00900080,0x00a800a0,0x00100011,0x00000001,0x00ef00fe,0x00df00fd, +0x00cf00fc,0x00bf00fb,0x00af00af,0x00f900fa,0x009f009f,0x008f008f,0x00f700f8,0x007f007f, +0x00f600f6,0x006f006f,0x00f500f5,0x005f005f,0x00f400f4,0x004f004f,0x00f300f3,0x003f003f, +0x00f200f2,0x002f002f,0x001f001f,0x000f00f1,0x00b400ac,0x00c400bc,0x00dc00cc,0x00ec00e4, +0x00f800f4,0x010000fc,0x01080104,0x0110010c,0x01180114,0x01240120,0x012c0128,0x01380134, +0x01420140,0x014a0146,0x0150014c,0x01540152,0x01580156,0x015c015a,0x0160015e,0x01640162, +0x01680166,0x016c016a,0x0170016e,0x01760172,0x00370178,0x0027017c,0x00460064,0x00170055, +0x00360063,0x00450054,0x00260062,0x00160061,0x0053017e,0x00440035,0x00250052,0x01800051, +0x00150015,0x00340043,0x00420042,0x00240024,0x00330033,0x00410041,0x00140014,0x00040040, +0x00320032,0x00230023,0x00310031,0x00310031,0x00130013,0x00130013,0x00030030,0x00220022, +0x00210021,0x00210021,0x00120012,0x00020020,0x00f000f0,0x00f000f0,0x00ed00ee,0x00ec00de, +0x00dd00ce,0x00be00eb,0x00cd00dc,0x00ae00ea,0x00bd00db,0x00e900cc,0x00da009e,0x00cb00ad, +0x00e800bc,0x00d9008e,0x00e7009d,0x00ca007e,0x00ac00ac,0x00bb00bb,0x00d800d8,0x008d008d, +0x000e00e0,0x00d000d0,0x006e006e,0x006e006e,0x00c900e6,0x009c009c,0x00e500e5,0x00ab00ab, +0x005e005e,0x00d700ba,0x007d007d,0x004e004e,0x00c800c8,0x008c008c,0x00e200e4,0x00e300e3, +0x006d00d6,0x00b9003e,0x00aa009b,0x00e1002e,0x00d5001e,0x00c7005d,0x00d4007c,0x008b00b8, +0x00a9004d,0x00c6009a,0x00d3006c,0x00d2003d,0x00d1002d,0x007b00b7,0x00c5001d,0x00a8005c, +0x0099008a,0x004c00c4,0x00b600b6,0x006b006b,0x00c0000d,0x00c300c3,0x00a7003c,0x00c2007a, +0x00b5002c,0x00c1005b,0x00890098,0x00b4001c,0x00b0000c,0x00b300b3,0x00a0000b,0x00a100a1, +0x004b004b,0x006a00a6,0x00970097,0x00790079,0x0090000a,0x00090009,0x0088003b,0x00a500b2, +0x002b002b,0x00b1005a,0x0096001b,0x004a0069,0x008700a4,0x00780078,0x003a00a3,0x00590095, +0x002a00a2,0x0086001a,0x00770068,0x00490094,0x00390093,0x00580085,0x00760092,0x00290067, +0x00190091,0x00480084,0x00570075,0x00380083,0x00820066,0x00810028,0x00470074,0x00180018, +0x00080080,0x00560065,0x00710071,0x00070070,0x00720073,0x00060060,0x00050050,0x00010610, +0x00010614,0x00010624,0x00010644,0x00010610,0x00010664,0x00010698,0x000106d0,0x00010750, +0x000107d4,0x00010840,0x0001090c,0x000109dc,0x00010a9c,0x00010610,0x00010c2c,0x00010da8, +0x00010da8,0x00010da8,0x00010da8,0x00010da8,0x00010da8,0x00010da8,0x00010da8,0x00010f3c, +0x00010f3c,0x00010f3c,0x00010f3c,0x00010f3c,0x00010f3c,0x00010f3c,0x00010f3c,0x00000000, +0x00000000,0x00000000,0x00000000,0x04030201,0x0d0a0806,0x07060504,0x0d0b0908,0x03030300, +0x04040300,0x04040404,0x04000404,0x04040404,0x04040404,0x04040404,0x04040404,0x000110c0, +0x00000000,0x000113dc,0x000116d4,0x000116d4,0x000116d4,0x000116d4,0x000116d4,0x000116d4, +0x000116d4,0x000116d4,0x000119f8,0x000119f8,0x000119f8,0x000119f8,0x000119f8,0x000119f8, +0x000119f8,0x000119f8,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xfffe3000,0x000d5000,0xffe35000,0x007f5000,0xfebdf000, +0x019ae000,0xf6d8f000,0x1251e000,0x09271000,0x019ae000,0x01421000,0x007f5000,0x001cb000, +0x000d5000,0x0001d000,0x00000000,0xfffe3000,0x000d5000,0xffe35000,0x007f5000,0xfebdf000, +0x019ae000,0xf6d8f000,0x1251e000,0x09271000,0x019ae000,0x01421000,0x007f5000,0x001cb000, +0x000d5000,0x0001d000,0xfffff000,0xfffe1000,0x000da000,0xffdf9000,0x007d0000,0xfea73000, +0x01747000,0xf6658000,0x124f0000,0x08b38000,0x01bde000,0x012b4000,0x0080f000,0x00191000, +0x000d0000,0x0001a000,0xfffff000,0xfffe1000,0x000da000,0xffdf9000,0x007d0000,0xfea73000, +0x01747000,0xf6658000,0x124f0000,0x08b38000,0x01bde000,0x012b4000,0x0080f000,0x00191000, +0x000d0000,0x0001a000,0xfffff000,0xfffdd000,0x000de000,0xffdbb000,0x007a0000,0xfe909000, +0x014a8000,0xf5f28000,0x12468000,0x083ff000,0x01dd8000,0x01149000,0x00820000,0x0015b000, +0x000ca000,0x00018000,0xfffff000,0xfffdd000,0x000de000,0xffdbb000,0x007a0000,0xfe909000, +0x014a8000,0xf5f28000,0x12468000,0x083ff000,0x01dd8000,0x01149000,0x00820000,0x0015b000, +0x000ca000,0x00018000,0xfffff000,0xfffda000,0x000e1000,0xffd7b000,0x00765000,0xfe7a3000, +0x011d1000,0xf5802000,0x12386000,0x07ccb000,0x01f9c000,0x00fdf000,0x00827000,0x00126000, +0x000c4000,0x00015000,0xfffff000,0xfffda000,0x000e1000,0xffd7b000,0x00765000,0xfe7a3000, +0x011d1000,0xf5802000,0x12386000,0x07ccb000,0x01f9c000,0x00fdf000,0x00827000,0x00126000, +0x000c4000,0x00015000,0xfffff000,0xfffd7000,0x000e3000,0xffd39000,0x0071e000,0xfe643000, +0x00ec0000,0xf50eb000,0x12249000,0x075a0000,0x0212c000,0x00e79000,0x00825000,0x000f4000, +0x000be000,0x00013000,0xfffff000,0xfffd7000,0x000e3000,0xffd39000,0x0071e000,0xfe643000, +0x00ec0000,0xf50eb000,0x12249000,0x075a0000,0x0212c000,0x00e79000,0x00825000,0x000f4000, +0x000be000,0x00013000,0xfffff000,0xfffd3000,0x000e4000,0xffcf5000,0x006cb000,0xfe4e9000, +0x00b77000,0xf49e7000,0x120b4000,0x06e81000,0x02288000,0x00d17000,0x0081b000,0x000c5000, +0x000b7000,0x00011000,0xfffff000,0xfffd3000,0x000e4000,0xffcf5000,0x006cb000,0xfe4e9000, +0x00b77000,0xf49e7000,0x120b4000,0x06e81000,0x02288000,0x00d17000,0x0081b000,0x000c5000, +0x000b7000,0x00011000,0xfffff000,0xfffcf000,0x000e4000,0xffcb0000,0x0066c000,0xfe399000, +0x007f5000,0xf42fa000,0x11ec7000,0x06772000,0x023b3000,0x00bbc000,0x00809000,0x00099000, +0x000b0000,0x00010000,0xfffff000,0xfffcf000,0x000e4000,0xffcb0000,0x0066c000,0xfe399000, +0x007f5000,0xf42fa000,0x11ec7000,0x06772000,0x023b3000,0x00bbc000,0x00809000,0x00099000, +0x000b0000,0x00010000,0xffffe000,0xfffcb000,0x000e3000,0xffc69000,0x005ff000,0xfe253000, +0x0043a000,0xf3c27000,0x11c83000,0x06076000,0x024ad000,0x00a67000,0x007f0000,0x0006f000, +0x000a9000,0x0000e000,0xffffe000,0xfffcb000,0x000e3000,0xffc69000,0x005ff000,0xfe253000, +0x0043a000,0xf3c27000,0x11c83000,0x06076000,0x024ad000,0x00a67000,0x007f0000,0x0006f000, +0x000a9000,0x0000e000,0xffffe000,0xfffc6000,0x000e0000,0xffc21000,0x00586000,0xfe11a000, +0x00046000,0xf3573000,0x119e9000,0x05991000,0x02578000,0x0091a000,0x007d1000,0x00048000, +0x000a1000,0x0000d000,0xffffe000,0xfffc6000,0x000e0000,0xffc21000,0x00586000,0xfe11a000, +0x00046000,0xf3573000,0x119e9000,0x05991000,0x02578000,0x0091a000,0x007d1000,0x00048000, +0x000a1000,0x0000d000,0xffffe000,0xfffc1000,0x000dd000,0xffbd8000,0x00500000,0xfdfef000, +0xffc1a000,0xf2ee2000,0x116fc000,0x052c5000,0x02616000,0x007d6000,0x007aa000,0x00024000, +0x0009a000,0x0000b000,0xffffe000,0xfffc1000,0x000dd000,0xffbd8000,0x00500000,0xfdfef000, +0xffc1a000,0xf2ee2000,0x116fc000,0x052c5000,0x02616000,0x007d6000,0x007aa000,0x00024000, +0x0009a000,0x0000b000,0xffffe000,0xfffbc000,0x000d7000,0xffb8f000,0x0046b000,0xfded5000, +0xff7b6000,0xf2876000,0x113be000,0x04c16000,0x02687000,0x0069c000,0x0077f000,0x00002000, +0x00093000,0x0000a000,0xffffe000,0xfffbc000,0x000d7000,0xffb8f000,0x0046b000,0xfded5000, +0xff7b6000,0xf2876000,0x113be000,0x04c16000,0x02687000,0x0069c000,0x0077f000,0x00002000, +0x00093000,0x0000a000,0xffffd000,0xfffb7000,0x000d0000,0xffb46000,0x003ca000,0xfddcd000, +0xff31c000,0xf2236000,0x1102f000,0x04587000,0x026cf000,0x0056c000,0x0074e000,0xfffe3000, +0x0008b000,0x00009000,0xffffd000,0xfffb7000,0x000d0000,0xffb46000,0x003ca000,0xfddcd000, +0xff31c000,0xf2236000,0x1102f000,0x04587000,0x026cf000,0x0056c000,0x0074e000,0xfffe3000, +0x0008b000,0x00009000,0xffffd000,0xfffb1000,0x000c8000,0xffafd000,0x0031a000,0xfdcda000, +0xfee4b000,0xf1c23000,0x10c54000,0x03f1b000,0x026ee000,0x00447000,0x00719000,0xfffc7000, +0x00084000,0x00008000,0xffffd000,0xfffb1000,0x000c8000,0xffafd000,0x0031a000,0xfdcda000, +0xfee4b000,0xf1c23000,0x10c54000,0x03f1b000,0x026ee000,0x00447000,0x00719000,0xfffc7000, +0x00084000,0x00008000,0xffffc000,0xfffab000,0x000bd000,0xffab4000,0x0025d000,0xfdbfd000, +0xfe946000,0xf1642000,0x1082d000,0x038d4000,0x026e7000,0x0032e000,0x006df000,0xfffad000, +0x0007d000,0x00007000,0xffffc000,0xfffab000,0x000bd000,0xffab4000,0x0025d000,0xfdbfd000, +0xfe946000,0xf1642000,0x1082d000,0x038d4000,0x026e7000,0x0032e000,0x006df000,0xfffad000, +0x0007d000,0x00007000,0xffffc000,0xfffa5000,0x000b1000,0xffa6c000,0x00192000,0xfdb38000, +0xfe40e000,0xf1097000,0x103be000,0x032b4000,0x026bc000,0x00221000,0x006a2000,0xfff96000, +0x00075000,0x00007000,0xffffc000,0xfffa5000,0x000b1000,0xffa6c000,0x00192000,0xfdb38000, +0xfe40e000,0xf1097000,0x103be000,0x032b4000,0x026bc000,0x00221000,0x006a2000,0xfff96000, +0x00075000,0x00007000,0xffffb000,0xfff9f000,0x000a3000,0xffa26000,0x000b9000,0xfda8f000, +0xfdea4000,0xf0b24000,0x0ff0a000,0x02cbf000,0x0266e000,0x00120000,0x00662000,0xfff81000, +0x0006f000,0x00006000,0xffffb000,0xfff9f000,0x000a3000,0xffa26000,0x000b9000,0xfda8f000, +0xfdea4000,0xf0b24000,0x0ff0a000,0x02cbf000,0x0266e000,0x00120000,0x00662000,0xfff81000, +0x0006f000,0x00006000,0xffffb000,0xfff98000,0x00092000,0xff9e1000,0xfffd3000,0xfda01000, +0xfd909000,0xf05ed000,0x0fa13000,0x026f7000,0x025ff000,0x0002d000,0x0061f000,0xfff6e000, +0x00068000,0x00005000,0xffffb000,0xfff98000,0x00092000,0xff9e1000,0xfffd3000,0xfda01000, +0xfd909000,0xf05ed000,0x0fa13000,0x026f7000,0x025ff000,0x0002d000,0x0061f000,0xfff6e000, +0x00068000,0x00005000,0x0d744fcd,0x0b504f33,0x09837f05,0x08000000,0x06ba27e6,0x05a8279a, +0x04c1bf83,0x04000000,0x035d13f3,0x02d413cd,0x0260dfc1,0x02000000,0x01ae89fa,0x016a09e6, +0x01306fe1,0x0b504f33,0x08000000,0x05a8279a,0x04000000,0x02d413cd,0x02000000,0x016a09e6, +0x01000000,0x00b504f3,0x00800000,0x005a827a,0x00400000,0x002d413d,0x00200000,0x0016a09e, +0x20000000,0x1965fea5,0x1428a2fa,0x10000000,0x0cb2ff53,0x0a14517d,0x08000000,0x06597fa9, +0x050a28be,0x04000000,0x032cbfd5,0x0285145f,0x02000000,0x01965fea,0x01428a30,0x01000000, +0x00cb2ff5,0x00a14518,0x00800000,0x006597fb,0x0050a28c,0x00400000,0x0032cbfd,0x00285146, +0x00200000,0x001965ff,0x001428a3,0x00100000,0x000cb2ff,0x000a1451,0x00080000,0x00065980, +0x00050a29,0x00040000,0x00032cc0,0x00028514,0x00020000,0x00019660,0x0001428a,0x00010000, +0x0000cb30,0x0000a145,0x00008000,0x00006598,0x000050a3,0x00004000,0x000032cc,0x00002851, +0x00002000,0x00001966,0x00001429,0x00001000,0x00000cb3,0x00000a14,0x00000800,0x00000659, +0x0000050a,0x00000400,0x0000032d,0x00000285,0x00000200,0x00000196,0x00000143,0x15555555, +0x12492492,0x11111111,0x10842108,0x10410410,0x10204081,0x10101010,0x10080402,0x10040100, +0x10020040,0x10010010,0x10008004,0x10004001,0x10002000,0x0c081e1b,0x0000001e,0x06070707, +0x06060606,0x03060606,0x03030303,0x03030303,0x00030303,0x00000000,0x07070000,0x06060607, +0x06060606,0x03030306,0x03030303,0x03030303,0x00000003,0x00000000,0x02020505,0x02020202, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05050000,0x02020202,0x02020202, +0x00000202,0x00000000,0x00000000,0x00000000,0x00000000,0x04040404,0x02020202,0x01020202, +0x01010101,0x01010101,0x01010101,0x01010101,0x00000101,0x03020002,0x01030303,0x03040204, +0x05040404,0x00100100,0x00000000,0x00000000,0x00000000,0x04030201,0x00001005,0x00000000, +0x01000000,0x05040302,0x09080706,0x0d0c0b0a,0x0301000e,0x07060504,0x0b0a0908,0x0f0e0d0c, +0x03020100,0x07060504,0x0b0a0908,0x00100d0c,0x06050402,0x0a090807,0x0e0d0c0b,0x0000100f, +0x00000003,0x00000002,0x00000005,0x15555555,0x08000000,0x00000005,0x00000003,0x00000007, +0x1999999a,0x08000000,0x00000007,0x00000000,0x00000003,0x12492492,0x04000000,0x00000009, +0x00000004,0x0000000a,0x1c71c71c,0x08000000,0x0000000f,0x00000000,0x00000004,0x11111111, +0x02000000,0x0000001f,0x00000000,0x00000005,0x10842108,0x01000000,0x0000003f,0x00000000, +0x00000006,0x10410410,0x00800000,0x0000007f,0x00000000,0x00000007,0x10204081,0x00400000, +0x000000ff,0x00000000,0x00000008,0x10101010,0x00200000,0x000001ff,0x00000000,0x00000009, +0x10080402,0x00100000,0x000003ff,0x00000000,0x0000000a,0x10040100,0x00080000,0x000007ff, +0x00000000,0x0000000b,0x10020040,0x00040000,0x00000fff,0x00000000,0x0000000c,0x10010010, +0x00020000,0x00001fff,0x00000000,0x0000000d,0x10008004,0x00010000,0x00003fff,0x00000000, +0x0000000e,0x10004001,0x00008000,0x00007fff,0x00000000,0x0000000f,0x10002000,0x00004000, +0x0000ffff,0x00000000,0x00000010,0x10001000,0x00002000,0x00000000,0x04000000,0x050a28be, +0x0453a5cd,0x06597fa9,0x04466275,0x05738c72,0x06b1fc81,0x04000000,0x04ae20d7,0x0562d694, +0x061dae96,0x06de47f4,0x07a44f7a,0x0437be65,0x049fc824,0x050a28be,0x0576c6f5,0x05e58c0b, +0x06566361,0x06c93a2e,0x073dff3e,0x07b4a2bc,0x04168b05,0x0453a5cd,0x04919b6a,0x04d065fb, +0x05100000,0x05506451,0x05918e15,0x05d378bb,0x06161ff3,0x06597fa9,0x069d9400,0x06e2594c, +0x0727cc11,0x076de8fc,0x07b4ace3,0x07fc14bf,0x04220ed7,0x04466275,0x046b03e7,0x048ff1e8, +0x04b52b3f,0x04daaec0,0x05007b49,0x05268fc6,0x054ceb2a,0x05738c72,0x059a72a5,0x05c19cd3, +0x05e90a12,0x0610b982,0x0638aa48,0x0660db91,0x06894c90,0x06b1fc81,0x06daeaa1,0x07041636, +0x072d7e8b,0x075722ef,0x078102b8,0x07ab1d3e,0x07d571e0,0x04000000,0x04156381,0x042ae32a, +0x04407eb1,0x045635cf,0x046c083e,0x0481f5bb,0x0497fe03,0x04ae20d7,0x04c45df6,0x04dab524, +0x04f12624,0x0507b0bc,0x051e54b1,0x053511cb,0x054be7d4,0x0562d694,0x0579ddd8,0x0590fd6c, +0x05a8351c,0x05bf84b8,0x05d6ec0e,0x05ee6aef,0x0606012b,0x061dae96,0x06357302,0x064d4e43, +0x0665402d,0x067d4896,0x06956753,0x06ad9c3d,0x06c5e72b,0x06de47f4,0x06f6be73,0x070f4a80, +0x0727ebf7,0x0740a2b2,0x07596e8d,0x07724f64,0x078b4514,0x07a44f7a,0x07bd6e75,0x07d6a1e2, +0x07efe9a1,0x0404a2c9,0x04115aca,0x041e1cc4,0x042ae8a7,0x0437be65,0x04449dee,0x04518733, +0x045e7a26,0x046b76b9,0x04787cdc,0x04858c83,0x0492a59f,0x049fc824,0x04acf402,0x04ba292e, +0x04c7679a,0x04d4af3a,0x04e20000,0x04ef59e0,0x04fcbcce,0x050a28be,0x05179da4,0x05251b73, +0x0532a220,0x054031a0,0x054dc9e7,0x055b6ae9,0x0569149c,0x0576c6f5,0x058481e9,0x0592456d, +0x05a01176,0x05ade5fa,0x05bbc2ef,0x05c9a84a,0x05d79601,0x05e58c0b,0x05f38a5d,0x060190ee, +0x060f9fb3,0x061db6a5,0x062bd5b8,0x0639fce4,0x06482c1f,0x06566361,0x0664a2a0,0x0672e9d4, +0x068138f3,0x068f8ff5,0x069deed1,0x06ac557f,0x06bac3f6,0x06c93a2e,0x06d7b81f,0x06e63dc0, +0x06f4cb09,0x07035ff3,0x0711fc75,0x0720a087,0x072f4c22,0x073dff3e,0x074cb9d3,0x075b7bdb, +0x076a454c,0x07791620,0x0787ee50,0x0796cdd4,0x07a5b4a5,0x07b4a2bc,0x07c39812,0x07d294a0, +0x07e1985f,0x07f0a348,0x07ffb554,0x0407673f,0x040ef75e,0x04168b05,0x041e2230,0x0425bcdd, +0x042d5b07,0x0434fcad,0x043ca1c9,0x04444a5a,0x044bf65d,0x0453a5cd,0x045b58a9,0x04630eed, +0x046ac896,0x047285a2,0x047a460c,0x048209d3,0x0489d0f4,0x04919b6a,0x04996935,0x04a13a50, +0x04a90eba,0x04b0e66e,0x04b8c16c,0x04c09faf,0x04c88135,0x04d065fb,0x04d84dff,0x04e0393e, +0x04e827b6,0x04f01963,0x04f80e44,0x05000655,0x05080195,0x05100000,0x05180194,0x0520064f, +0x05280e2d,0x0530192e,0x0538274e,0x0540388a,0x05484ce2,0x05506451,0x05587ed5,0x05609c6e, +0x0568bd17,0x0570e0cf,0x05790793,0x05813162,0x05895e39,0x05918e15,0x0599c0f4,0x05a1f6d5, +0x05aa2fb5,0x05b26b92,0x05baaa69,0x05c2ec39,0x05cb3100,0x05d378bb,0x05dbc368,0x05e41105, +0x05ec6190,0x05f4b507,0x05fd0b68,0x060564b1,0x060dc0e0,0x06161ff3,0x061e81e8,0x0626e6bc, +0x062f4e6f,0x0637b8fd,0x06402666,0x064896a7,0x065109be,0x06597fa9,0x0661f867,0x066a73f5, +0x0672f252,0x067b737c,0x0683f771,0x068c7e2f,0x069507b5,0x069d9400,0x06a6230f,0x06aeb4e0, +0x06b74971,0x06bfe0c0,0x06c87acc,0x06d11794,0x06d9b714,0x06e2594c,0x06eafe3a,0x06f3a5dc, +0x06fc5030,0x0704fd35,0x070dacea,0x07165f4b,0x071f1459,0x0727cc11,0x07308671,0x07394378, +0x07420325,0x074ac575,0x07538a67,0x075c51fa,0x07651c2c,0x076de8fc,0x0776b867,0x077f8a6d, +0x07885f0b,0x07913641,0x079a100c,0x07a2ec6c,0x07abcb5f,0x07b4ace3,0x07bd90f6,0x07c67798, +0x07cf60c7,0x07d84c81,0x07e13ac5,0x07ea2b92,0x07f31ee6,0x07fc14bf,0x0402868e,0x040703ff, +0x040b82b0,0x041002a1,0x041483d1,0x04190640,0x041d89ed,0x04220ed7,0x042694fe,0x042b1c60, +0x042fa4fe,0x04342ed7,0x0438b9e9,0x043d4635,0x0441d3b9,0x04466275,0x044af269,0x044f8393, +0x045415f3,0x0458a989,0x045d3e53,0x0461d451,0x04666b83,0x046b03e7,0x046f9d7e,0x04743847, +0x0478d440,0x047d716a,0x04820fc3,0x0486af4c,0x048b5003,0x048ff1e8,0x049494fb,0x0499393a, +0x049ddea5,0x04a2853c,0x04a72cfe,0x04abd5ea,0x04b08000,0x04b52b3f,0x04b9d7a7,0x04be8537, +0x04c333ee,0x04c7e3cc,0x04cc94d1,0x04d146fb,0x04d5fa4b,0x04daaec0,0x04df6458,0x04e41b14, +0x04e8d2f3,0x04ed8bf5,0x04f24618,0x04f7015d,0x04fbbdc3,0x05007b49,0x050539ef,0x0509f9b4, +0x050eba98,0x05137c9a,0x05183fba,0x051d03f7,0x0521c950,0x05268fc6,0x052b5757,0x05302003, +0x0534e9ca,0x0539b4ab,0x053e80a6,0x05434db9,0x05481be5,0x054ceb2a,0x0551bb85,0x05568cf8, +0x055b5f81,0x05603321,0x056507d6,0x0569dda0,0x056eb47f,0x05738c72,0x05786578,0x057d3f92, +0x05821abf,0x0586f6fd,0x058bd44e,0x0590b2b0,0x05959222,0x059a72a5,0x059f5438,0x05a436da, +0x05a91a8c,0x05adff4c,0x05b2e51a,0x05b7cbf5,0x05bcb3de,0x05c19cd3,0x05c686d5,0x05cb71e2, +0x05d05dfb,0x05d54b1f,0x05da394d,0x05df2885,0x05e418c7,0x05e90a12,0x05edfc66,0x05f2efc2, +0x05f7e426,0x05fcd992,0x0601d004,0x0606c77d,0x060bbffd,0x0610b982,0x0615b40c,0x061aaf9c, +0x061fac2f,0x0624a9c7,0x0629a863,0x062ea802,0x0633a8a3,0x0638aa48,0x063dacee,0x0642b096, +0x0647b53f,0x064cbae9,0x0651c193,0x0656c93d,0x065bd1e7,0x0660db91,0x0665e639,0x066af1df, +0x066ffe84,0x06750c26,0x067a1ac6,0x067f2a62,0x06843afb,0x06894c90,0x068e5f21,0x069372ae, +0x06988735,0x069d9cb7,0x06a2b333,0x06a7caa9,0x06ace318,0x06b1fc81,0x06b716e2,0x06bc323b, +0x06c14e8d,0x06c66bd6,0x06cb8a17,0x06d0a94e,0x06d5c97c,0x06daeaa1,0x06e00cbb,0x06e52fca, +0x06ea53cf,0x06ef78c8,0x06f49eb6,0x06f9c597,0x06feed6d,0x07041636,0x07093ff2,0x070e6aa0, +0x07139641,0x0718c2d3,0x071df058,0x07231ecd,0x07284e34,0x072d7e8b,0x0732afd2,0x0737e209, +0x073d1530,0x07424946,0x07477e4b,0x074cb43e,0x0751eb20,0x075722ef,0x075c5bac,0x07619557, +0x0766cfee,0x076c0b72,0x077147e2,0x0776853e,0x077bc385,0x078102b8,0x078642d6,0x078b83de, +0x0790c5d1,0x079608ae,0x079b4c74,0x07a09124,0x07a5d6bd,0x07ab1d3e,0x07b064a8,0x07b5acfb, +0x07baf635,0x07c04056,0x07c58b5f,0x07cad74e,0x07d02424,0x07d571e0,0x07dac083,0x07e0100a, +0x07e56078,0x07eab1ca,0x07f00401,0x07f5571d,0x07faab1c,0x04000000,0x0402aae3,0x04055638, +0x040801ff,0x040aae37,0x040d5ae0,0x041007fa,0x0412b586,0x04156381,0x041811ee,0x041ac0cb, +0x041d7018,0x04201fd5,0x0422d003,0x042580a0,0x042831ad,0x042ae32a,0x042d9516,0x04304772, +0x0432fa3d,0x0435ad76,0x0438611f,0x043b1536,0x043dc9bc,0x04407eb1,0x04433414,0x0445e9e5, +0x0448a024,0x044b56d1,0x044e0dec,0x0450c575,0x04537d6b,0x045635cf,0x0458ee9f,0x045ba7dd, +0x045e6188,0x04611ba0,0x0463d625,0x04669116,0x04694c74,0x046c083e,0x046ec474,0x04718116, +0x04743e25,0x0476fb9f,0x0479b984,0x047c77d6,0x047f3693,0x0481f5bb,0x0484b54e,0x0487754c, +0x048a35b6,0x048cf68a,0x048fb7c8,0x04927972,0x04953b85,0x0497fe03,0x049ac0eb,0x049d843e, +0x04a047fa,0x04a30c20,0x04a5d0af,0x04a895a8,0x04ab5b0b,0x04ae20d7,0x04b0e70c,0x04b3adaa, +0x04b674b1,0x04b93c21,0x04bc03fa,0x04becc3b,0x04c194e4,0x04c45df6,0x04c72771,0x04c9f153, +0x04ccbb9d,0x04cf864f,0x04d25169,0x04d51ceb,0x04d7e8d4,0x04dab524,0x04dd81dc,0x04e04efb, +0x04e31c81,0x04e5ea6e,0x04e8b8c2,0x04eb877c,0x04ee569d,0x04f12624,0x04f3f612,0x04f6c666, +0x04f99721,0x04fc6841,0x04ff39c7,0x05020bb3,0x0504de05,0x0507b0bc,0x050a83d8,0x050d575b, +0x05102b42,0x0512ff8e,0x0515d440,0x0518a956,0x051b7ed1,0x051e54b1,0x05212af5,0x0524019e, +0x0526d8ab,0x0529b01d,0x052c87f2,0x052f602c,0x053238ca,0x053511cb,0x0537eb30,0x053ac4f9, +0x053d9f25,0x054079b5,0x054354a8,0x05462ffe,0x05490bb7,0x054be7d4,0x054ec453,0x0551a134, +0x05547e79,0x05575c20,0x055a3a2a,0x055d1896,0x055ff764,0x0562d694,0x0565b627,0x0568961b, +0x056b7671,0x056e5729,0x05713843,0x057419be,0x0576fb9a,0x0579ddd8,0x057cc077,0x057fa378, +0x058286d9,0x05856a9b,0x05884ebe,0x058b3342,0x058e1827,0x0590fd6c,0x0593e311,0x0596c917, +0x0599af7d,0x059c9643,0x059f7d6a,0x05a264f0,0x05a54cd6,0x05a8351c,0x05ab1dc2,0x05ae06c7, +0x05b0f02b,0x05b3d9f0,0x05b6c413,0x05b9ae95,0x05bc9977,0x05bf84b8,0x05c27057,0x05c55c56, +0x05c848b3,0x05cb356e,0x05ce2289,0x05d11001,0x05d3fdd8,0x05d6ec0e,0x05d9daa1,0x05dcc993, +0x05dfb8e2,0x05e2a890,0x05e5989b,0x05e88904,0x05eb79cb,0x05ee6aef,0x05f15c70,0x05f44e4f, +0x05f7408b,0x05fa3324,0x05fd261b,0x0600196e,0x06030d1e,0x0606012b,0x0608f595,0x060bea5c, +0x060edf7f,0x0611d4fe,0x0614cada,0x0617c112,0x061ab7a6,0x061dae96,0x0620a5e3,0x06239d8b, +0x0626958f,0x06298def,0x062c86aa,0x062f7fc1,0x06327934,0x06357302,0x06386d2b,0x063b67b0, +0x063e6290,0x06415dcb,0x06445960,0x06475551,0x064a519c,0x064d4e43,0x06504b44,0x0653489f, +0x06564655,0x06594465,0x065c42d0,0x065f4195,0x066240b4,0x0665402d,0x06684000,0x066b402d, +0x066e40b3,0x06714194,0x067442ce,0x06774462,0x067a464f,0x067d4896,0x06804b36,0x06834e2f, +0x06865181,0x0689552c,0x068c5931,0x068f5d8e,0x06926245,0x06956753,0x06986cbb,0x069b727b, +0x069e7894,0x06a17f05,0x06a485cf,0x06a78cf1,0x06aa946b,0x06ad9c3d,0x06b0a468,0x06b3acea, +0x06b6b5c4,0x06b9bef6,0x06bcc880,0x06bfd261,0x06c2dc9a,0x06c5e72b,0x06c8f213,0x06cbfd52, +0x06cf08e9,0x06d214d7,0x06d5211c,0x06d82db8,0x06db3aaa,0x06de47f4,0x06e15595,0x06e4638d, +0x06e771db,0x06ea807f,0x06ed8f7b,0x06f09ecc,0x06f3ae75,0x06f6be73,0x06f9cec8,0x06fcdf72, +0x06fff073,0x070301ca,0x07061377,0x0709257a,0x070c37d2,0x070f4a80,0x07125d84,0x071570de, +0x0718848d,0x071b9891,0x071eaceb,0x0721c19a,0x0724d69e,0x0727ebf7,0x072b01a6,0x072e17a9, +0x07312e01,0x073444ae,0x07375bb0,0x073a7307,0x073d8ab2,0x0740a2b2,0x0743bb06,0x0746d3af, +0x0749ecac,0x074d05fe,0x07501fa3,0x0753399d,0x075653eb,0x07596e8d,0x075c8983,0x075fa4cc, +0x0762c06a,0x0765dc5b,0x0768f8a0,0x076c1538,0x076f3224,0x07724f64,0x07756cf7,0x07788add, +0x077ba916,0x077ec7a3,0x0781e683,0x078505b5,0x0788253b,0x078b4514,0x078e653f,0x079185be, +0x0794a68f,0x0797c7b2,0x079ae929,0x079e0af1,0x07a12d0c,0x07a44f7a,0x07a7723a,0x07aa954c, +0x07adb8b0,0x07b0dc67,0x07b4006f,0x07b724ca,0x07ba4976,0x07bd6e75,0x07c093c5,0x07c3b967, +0x07c6df5a,0x07ca059f,0x07cd2c36,0x07d0531e,0x07d37a57,0x07d6a1e2,0x07d9c9be,0x07dcf1ec, +0x07e01a6a,0x07e3433a,0x07e66c5a,0x07e995cc,0x07ecbf8e,0x07efe9a1,0x07f31405,0x07f63eba, +0x07f969c0,0x07fc9516,0x07ffc0bc,0x04017659,0x04030c7d,0x0404a2c9,0x0406393d,0x0407cfd9, +0x0409669d,0x040afd89,0x040c949e,0x040e2bda,0x040fc33e,0x04115aca,0x0412f27e,0x04148a5a, +0x0416225d,0x0417ba89,0x041952dc,0x041aeb57,0x041c83fa,0x041e1cc4,0x041fb5b6,0x04214ed0, +0x0422e811,0x04248179,0x04261b0a,0x0427b4c2,0x04294ea1,0x042ae8a7,0x042c82d6,0x042e1d2b, +0x042fb7a8,0x0431524c,0x0432ed17,0x0434880a,0x04362324,0x0437be65,0x043959cd,0x043af55d, +0x043c9113,0x043e2cf1,0x043fc8f6,0x04416522,0x04430174,0x04449dee,0x04463a8f,0x0447d756, +0x04497445,0x044b115a,0x044cae96,0x044e4bf9,0x044fe983,0x04518733,0x0453250a,0x0454c308, +0x0456612d,0x0457ff78,0x04599dea,0x045b3c82,0x045cdb41,0x045e7a26,0x04601932,0x0461b864, +0x046357bd,0x0464f73c,0x046696e2,0x046836ae,0x0469d6a0,0x046b76b9,0x046d16f7,0x046eb75c, +0x047057e8,0x0471f899,0x04739971,0x04753a6f,0x0476db92,0x04787cdc,0x047a1e4c,0x047bbfe2, +0x047d619e,0x047f0380,0x0480a588,0x048247b6,0x0483ea0a,0x04858c83,0x04872f22,0x0488d1e8, +0x048a74d3,0x048c17e3,0x048dbb1a,0x048f5e76,0x049101f8,0x0492a59f,0x0494496c,0x0495ed5f, +0x04979177,0x049935b5,0x049ada19,0x049c7ea1,0x049e2350,0x049fc824,0x04a16d1d,0x04a3123b, +0x04a4b77f,0x04a65ce8,0x04a80277,0x04a9a82b,0x04ab4e04,0x04acf402,0x04ae9a26,0x04b0406e, +0x04b1e6dc,0x04b38d6f,0x04b53427,0x04b6db05,0x04b88207,0x04ba292e,0x04bbd07a,0x04bd77ec, +0x04bf1f82,0x04c0c73d,0x04c26f1d,0x04c41722,0x04c5bf4c,0x04c7679a,0x04c9100d,0x04cab8a6, +0x04cc6163,0x04ce0a44,0x04cfb34b,0x04d15c76,0x04d305c5,0x04d4af3a,0x04d658d2,0x04d80290, +0x04d9ac72,0x04db5679,0x04dd00a4,0x04deaaf3,0x04e05567,0x04e20000,0x04e3aabd,0x04e5559e, +0x04e700a3,0x04e8abcd,0x04ea571c,0x04ec028e,0x04edae25,0x04ef59e0,0x04f105bf,0x04f2b1c3, +0x04f45dea,0x04f60a36,0x04f7b6a6,0x04f9633a,0x04fb0ff2,0x04fcbcce,0x04fe69ce,0x050016f3, +0x0501c43b,0x050371a7,0x05051f37,0x0506cceb,0x05087ac2,0x050a28be,0x050bd6de,0x050d8521, +0x04030200,0x05050504,0x06060606,0x07070606,0x07070707,0x08070707,0x08080808,0x08080808, +0x08080808,0x09080808,0x09090909,0x09090909,0x09090909,0x09090909,0x09090909,0x09090909, +0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a, +0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b, +0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b, +0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0c0c0b0b,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0d0d0d0c,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0f0f0e0e, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x000f0f0f,0x01000000,0x03000200,0x01010003,0x03010201,0x02020102,0x01030302,0x03030203, +0x03040204,0x05050506,0x09090909,0x09090906,0x03070506,0x060c0909,0x060c0906,0x00000a0b, +0x00001212,0x0000120f,0x00070707,0x000c0c0c,0x000c0f06,0x03060606,0x0609090c,0x06090c06, +0x00050808,0x00090c0f,0x00091206,0x04040404,0x06060404,0x0c0a0806,0x1c161210,0x362e2822, +0x0000c036,0x04040404,0x06060404,0x0c0a0808,0x1c181410,0x36322a22,0x00009e4c,0x04040404, +0x06060404,0x100c0a08,0x261e1814,0x5444382e,0x00001a66,0x04040404,0x04040404,0x04040404, +0x06060606,0x0a0a0606,0x0c0c0c0a,0x100e0e0e,0x14141010,0x1a1a1a14,0x00424242,0x04040404, +0x04040404,0x04040404,0x08060606,0x0a0a0808,0x0c0c0c0a,0x120e0e0e,0x16161212,0x1e1e1e16, +0x00383838,0x04040404,0x04040404,0x04040404,0x08060606,0x0c0c0808,0x1010100c,0x1a141414, +0x22221a1a,0x2a2a2a22,0x000c0c0c,0x04040404,0x06060404,0x06040404,0x06060606,0x0a0a0a06, +0x0e0c0c0c,0x10100e0e,0x14141410,0x421a1a1a,0x00004242,0x04040404,0x06060404,0x06040404, +0x08080606,0x0a0a0a08,0x0e0c0c0c,0x12120e0e,0x16161612,0x381e1e1e,0x00003838,0x04040404, +0x06060404,0x06040404,0x08080606,0x0c0c0c08,0x14101010,0x1a1a1414,0x2222221a,0x0c2a2a2a, +0x00000c0c,0x06060606,0x0a080606,0x12100e0c,0x26201a16,0x463e362e,0x0000244c,0x06060606, +0x0a080606,0x14100e0c,0x26201c18,0x443c342e,0x0000363a,0x04040404,0x04040404,0x06060604, +0x0a080808,0x0c0c0a0a,0x0e0e0e0c,0x18121212,0x20201818,0x2c2c2c20,0x000c0c0c,0x04040404, +0x04040404,0x06060604,0x08060606,0x0a0a0808,0x0e0e0e0a,0x1a121212,0x20201a1a,0x2a2a2a20, +0x00121212,0x04040404,0x04040404,0x06060604,0x0a080808,0x0c0c0a0a,0x0e0e0e0c,0x18121212, +0x1e1e1818,0x2828281e,0x00121212,0x06060606,0x06060606,0x08080806,0x0c0a0a0a,0x0e0e0c0c, +0x1212120e,0x20181818,0x2c2c2020,0x0c0c0c2c,0x06060606,0x06060606,0x06060606,0x0a080808, +0x0e0e0a0a,0x1212120e,0x201a1a1a,0x2a2a2020,0x1212122a,0x06060606,0x06060606,0x08080806, +0x0c0a0a0a,0x0e0e0c0c,0x1212120e,0x1e181818,0x28281e1e,0x12121228,0x0c0c0c0c,0x14100c0c, +0x28201c18,0x4c403830,0x0202025a,0x00000202,0x08080808,0x08080808,0x0c0c0c08,0x14101010, +0x18181414,0x1c1c1c18,0x02242424,0x02020202,0x02020202,0x001a1a1a,0x040c0c0c,0x08080404, +0x0c0c0c08,0x14101010,0x18181414,0x1c1c1c18,0x02242424,0x02020202,0x02020202,0x001a1a1a, +0x0001c90c,0x0001c954,0x0001c9cc,0x0001c924,0x0001c97c,0x0001c9f4,0x0001c93c,0x0001c9a4, +0x0001ca1c,0x0001ca44,0x0001ca74,0x0001caec,0x0001ca5c,0x0001ca9c,0x0001cb10,0x0001ca5c, +0x0001cac4,0x0001cb34,0x0001ca5c,0x0001cac4,0x0001cb34,0x0001ca5c,0x0001cac4,0x0001cb34, +0x0001cb58,0x0001cb70,0x0001cb98,0x00000000,0x00000000,0x01000000,0x02010101,0x03030302, +0x00000002,0x09837f05,0x0b504f33,0x0d744fcd,0x10000000,0x1306fe0a,0x16a09e66,0x1ae89f99, +0x0db84a81,0x0e1b9d7f,0x0f31adcf,0x0fbba815,0x0feda417,0x0ffc8fc8,0x0fff964c,0x0ffff8d3, +0xf7c4a019,0xf873c92e,0xfafc67ec,0xfd16e22f,0xfe7c9fc6,0xff583479,0xffc5d7b9,0xfff0d84c, +0x09bd7ca0,0xf137ca18,0xfde95d5e,0x0fdcf549,0xf9e08756,0xf34e6cba,0xf34e6cba,0x061f78aa, +0x0fdcf549,0x0216a2a2,0xf137ca18,0xf6428360,0x061f78aa,0xf137ca18,0x0ec835e8,0xf9e08756, +0xf9e08756,0x0ec835e8,0xf137ca18,0xf9e08756,0x061f78aa,0x0ec835e8,0x0ec835e8,0x061f78aa, +0x0216a2a2,0xf9e08756,0x09bd7ca0,0xf34e6cba,0x0ec835e8,0xf0230ab7,0xf0230ab7,0xf137ca18, +0xf34e6cba,0xf6428360,0xf9e08756,0xfde95d5e,0x00b2aa3e,0x0216a2a2,0x03768962,0x04cfb0e2, +0x061f78aa,0x07635284,0x0898c779,0x09bd7ca0,0x0acf37ad,0x0bcbe352,0x0cb19346,0x0d7e8807, +0x0e313245,0x0ec835e8,0x0f426cb5,0x0f9ee890,0x0fdcf549,0x0ffc19fd,0x0ffc19fd,0x0fdcf549, +0x0f9ee890,0x0f426cb5,0x0ec835e8,0x0e313245,0x0d7e8807,0x0cb19346,0x0bcbe352,0x0acf37ad, +0x09bd7ca0,0x0898c779,0x07635284,0x061f78aa,0x04cfb0e2,0x03768962,0x0216a2a2,0x00b2aa3e, +0x0216a2a2,0x061f78aa,0x09bd7ca0,0x0cb19346,0x0ec835e8,0x0fdcf549,0x0fdcf549,0x0ec835e8, +0x0cb19346,0x09bd7ca0,0x061f78aa,0x0216a2a2,0x00000000,0x0361962f,0x05db3d74,0x08000000, +0x0a24c28c,0x0c9e69d1,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000002,0x00000040,0x0000191c, +0x00001940,0x00001964,0x00001988,0x00000000,}; +#elif defined(CONFIG_ARCH_EXYNOS5) +/* vliw */ +static unsigned long srp_fw_vliw[] __devinitdata = { +0xd2000143,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xd2000167,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xd200015b,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xd200014f,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xd2000143,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000003, +0x00000003,0x00000003,0x00000003,0x00000003,0x00000003,0x00000000,0x00000000,0x00000001, +0xc27c001d,0xc300021d,0x10920740,0x10900740,0x10924741,0xd1008ef3,0x07800001,0x07000103, +0x07000101,0x00400202,0xf0000003,0x07000103,0xf1000003,0x07000103,0xff000003,0x07000103, +0x00528201,0x07000100,0x12828a09,0x00408a02,0x00528200,0xc1fffd2d,0x07000101,0x02928a2d, +0x00408a01,0x10900081,0xc200f8fc,0x900000f8,0x900040fd,0xd2000114,0x009000fc,0xc20100fd, +0xc2613cf8,0x9001c01c,0x90008009,0xc30002f8,0xc2613408,0x0081c0fd,0x10900081,0xc200f8fc, +0x900000f8,0x900040fd,0xd20000e0,0x009000fc,0xc20100fd,0xc26140f8,0x9001c01c,0x90008009, +0xc30002f8,0xc2613408,0x0081c0fd,0x10900081,0xc200f8fc,0x900000f8,0x900040fd,0xd20000ac, +0x009000fc,0xc20100fd,0xc26144f8,0x9001c01c,0x90008009,0xc30002f8,0xc2613408,0x0081c0fd, +0x10900081,0xc200f8fc,0x900000f8,0x900040fd,0xc20014f9,0xc30382f9,0x00000000,0xb8003efb, +0x00000001,0xe8000035,0x14003e05,0xe8000059,0x14003e11,0xd2000054,0x009000fc,0xc20100fd, +0xc26148f8,0x9001c01c,0x90008009,0xc30002f8,0xc2613408,0x0081c0fd,0xc20020f9,0xc30382f9, +0x00000000,0xb8003e1f,0x00000001,0xc20024f9,0xc30382f9,0x00000000,0xb8003e03,0x00000001, +0xd2000423,0xd20003c3,0xc3000208,0x9000c00c,0x90010011,0xc261380c,0xb8000208,0xb8003ef9, +0x00510200,0xc300020c,0x90014015,0x10814080,0x90018018,0x90004005,0x00118400,0x90000520, +0x90004525,0x12908208,0x90008528,0x9000c52d,0x00508300,0x90010530,0x90014535,0x00124000, +0x90018538,0x9001c53d,0x00508000,0x10814580,0x90004709,0x00508100,0x90000710,0x90008709, +0x00508400,0x00113e00,0x9000c709,0x0050bf00,0xb800030c,0x90010709,0x02818608,0x1081c760, +0x90014709,0x00408600,0x90000540,0x90004545,0x10814540,0x90008548,0x9000c54d,0xe1000124, +0x90000550,0x90004555,0xc2001808,0x90008558,0x9000c55d,0x04e0020c,0x9000001c,0x00120001, +0xc2002058,0xc200245d,0xc3038258,0xc303825d,0x00000000,0x9000161c,0x90001701,0xe20000e4, +0x90010560,0x90014565,0x10814580,0x90018568,0x9001c56d,0x10808220,0x90000570,0x90004575, +0x04e0020c,0x90008578,0x9000c57d,0xe20000b4,0x90010580,0x90014585,0x10814580,0x90018588, +0x9001c58d,0x10808220,0x90000590,0x90004595,0x04e0020c,0x90008598,0x9000c59d,0xe2000084, +0x900105a0,0x900145a5,0x10814580,0x900185a8,0x9001c5ad,0x10808220,0x900005b0,0x900045b5, +0x04e0020c,0x900085b8,0x9000c5bd,0xe2000054,0x900105c0,0x900145c5,0x10814580,0x900185c8, +0x9001c5cd,0x10808220,0x900005d0,0x900045d5,0x04e0020c,0x900085d8,0x9000c5dd,0x10808220, +0x900105e0,0x900145e5,0x10814580,0x900185e8,0x9001c5ed,0x00000000,0x900005f0,0x900045f5, +0x07104400,0x00108003,0x00000000,0xc261380c,0x10910781,0xc300020c,0xb8008418,0xb801843d, +0xc1001808,0xb800030c,0xb800c431,0x108140f0,0xb8010434,0xb8014439,0xe200012c,0xb8004540, +0xb8008545,0x10814550,0xb800c548,0xb801054d,0x00000000,0xb8000550,0xb8004555,0x04e0020c, +0xb8008558,0xb800c55f,0x00000001,0xe20000f8,0xb8010560,0xb8014565,0x10814580,0xb8018568, +0xb801c56d,0x10808220,0xb8000570,0xb8004575,0x04e0020c,0xb8008578,0xb800c57f,0x00000001, +0xe20000c4,0xb8010580,0xb8014585,0x10814580,0xb8018588,0xb801c58d,0x10808220,0xb8000590, +0xb8004595,0x04e0020c,0xb8008598,0xb800c59f,0x00000001,0xe2000090,0xb80105a0,0xb80145a5, +0x10814580,0xb80185a8,0xb801c5ad,0x10808220,0xb80005b0,0xb80045b5,0x04e0020c,0xb80085b8, +0xb800c5bf,0x00000001,0xe200005c,0xb80105c0,0xb80145c5,0x10814580,0xb80185c8,0xb801c5cd, +0x10808220,0xb80005d0,0xb80045d5,0x04e0020c,0xb80085d8,0xb800c5df,0x00000001,0x00000000, +0xb80105e0,0xb80145e5,0x10814580,0xb80185e8,0xb801c5ed,0x00000000,0xb80005f0,0xb80045f7, +0x00000001,0x00000000,0xb80085f8,0xb800c5fd,0x00000000,0x1080c080,0xb801c411,0x0040cc00, +0xb8000320,0xb8004325,0x00400d00,0xb8008328,0xb800c32d,0x00404e00,0xb8010330,0xb8014335, +0x00410f00,0xb8018338,0xb801c33d,0x004fc400,0xb8014014,0xb801c01d,0x00000000,0xb800c00c, +0xb8010011,0x00000000,0xb8008008,0xb8018019,0x00000000,0xb8000000,0xb8004007,0x00000001, +0x07300003,0xc20188f8,0xc2000cf0,0xc20014f5,0xc30382f8,0xc30382f0,0xc30382f5,0xc10000fd, +0xc10008fc,0x90003efd,0xc10001fc,0xb8003eec,0x90003dfd,0x00000000,0xb8003de8,0x90003cfd, +0x00000000,0xb8003ce7,0x00000001,0xc10000f9,0x0040be01,0x0040fe01,0x00413e01,0xd2fff927, +0xc20188f9,0xc30382f9,0x00000000,0xb8003eff,0x00000001,0xc2ffbff5,0xc3fffff5,0x029ffff5, +0x00000000,0x90003efd,0x00000000,0xc261380c,0x10910781,0xc300020c,0xb8008418,0xb801843d, +0xc1001808,0xb800030c,0xb800c431,0x108140f0,0xb8010434,0xb8014439,0xe200012c,0xb8004540, +0xb8008545,0x10814550,0xb800c548,0xb801054d,0x00000000,0xb8000550,0xb8004555,0x04e0020c, +0xb8008558,0xb800c55f,0x00000001,0xe20000f8,0xb8010560,0xb8014565,0x10814580,0xb8018568, +0xb801c56d,0x10808220,0xb8000570,0xb8004575,0x04e0020c,0xb8008578,0xb800c57f,0x00000001, +0xe20000c4,0xb8010580,0xb8014585,0x10814580,0xb8018588,0xb801c58d,0x10808220,0xb8000590, +0xb8004595,0x04e0020c,0xb8008598,0xb800c59f,0x00000001,0xe2000090,0xb80105a0,0xb80145a5, +0x10814580,0xb80185a8,0xb801c5ad,0x10808220,0xb80005b0,0xb80045b5,0x04e0020c,0xb80085b8, +0xb800c5bf,0x00000001,0xe200005c,0xb80105c0,0xb80145c5,0x10814580,0xb80185c8,0xb801c5cd, +0x10808220,0xb80005d0,0xb80045d5,0x04e0020c,0xb80085d8,0xb800c5df,0x00000001,0x00000000, +0xb80105e0,0xb80145e5,0x10814580,0xb80185e8,0xb801c5ed,0x00000000,0xb80005f0,0xb80045f7, +0x00000001,0x00000000,0xb80085f8,0xb800c5fd,0x00000000,0x1080c080,0xb801c411,0x0040cc00, +0xb8000320,0xb8004325,0x00400d00,0xb8008328,0xb800c32d,0x00404e00,0xb8010330,0xb8014335, +0x00410f00,0xb8018338,0xb801c33d,0x004fc400,0xb8014014,0xb801c01d,0x00000000,0xb800c00c, +0xb8010011,0x00000000,0xb8008008,0xb8018019,0x00000000,0xb8000000,0xb8004007,0x00000001, +0x07300003,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725, +0x001e4201,0xe8000051,0x0490020c,0xc10000e1,0x120f0305,0xe800001d,0x04b039f0,0xc10001ed, +0x108efb05,0x020e83ed,0xe8fffff9,0x04d039e9,0xc1ffffe9,0xc10001e8,0x008efbe9,0x020ec3ec, +0x020ebaed,0x008e38e8,0x009e79ed,0xe8ffffc9,0x04f0390d,0xe8000011,0x14000401,0x00000000, +0x900004e5,0x0011b801,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0x9000c905,0x10900740,0x10924741,0xd1ffff5a,0xc1000011,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940, +0x9000891c,0x9000c905,0x10900771,0x10920740,0x90004920,0x10924771,0xd1ffff14,0xc1fffce1, +0x008108e2,0xc1fffce1,0x00000000,0x034188e3,0x00000001,0x1091c741,0x00000000,0xb800c704, +0xb8004723,0x00000001,0x00000000,0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941, +0x1081c940,0x9000891d,0x10924771,0xc28104e8,0xc28104e4,0xc10001e1,0xc30001e8,0xc30001e5, +0x008e42e4,0x030182e9,0x00000000,0x800039e3,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x1092497d,0x10924945,0x1081c97c,0x9000891c,0x9000c905,0x1081c744,0xc1005c25, +0x00900724,0x00924725,0xc1ffece8,0xc1ffe8e0,0xc1ffe4e5,0xc1ffe0e0,0x034307e8,0x0342c7e1, +0x00000000,0x034287e4,0x034fc7e3,0x00000001,0x109f4971,0x109f8950,0xc10000ec,0x109e8961, +0xc10001f0,0x109e09a0,0x109e4981,0x109e8990,0x90003a2c,0x90003e31,0xd1000048,0xc10000e4, +0x900039f1,0x109e09b0,0x90003d28,0x900038e5,0x00000000,0x90003aec,0x900038fd,0x1091c77d, +0x1091c745,0x00000000,0xb800c704,0xb800871f,0x1082477e,0x07000101,0x10824945,0x00100901, +0x1092497d,0x10924975,0x1081c97c,0x9000891c,0x9000c905,0x1081c774,0xc1007025,0x00900724, +0x00924725,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069,0x00000000, +0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffe4e8, +0xc1ffe8e0,0xc1ffeced,0xc1ffd8e0,0x034647e0,0xc1ffe0e5,0xc1ffdce4,0x034687ec,0x0345c7e5, +0xc1ffd4e0,0x034607e8,0x034547e1,0x00000000,0x034587e4,0x034507e2,0x00170201,0x0016c401, +0xe8000061,0x14100201,0xc1ffff19,0x1091c77d,0x1091c774,0xb8004055,0x00000000,0xb800c704, +0xb8010061,0x00000000,0xb8000050,0xb800c05d,0x00000000,0xb801c06c,0xb8020071,0x00000000, +0xb8008058,0xb8018069,0x1082477c,0xb8014064,0xb800871d,0x07000101,0x10824975,0x00100901, +0xe8000039,0x14000301,0xe8000065,0x14000305,0xe800006d,0x14000315,0xe8000075,0x14000309, +0xe800007d,0x1400030d,0xe8000099,0x14000311,0xd2ffff7e,0xc1ffff19,0xc10e00e1,0x00000000, +0x900142e1,0xe80000a5,0x14000401,0xe8000099,0x14000405,0xe8000129,0x14000409,0xe8000129, +0x1400040d,0xd2ffff4a,0xc1ffff19,0xd2ffffd8,0xc10d00e1,0x00000000,0x900142e2,0xd2ffffc8, +0xc10c00e1,0x00000000,0x900142e2,0xd2ffffb8,0xc10f00e1,0x00000000,0x900142e2,0xc20c00e0, +0x129e453d,0xc30400e0,0x120e7971,0xd2ffff98,0x001e3801,0x028e38e5,0x00000000,0x900142e1, +0xc20c00e0,0x129e453d,0xc30200e0,0x120e7971,0xd2ffff74,0x001e3801,0x028e38e5,0x00000000, +0x900142e1,0x12161805,0xd10008c8,0x00109403,0x109e9704,0x129e14f0,0x109e5805,0x120eba40, +0x120e1640,0x028ef819,0x00000000,0x028e7ae4,0x028e3855,0x00000000,0x9000dce4,0x90001ced, +0xe800006c,0x90005c68,0x90011ce1,0x14001400,0x90009c65,0xc10001e1,0x129eb804,0xc20000e4, +0x129e1b0d,0x120eba50,0xb8015ce0,0xc30001e5,0x120e7838,0x028ebae4,0xc23000e1,0x00000000, +0x028e7ae5,0xd2fffe48,0x00000000,0x028e79e1,0x028e38e5,0xc1000018,0x90015ce1,0xd2ffff6e, +0x12161809,0xd2ffff66,0x1216180d,0xd2ffffae,0xc10000e1,0x10924941,0x1081c940,0x9000891c, +0x9000c905,0x10900770,0x10924771,0x00000000,0x90000050,0x90004055,0x00150200,0x00154301, +0xc10000e1,0xe8000019,0x04c03809,0xe8000011,0x14c0021d,0xe8000035,0x14100301,0xc1ffff19, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051, +0x07000102,0x00100901,0xd1000647,0xd1fffbf0,0x00109403,0xd1000488,0x00109400,0x0010d503, +0xd2ffffc2,0xc1000019,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1004824,0x90004920, +0x10920741,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00154201,0x109e0961, +0xc1ffe0ec,0xc10000e4,0x109e8951,0x120e8508,0x90003a10,0x008088ed,0xd1fffbcc,0x109e0970, +0x9000380d,0x109e0980,0x900038e8,0xc100000d,0xc1000210,0x900038e4,0xc1000015,0xe8000021, +0x14100600,0x00150601,0xd1fffeec,0xc1ffe0e1,0x00109500,0x0080c8e2,0x00150601,0x00119401, +0x1091c741,0x00000000,0xb800c704,0xb8004723,0x00000000,0xb8004055,0x00000000,0xb8000050, +0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940,0x9000c904,0x9000891d, +0xc1004824,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055, +0x00154201,0x109e0961,0xc1ffe0ec,0xc10000e4,0x109e8951,0x120e8508,0x90003a10,0x008088ed, +0xd1fffb04,0x109e0970,0x9000380d,0x109e0980,0x900038e8,0xc100050d,0xc1000210,0x900038e4, +0xc1000015,0xe8000021,0x14100600,0x00150601,0xd1fffe24,0xc1ffe0e1,0x00109500,0x0080c8e2, +0x00150601,0x00119401,0x1091c741,0x00000000,0xb800c704,0xb8004723,0x00000000,0xb8004055, +0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940, +0x9000c904,0x9000891d,0xc1004824,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000, +0x90000050,0x90004055,0x00154201,0x109e0961,0xc1ffe0ec,0xc10000e4,0x109e8951,0x120e8508, +0x90003a10,0x008088ed,0xd1fffa3c,0x109e0970,0x9000380d,0x109e0980,0x900038e8,0xc100010d, +0xc1000210,0x900038e4,0xc1000015,0xe8000021,0x14100600,0x00150601,0xd1fffd5c,0xc1ffe0e1, +0x00109500,0x0080c8e2,0x00150601,0x00119401,0x1091c741,0x00000000,0xb800c704,0xb8004723, +0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901, +0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2f000e1,0xc3000fe1,0x00000000,0xb800381b, +0x00000001,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891d,0x10924761,0xc2f000e0,0xc2f000e5,0xc3000fe0,0xc3000fe5,0x00000000,0xb8003819, +0x00000000,0x9000390b,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1002425,0x00924725,0x001e0200,0x001f0301,0x00000000,0xa00038ec, +0xa0003ceb,0x00000001,0x009e7be9,0xe8000021,0x14103900,0x108f3c04,0x108e3805,0xe8000011, +0x14003b01,0xe8ffffd5,0x14103a01,0x0011b901,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924771,0x00000000,0xa00002e3,0x00000001, +0xe800002d,0x14003800,0xc10000e8,0x001e4201,0x00000000,0xa00079e3,0x00000001,0xe8fffff5, +0x14103800,0x108eba04,0x108e7905,0x0011ba01,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924771,0x00000000,0xa00003e3,0x00000001, +0xe8000034,0x800002e1,0x14003800,0x108e8304,0x108e4205,0x00000000,0xa0003ae3,0x00000001, +0xe8fffff4,0x800039e1,0x14103800,0x108eba04,0x108e7905,0x00118201,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002025,0x00924725, +0x001ec200,0x001e8301,0xe800003d,0x14000401,0x109e4405,0x00000000,0xa0003ae3,0x00000001, +0xe8000024,0x80003be1,0x14003800,0x108eba04,0x108efb05,0xc1ffffe1,0x008e79e1,0xe8ffffd9, +0x141039fd,0x00118201,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002c25,0x00900724,0x00924725,0x00000000, +0x90000050,0x90004055,0x00154200,0x00150301,0xc28104e4,0xc10101e0,0xc21118e9,0xd10002d4, +0xc3000fe8,0xc30001e5,0xc10001e0,0x008e42e4,0x020ef809,0x00108300,0x90003aec,0x800039e1, +0xc21000e0,0x129e54f0,0x120ed515,0xc21000e8,0xc3000fe0,0x028f3919,0xc3000fe8,0xc10003e0, +0x008e7be1,0x008e7be8,0x900039f1,0x00000000,0x900179e1,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901,0x10924941, +0x1081c940,0x9000891c,0xc1002c25,0x00924725,0x001f8201,0xc28104e0,0xc10100e5,0xc30001e0, +0x020f7909,0x00000000,0x030e02e3,0x00000001,0xe80000a9,0x14003801,0xc21110e1,0xc3000fe1, +0x00000000,0xb80038e3,0x00000001,0xc10000e0,0x029e78f5,0xe8000031,0x041038e5,0xc21110e9, +0xc3000fe9,0x001eba01,0x00000000,0xb8003ae3,0x00000001,0xc10000e0,0x029e78f5,0xe8ffffed, +0x040038e5,0xc21000e8,0xc10014e4,0x120efe15,0xc3000fe8,0xc21118f0,0xc10000e1,0xc3000ff0, +0x008e79e9,0x00000000,0x90003cf4,0x034e79ef,0x00000001,0x129e7905,0xe8000021,0x041038e5, +0xc28104e4,0xc10000e1,0xc30001e5,0x008e7ee5,0x00000000,0x800039e1,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002025,0x00924725, +0x001ec201,0xc21000e4,0x120e8215,0xc10014e0,0xc3000fe5,0x008e78e5,0x00000000,0x034e39eb, +0x00000001,0x129e3805,0xe8000021,0x14003801,0x00000000,0x034e39eb,0x00000001,0x129e3805, +0xe8fffff1,0x14103801,0xc28104e4,0xc10000e1,0xc30001e5,0x008e7be5,0x00000000,0x800039e1, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924741,0x00000000,0xa800021b,0x00000001,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x00000000,0x8400020d,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741, +0x00000000,0xb800021b,0x00000001,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924741,0x00000000,0x9000020d,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924761, +0xc20000e1,0xc30000e1,0xe8000019,0x04c03808,0xc10000e5,0xc28000e1,0xc30002e1,0x018e42e1, +0xc10000e1,0x0101b8e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924761,0xc20020e0,0xc1000119,0xc30383e1,0xc10080e0,0x001e7801, +0x00000000,0x900039e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924761,0xe8000039,0x14100205,0xc10001e1,0xc20020e0,0x120e781d, +0xc30383e1,0x001e3801,0x00000000,0x900038e5,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0xd2ffffd6,0xc10000e1,0x10924941,0x1081c940,0x9000891c,0xc1002025,0x00924725, +0xe8000045,0x14100205,0xc10001ed,0x120ebb18,0x120e7b14,0xc20020e1,0xc30383e0,0x028e7ae5, +0x001e3800,0x028e79ed,0x00000000,0x900038e5,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0xd2ffffca,0xc10000ed,0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725, +0xe8000099,0x14100505,0xc10001e1,0xc20000e0,0xc20024e4,0x120eb81d,0xc30300e0,0xc30383e4, +0xc20040ed,0x001e7800,0xc10040e0,0x001f3901,0xc30383ec,0x028e79e8,0xc20028e9,0xc10020e0, +0x90003c08,0x028e79e1,0x001f3b00,0x121ec408,0xc30383e9,0xc20020f0,0x90003c0c,0x028e39e1, +0x120e7b40,0x001e3a00,0x128eb821,0xc30383f0,0x900038e4,0x128e7a05,0x001e3c01,0x00000000, +0x900038e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0xd2ffff76,0xc10000e1, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725, +0x00000000,0x90000050,0x90004055,0x00154300,0x00150401,0xd1ffe92f,0xe8000061,0x14001501, +0xc26134e4,0xc10001e1,0xc30002e5,0x00000000,0x900039e1,0x108e540c,0xc26138e1,0x121e7908, +0xc30002e1,0x120e7909,0x00000000,0x900038e5,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901,0xd2ffffbc,0xc26134e5, +0xc30002e4,0xc10000e1,0x00000000,0x900039e1,0x10924941,0x1081c940,0x9000891d,0x10924751, +0xc2613ce1,0xc30002e1,0x00000000,0x90003809,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924751,0xc26140e1,0xc30002e1,0x00000000, +0x90003809,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891d,0x10924751,0xc26144e1,0xc30002e1,0x00000000,0x90003809,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924751,0xc26148e1, +0xc30002e1,0x00000000,0x90003809,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000c904,0x9000891d, +0xc1004c24,0x90004920,0x10920741,0x00900724,0x00924725,0xc20074e5,0xe80000d0,0xc10001e0, +0xc3000fe5,0x14100200,0x900039e1,0xc20120ec,0xc20000e4,0x109e8871,0xc30382ec,0xc30004e4, +0x109e0861,0x00000000,0xb8003be0,0x900038e6,0xd1fffba2,0xc1000008,0x90003ae1,0xc20023e8, +0xc20100e4,0xc2be80e1,0xc300ffe8,0xc30090e4,0xc30001e1,0x109f8880,0x001f7a00,0x109f0851, +0x001ef900,0x109e8840,0x001e7801,0x109e0830,0x90003cf4,0x90003e19,0x00000000,0x900038e4, +0x90003aed,0xd1fff330,0xc1ffe0e1,0x00000000,0x0080c8e1,0xc1000009,0xd1fff9d6,0xc1000009, +0x1091c741,0x00000000,0xb800c704,0xb8004723,0x00000001,0x00000000,0xb800871d,0x07000101, +0x10824741,0x00100901,0xc20100ec,0xc20000e4,0x109e8871,0xc30382ec,0xc30004e4,0x109e0861, +0x00000000,0xb8003be0,0x900038e6,0xd1fffae6,0xc1000008,0x90003ae1,0xc2be80e1,0xc20023e4, +0xc30001e0,0xc20100e9,0xc300ffe4,0x109f0850,0xc30090e9,0x109f4880,0x001e7800,0x001e3901, +0xd2ffff64,0x109e8840,0x001efa01,0x109e0830,0x90003ce0,0x90003d19,0x00000000,0x900038e4, +0x90003aed,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1005c24,0x90004920,0x10920741, +0x00900724,0x00924725,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0xc28104e4,0xc1000061,0xc30001e5,0x001e7901,0x10861804,0xc10000e1, +0xe8fffff8,0x800039e1,0x14801820,0x108e7905,0xc2614cec,0xc103ffe8,0xc103ffe5,0xc30002ec, +0xc21100f0,0xc10000e1,0xc3000ff0,0x008efbe8,0xc10001e9,0x122ebb7c,0x90003ce9,0x00000000, +0x029e7ae5,0x008e7be5,0x1225f929,0xe800009d,0x04e0385c,0xc1000061,0xc2000050,0xc2011858, +0xc1000055,0xc3000050,0xc3038259,0x00151401,0xc1ffe0e0,0xb80016e8,0x109f4951,0x109f0960, +0xc10400ec,0x109e8971,0xc10000e4,0x109e0980,0x008088e1,0xd1ffee30,0x90003aec,0xc100000d, +0xc1000210,0x90003c50,0x008e95e9,0xc1000014,0x900038e4,0x90003de9,0xd1fff15c,0xc1ffe0e1, +0x00000000,0x0080c8e1,0xc1000009,0x10861804,0xc10400e4,0xc10400e1,0xe8ffff98,0x008514e0, +0x008555e5,0x0480185d,0x1091c741,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb800c05c, +0xb8010062,0x00000000,0xb8004054,0xb8000051,0x00000000,0xb800871c,0xb8004721,0x07000101, +0x10824741,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1003025,0x00924725, +0xc28114fc,0xc28110ed,0xc28118f4,0xc10000f8,0xc28128e5,0xc30001fc,0xc30001ec,0xc30001f5, +0xc10000f0,0xc10000e0,0xc10000e9,0xc30001e4,0x90003df0,0x90003ff9,0xc1000018,0x840039e0, +0x80003be9,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1003425,0x00900724,0x00924725,0x00000000,0x90000050, +0x90004055,0x00154200,0x00150401,0xc28128e1,0xc30001e1,0x00000000,0xa80038e3,0x00000001, +0xe80000a9,0x14103801,0xc2001ce0,0xb80102f4,0xc1ff9ff1,0xc30382e0,0xb80155e8,0xc2001ced, +0x00000000,0xb80038e5,0xc2001ce1,0xc30382ec,0x00000000,0xc2ffffe5,0x129f7d0c,0x00000000, +0x029ebae5,0xc28120f4,0x029fb9f0,0x120e7d15,0xc28128e4,0x028f3ee4,0xc30001f5,0xc30382e0, +0x90003bf0,0xc30001e5,0xc10001e0,0xb80038e4,0x90003df9,0x00000000,0x840039e1,0xc2001ce0, +0x120eba39,0xd10074b0,0x00000000,0xc30382e1,0xc100000c,0x028e79e8,0xc1000409,0xc1000114, +0x900038e4,0xc1000711,0x00000000,0xb80255e4,0xb8039509,0x00115400,0xb802d511,0xd1001bfc, +0xc28124e1,0xc30001e1,0x0010f900,0x900038e5,0xc28118e4,0xc29ff4e0,0xc28124ed,0xc30001e4, +0xc30001e0,0xc2811ce9,0xc2ddc8e0,0xb80039e8,0xb80038e1,0xc30001ec,0xc30001e8,0xc30001e1, +0x00000000,0x90003ae0,0x90003b1a,0x008e7a19,0xe800016d,0x04b039e1,0xc28120e0,0x009e78e9, +0xe8000144,0xc30001e1,0x14a03900,0x900038e5,0xc2811ce0,0x0010f901,0xc30001e1,0x00000000, +0xb8003809,0xd1001e57,0xc28110ec,0xc29ff4e0,0xc1ffffe9,0xc30001ec,0xc30001e0,0xc28110e5, +0x00000000,0xa0003be0,0xb800380b,0x00000001,0xd10090bc,0x02ae3ae1,0xc30001e4,0x129e3805, +0x00000000,0x800039e1,0xc28120e0,0xc28118e8,0xc28124e5,0xc30001e0,0xc30001e8,0xc30001e5, +0xc29ff4e0,0xb80038e0,0xc2811ced,0xc30001e0,0xb8003aec,0xb80039e1,0xc30001ec,0xb80038e0, +0xc28120e9,0xc28118e4,0xb8003bf4,0xc30001e9,0x122f3805,0x120f3c04,0x00000000,0x008efbe1, +0xd1001db8,0x00000000,0xc30001e5,0xc10000e0,0x0080bdf0,0x009efbe1,0x0010fb00,0x90003aec, +0x900039e1,0xc28120e8,0xc28118e4,0xc28118e1,0xc30001e8,0xc30001e4,0xc30001e1,0x00000000, +0xb8003ae8,0xb80039e7,0x00000001,0x008e79e9,0x00000000,0x900038e5,0xc1000019,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102, +0x00100901,0xd2fffee4,0xc28120e5,0xc30001e4,0xc10000e1,0x00000000,0x900039e1,0xc28124e0, +0xc2ddc809,0xc30001e0,0xc3000109,0x00000000,0xb800380d,0xd1001d07,0xc28124e8,0xc28118e4, +0xc28118e1,0xc30001e8,0xc30001e4,0xc30001e1,0x00000000,0xb8003ae8,0xb80039e7,0xd2ffff7d, +0x008e79e9,0x00000000,0x900038e5,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002025,0x00900724,0x00924725,0xc28118e1,0xc30001e1,0x00000000,0xb80038e3,0x00000001, +0x121e3809,0xe8000049,0x14a03801,0xc28110ec,0xc28118e0,0xc1ffffe9,0xc30001ec,0xc30001e0, +0xc28110e5,0x00000000,0xa0003be0,0xb800380b,0x00000001,0xd1008ef8,0x02ae3ae1,0xc30001e4, +0x129e3805,0x00000000,0x800039e1,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824742,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002425,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00154200,0x00150301, +0xd1001db4,0xc10000e0,0xc10000e5,0x00000000,0x900202e0,0x9001c2e5,0xc1000b0c,0x10808371, +0xd1001e64,0x10809472,0xc100010d,0xe8000021,0x14100601,0x00000000,0xb801d5e7,0xc24000e1, +0x028e39e1,0x00000000,0x9001d5e1,0xd1001e38,0x10809472,0xc100010d,0xe8000079,0x14100601, +0x00000000,0xb801d5e7,0xc21000e1,0x028e39e1,0x00000000,0x9001d5e1,0xd1001e0c,0x10809472, +0xc100020d,0xc10004e1,0x009e3819,0xe8000070,0x900015e1,0x14103811,0xc11005e0,0xc1ffff19, +0x00000000,0x9003d4e1,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000, +0xb8004054,0xb8000051,0x07000102,0x00100901,0x00000000,0xb801d5e7,0xc24000e1,0x029e39e1, +0xe8ffff99,0x14003801,0xd2ffffc0,0xc11004e1,0x00000000,0x9003d4e1,0xc1ffff19,0xd1001d88, +0x10809472,0xc100010d,0xe8000031,0x14100601,0x00000000,0xb801d5e0,0x10809473,0xd1001ed9, +0x128e3841,0xc100100c,0x9001d5e0,0xc2ffff11,0x00000000,0x84031519,0xd1001d4c,0x10809472, +0xc100040d,0xe800001d,0x1410063d,0xd2ffff5c,0xc11006e1,0x00000000,0x9003d4e1,0xc1ffff19, +0x00000000,0xb801d5e7,0xc21000e1,0x029e39e1,0xe8000071,0x14003801,0x00000000,0xb80015e3, +0x00000001,0x122e3805,0xc1003ce0,0x108e780d,0xc28420e0,0x060e79e1,0xc30001e1,0x120e0608, +0x008e79e1,0x00000000,0x034e39e3,0x00000001,0x00000000,0x900115e1,0xd1001ccc,0x10809472, +0xc100020d,0xe8000059,0x1410060d,0xd2fffedc,0xc11007e1,0x00000000,0x9003d4e1,0xc1ffff19, +0x00000000,0xb80015e3,0x00000001,0xc1003ce0,0x109e7805,0xc28420e0,0x060e79e1,0xc30001e1, +0x120e0608,0x008e79e1,0x00000000,0x034e39e2,0xd2ffffaa,0x00000000,0x900115e1,0xc2854ce0, +0xb801d5e4,0x120e4609,0xc30001e1,0x00000000,0x034e79e1,0xc21000e1,0x029e39e1,0xe8000039, +0x14003800,0x900155e5,0x121eb904,0xb801d5e5,0x00000000,0x900155ea,0xc24000e1,0x029e39e1, +0xe8000015,0x14003801,0x121e3a05,0x00000000,0x900155e1,0xd1001c10,0x10809472,0xc100010d, +0xe8000021,0x14000601,0x00000000,0xb801d5e7,0xc10080e1,0x028e39e1,0x00000000,0x9001d5e1, +0xd1001be4,0x10809472,0xc100010d,0xe8000021,0x14000601,0x00000000,0xb80215e7,0xc10100e1, +0x028e39e1,0x00000000,0x900215e1,0xd1001bb8,0x10809472,0xc100020d,0xd1001bac,0xc10003e1, +0x009e3819,0xc100020c,0x900055e0,0x10809471,0xd1001b95,0x00000000,0x90009518,0x10809471, +0xc100010d,0xe8000021,0x14000601,0x00000000,0xb801d5e7,0xc10020e1,0x028e39e1,0x00000000, +0x9001d5e1,0xd1001b60,0x10809472,0xc100010d,0xe8000021,0x14000601,0x00000000,0xb801d5e7, +0xc10040e1,0x028e39e1,0x00000000,0x9001d5e1,0xd1001b34,0x10809472,0xc100020d,0x00000000, +0xb801d5e0,0x9000d51b,0x00000001,0x129e3841,0xe800001d,0x14003801,0xd1001b0c,0x10809472, +0xc100100d,0x00000000,0x84035519,0xd2fffd1e,0xc1000019,0x10924941,0x1081c940,0x9000c904, +0x9000891d,0xc100a824,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90010060, +0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0x00154200, +0x00158301,0x00000000,0xb801c2e7,0x109e0821,0x00000000,0x900038e5,0x00000000,0xb80202e7, +0x109e0811,0x00000000,0x900038e5,0x00000000,0xb801c3eb,0xc10080e1,0x029e3ae1,0xe8000411, +0x14003800,0xc1000051,0xc1000161,0x00000000,0xb80003e3,0x00000001,0xe8000015,0x1410380c, +0xc10000e5,0xc21000e1,0x029e7ae1,0xe80003e9,0x14003901,0xc100485d,0xd10083db,0xe800032d, +0x14100601,0xc103e8e0,0x120e9808,0xc10004e5,0xc10001e0,0x0615d7e0,0x009679e9,0x00963861, +0xc1ffb8e4,0xb80015e4,0xc10048e1,0x00000000,0x0080c8e6,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80055ea,0xc10044e1,0x009e48e0,0x00000000,0xc1ff94e1,0x00000000,0x900039e8, +0x008088e1,0x00000000,0xb80095e6,0xc10040e1,0x009e08e1,0x00000000,0x900038e5,0x00000000, +0xb800d5e7,0x109e08f1,0x00000000,0x900038e5,0x00000000,0xb80115e7,0x109e08e1,0x00000000, +0x900038e5,0x00000000,0xb80155e7,0x109e08d1,0x00000000,0x900038e5,0x00000000,0xb80195e7, +0x109e08c1,0x00000000,0x900038e5,0x00000000,0xb801d5e7,0x109e08b1,0x00000000,0x900038e5, +0x00000000,0xb80215e7,0x109e08a1,0x00000000,0x900038e5,0x00000000,0xb80255e7,0x109e0891, +0x00000000,0x900038e5,0x00000000,0xb80295e7,0x109e0881,0x00000000,0x900038e5,0x00000000, +0xb802d5e7,0x109e0871,0x00000000,0x900038e5,0x00000000,0xb80315e7,0x109e0861,0x00000000, +0x900038e5,0x00000000,0xb80355e7,0x109e0851,0x00000000,0x900038e5,0x00000000,0xb80395e7, +0x109e0841,0x00000000,0x900038e5,0x00000000,0xb803d5e7,0x109e0831,0x00000000,0x900038e5, +0x00000000,0xb80016e6,0xc1006ce1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80056e6, +0xc10068e1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80096e6,0xc10064e1,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb800d6e6,0xc10060e1,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80116e6,0xc1005ce1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80156e6, +0xc10058e1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80196e6,0xc10054e1,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb801d6e6,0xc10050e1,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80216e6,0xd1fff924,0xc1004ce1,0x009e08e1,0x00000000,0x900038e5,0xc1ff94e0, +0xb80016e5,0xc1ffa8e0,0x034e88e0,0xb80156e1,0x00000000,0x034e48e3,0x110ec600,0x00000000, +0x010ebae5,0x010e39e0,0x029e7be9,0x029e39e1,0xe800007d,0x14003801,0xd1001664,0x10809573, +0x00000000,0xb80016e0,0xb80155e7,0x00000001,0xe800012d,0x14103804,0x009506e5,0x00000000, +0xb80156e4,0x008e1953,0x00000001,0x00000000,0x061539e1,0xc10000e1,0xe8000025,0x04d03850, +0xc10000e9,0xc10000e5,0xc2bb80e1,0x008e79e1,0xe8fffff9,0x04b03950,0x108eba05,0xc1ffffe1, +0x00853ae1,0xe8000025,0x14f01421,0xd1001648,0x10809572,0xc100080d,0xd10080b8,0x00109503, +0xe8fffd01,0x14000601,0xc1fff8e1,0x00000000,0x034e08e3,0x00000001,0xc1fffce0,0x9001d5e1, +0x00000000,0x034e08e3,0xe800002d,0x14901420,0x900215e1,0x00000000,0xb80016e3,0x00000001, +0xe80000cd,0x1410380d,0xc10280e1,0xe80000c1,0x04b014e1,0xc11004e0,0xc1ffff19,0x00000000, +0x9003d5e1,0x1091c741,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb8004055,0x00000000, +0xb8014064,0xb8004721,0x00000000,0xb8000050,0xb8010061,0x00000000,0xb800c05c,0xb800871d, +0x07000101,0x10824741,0x00100901,0xd2fffc02,0xc1000061,0xd2fffc26,0xc100905d,0x00000000, +0xb80156e4,0x008e1853,0x00000001,0x00000000,0x061539e1,0xc10000e1,0xe8000029,0x04d03850, +0xc10000e9,0xc10000e1,0x00000000,0x00000000,0x008e385d,0xe8fffff5,0x04b03850,0x108eba05, +0xd2fffee4,0xc1ffffe1,0x00853ae2,0xc103e8e0,0xc1000019,0xd2ffff50,0x061e14e2,0x00000000, +0x900115e1,0x10924941,0x1081c940,0x9000891c,0xc1005025,0x00900724,0x00924725,0x00000000, +0x90000050,0x90004055,0x00000000,0xa40202e4,0xac0082eb,0xc100d2e1,0x129e3908,0x0093bae1, +0xe80000d1,0x14003801,0xc1000255,0x00000000,0xa40242e3,0x00000001,0xe80000c9,0x14103809, +0x129e3921,0xe8000035,0x14003800,0xc1000050,0xc100004d,0x129e3911,0xe80000a1,0x14003801, +0xc1ffff35,0xc24d2c2c,0xc1000029,0x10830248,0xc300022d,0xd60120ea,0x00000000,0xa40342e8, +0xa40382e5,0x00000000,0xa403c2e5,0xc10240e1,0xea000041,0x120efa0c,0x00000000,0x120eb90d, +0x120e790c,0x00944ee8,0x00948eed,0x04f014e0,0x00940ee5,0x10835304,0x10831308,0x1083c249, +0x12039308,0x1202cd08,0x12028c09,0xd6016112,0x1091c740,0xb8004055,0x00000000,0xb8000050, +0xb800871d,0x07000101,0x10824741,0x00100901,0xd2ffff3e,0xc1000155,0xd2ffff6e,0xc1000035, +0x129e3911,0xe8000025,0x14003801,0xc24d2c2c,0x10830249,0xc100004c,0xc1000028,0xc300022d, +0xd6002142,0xd2ffffaf,0xc100004c,0x1082c248,0xc1000029,0xd600214a,0xd2ffff9b,0x10924941, +0x1081c940,0x9000891c,0xc1003425,0x00924725,0x192e4300,0xc10400e0,0x118ec301,0xe80000a4, +0x122e7908,0x129eb90d,0x04f002e0,0x0992bbe8,0x099ffbe5,0xc245a0e0,0xc23594e4,0x120e8209, +0xc30002e0,0xc30002e5,0x00000000,0x031e02e0,0x034fbae7,0x00000001,0x008fffe1,0xe80000e1, +0x14e03f01,0xc10000e4,0x11ce3f81,0x009ef9fd,0xc10001e4,0x109ebb05,0x020e79e9,0x008e7ee5, +0x022ef9ed,0x09bfb8ed,0x108e4a0c,0xc24d44e1,0x120e7908,0xc30002e1,0x00000000,0x034e39e3, +0x00000001,0x00000000,0x21c1bee2,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x121f420c,0xc245a0e4,0xc245a0e1,0xc23594ec,0x108ebd04,0xc30002e5,0xc30002e0,0x120f3d08, +0xc30002ed,0xc23594e0,0x031e3ae0,0x031e7de5,0x120e7a08,0x034e7cec,0xc30002e1,0x00000000, +0x034e79e2,0x108e3910,0x00000000,0x011ef9e1,0x008e38ec,0x00000000,0x022eb9ed,0x129e021c, +0x009e79e8,0x008fffe1,0x00000000,0x061e39e1,0xd2ffff2d,0x122e380d,0x008fbae1,0xc2ffffe0, +0x11ee7f14,0x020efefd,0xc37fffe1,0x001e3801,0xd2ffff38,0x009e38ed,0x09be39e1,0x008fb8ed, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1003425,0x00900724,0x00924725, +0x00000000,0x90000051,0x00150301,0xd10012fb,0x109fd404,0xc10001e0,0x109e5409,0xc232fce0, +0x020ef8fc,0xc10000f1,0x02af86ec,0xc20000e8,0x120e7909,0xc30002e0,0x029f7eec,0xc1001ded, +0xc31000e8,0x034e39e0,0x009e3cf5,0x001e3a00,0x028ebee0,0x009e7b51,0x022e38fc,0x020e7ae5, +0x008e79e1,0x00000000,0x21c1b9e2,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741, +0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000c904,0x9000891d, +0xc1005424,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0x00150200,0x00154300,0x0015c401,0x00000000,0xb800435b, +0x00000001,0xe8000139,0x14001601,0x00000000,0xb800830d,0xd1001213,0x109e8840,0xc1fff4e4, +0xc1fff0e1,0x008108e4,0x90003a19,0x008148e0,0xb8001552,0xd1004f5a,0x00108600,0x0010d401, +0xc1fff0e8,0xc1fff8e4,0xc1fff0e1,0x008148e0,0x034088e8,0x008108e5,0xd1004f36,0x0010d401, +0xc1fff0e8,0xc1fffce4,0xc1fff0e1,0x008148e0,0x034088e8,0x008108e5,0xd1004f16,0x0010d401, +0xc1ffffe0,0xc10001e5,0xc1001de0,0x008e96e0,0xc1000029,0xc1fff4e0,0x009f7858,0x020fb9e9, +0x008fc8e0,0x001ed700,0xc10000f1,0x00000000,0x00000000,0x034e3ff3,0x00000001,0x02aeb8f9, +0xc10000e0,0xb80115e0,0x029e7af9,0x009e38e4,0xb800d5e1,0x028e3ae1,0x020e78f5,0x008e79e1, +0x10828a04,0x00000000,0x21ce39e1,0xe8ffffc0,0x108f3c11,0x14900a0c,0x108efb10,0x90003be1, +0x1091c741,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb800c05c,0xb8004722,0x00000000, +0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0x00000000, +0xb800835a,0xd10010e2,0x0010d601,0xd10010d8,0x109e0831,0x0010d600,0x90003818,0x00109402, +0xd10010c4,0x109e0821,0x0010d600,0x90003818,0x00109402,0xd2ffff0c,0x109e0811,0x00000000, +0x9000381a,0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x9000c905,0x1081c724,0xc1007025, +0x00900724,0x00924725,0x00000000,0x90030080,0x90034085,0x00000000,0x90028078,0x9002c07d, +0x00000000,0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060, +0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece4, +0xc1ffe8e0,0x0017c201,0x00000000,0x034707e4,0x034507e2,0x00178300,0x00154501,0x00174401, +0xe8000334,0xc10000e0,0xc1000081,0x14000400,0x90001ce1,0xe8000319,0x14100305,0xc10001e1, +0xe800032c,0x900014e1,0x14000401,0xc10008e1,0xd1000fd4,0x0010f803,0x00109f00,0x90001519, +0x00000000,0xb800140d,0xd1000fbf,0xc10000e0,0x90005519,0xe8000045,0x04103874,0xc100016d, +0xc10000e1,0xe8000035,0x04f03878,0xc100026c,0xc1000085,0x10851521,0xd1000f8c,0x00109f02, +0xc100040d,0x10886104,0x80001419,0xe8ffffed,0x04902178,0x10851405,0xc10000e1,0xe8000221, +0x04f0386c,0xc1000069,0x10865528,0x11061d00,0x1085d521,0xc10000e1,0xe80001f1,0x04f03878, +0xc1000085,0x00159901,0xd1000f3c,0x00109f02,0xc1000c0d,0xd1000f31,0x00000000,0x84001618, +0x00109f01,0xc100090d,0xd1000f1d,0x00000000,0x84005618,0x00109f01,0xc100080d,0xe8000258, +0x84009619,0x14001d01,0xc10009e1,0xd1000ef8,0x00109f00,0x0010f803,0x00000000,0xac0056e4, +0xac0016ed,0x00000000,0xb8001ce9,0x00000000,0x8400d619,0xc10120e1,0x110e2000,0x00000000, +0x01ce79e1,0x008e7aec,0x029e39e1,0xe8000010,0x90001ce5,0x14003801,0xc1200d81,0xd1000ea8, +0xc10000e1,0x00000000,0x800216e0,0x00109f01,0xc100010d,0xe800020d,0x14000601,0xd1000e88, +0x00109f02,0xc100020d,0x110e4600,0x110e2001,0x029e39e0,0x80025619,0xe800000d,0x14003801, +0xc1200e81,0x110e4608,0x031e5784,0x110e2001,0x00000000,0x029e98e7,0x111e7901,0x029e7ae5, +0x029e39e1,0xe800000d,0x14003801,0xc1200f81,0x00109f01,0xd1000e30,0xc10007e4,0xc10024e1, +0x00000000,0x800456e0,0x800416e5,0xc100010d,0xe800016d,0x14000601,0x00000000,0xa40216e3, +0x00000001,0xc100ffe0,0x128e7821,0x029e39e1,0x00000000,0x800216e1,0xd1000dec,0x00109f02, +0xc100050d,0xd1000de1,0x00000000,0x80029618,0x00109f01,0xc100050d,0xc1000054,0x8002d618, +0x10851635,0xd1000dc0,0x00109f02,0xc100030d,0x10855504,0x80001419,0xe8ffffed,0x1490150c, +0x10851405,0xe8000175,0x14001d01,0xc10002e1,0xd1000d94,0x00109f00,0x0010f803,0x00000000, +0xa40216e3,0x00000001,0x10886104,0x028e7818,0xc100ffe1,0xe8fffe34,0x029e39e1,0x04902178, +0x108596e8,0x800216e1,0x10869a04,0xc10074e1,0xe8fffe04,0x008659e1,0x04901a6d,0x0011a001, +0x1091c77c,0xb8000050,0xb8004055,0x1091c724,0xb8008058,0xb800c05d,0x00000000,0xb800c704, +0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071,0x00000000, +0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x1082477c,0xb8034084,0xb800871d, +0x07000101,0x10824925,0x00100901,0xd2fffcf6,0xc10002e1,0xe8000011,0x14100305,0xd2fffce6, +0xc10005e1,0xd2fffcde,0xc10003e1,0xd2fffce6,0xc10009e1,0xd2fffdba,0xc10004e1,0x00000000, +0xa40256e3,0x00000001,0xe8fffeb1,0x14103809,0xd2fffea8,0xc10008e1,0x00000000,0x800416e2, +0xc10000e0,0x10851629,0xc1000054,0x800256e1,0xd1000c74,0x00109f02,0xc100050d,0x10855504, +0x80001419,0xe8ffffed,0x1490150c,0x10851405,0xd1000c54,0x00109f02,0xc100040d,0xd1000c49, +0x00000000,0x80041618,0x00109f01,0xc100030d,0xd2fffe94,0x8004561b,0xd2fffe9a,0xc10003e1, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1005024,0x90004920,0x10920741,0x00900724, +0x00924725,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069,0x00000000, +0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0x00170401, +0x00164200,0x00158500,0x0016c301,0x00000000,0xb80002e5,0xc249a4e4,0xc10001e1,0xc30002e4, +0xc1fff8ed,0x109e0820,0x00000000,0x008f38e5,0x00000000,0x900038e5,0x00000000,0xb80042e7, +0x109e0811,0x00000000,0x900038e5,0x00000000,0xac00c3e8,0xa40243e3,0xc249a4e5,0xc30002e4, +0x120eba05,0x00000000,0x0316bce8,0x03157ae6,0xe8000130,0x008608ed,0x14103809,0x00000000, +0xa40203e3,0x00000001,0x129e3821,0xe800010d,0x14003800,0xc100005d,0xc10011e1,0xe800003d, +0x14003800,0x1095b805,0x10850349,0xd1000b18,0x00109900,0x0010d503,0xc1ffffe1,0x00000000, +0x80001418,0x008596e1,0xe8ffffe5,0x141016fc,0x1085d704,0x10851405,0x10855b48,0xc1001159, +0x00851755,0xd1000ae0,0x00109900,0x0010da03,0xc1ffffe1,0x00000000,0x80001418,0x008596e1, +0xe8ffffe5,0x141016fc,0x1085d704,0x10851405,0xc1000258,0x008e9755,0xc1ffffe0,0xc10000e5, +0x00000000,0x80003ae4,0x008596e1,0xe8ffffed,0x141016fc,0x108eba05,0xd1000900,0x00109800, +0x0010d903,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059,0x00000000, +0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071, +0x00000000,0xb8004720,0xb800871d,0x07000101,0x10824741,0x00100901,0xd2ffff06,0xc10012e1, +0x129e0521,0xe80000dd,0x14003801,0xc100005c,0x108e8448,0x108e4349,0x00000000,0x031e3a5e, +0x1085d705,0xe8fffff5,0x14901718,0x108e7904,0x800039e1,0x129e1611,0xe80000d5,0x14003801, +0xc100065c,0x108e9c48,0x108e5b61,0x00000000,0x031e3a5e,0x1085d705,0xe8fffff5,0x1490172c, +0x108e7904,0x800039e1,0x129e1609,0xe80000cd,0x14003801,0xc1000b5c,0x108e9c48,0x108e5b75, +0x00000000,0x031e3a5e,0x1085d705,0xe8fffff5,0x14901740,0x108e7904,0x800039e1,0x129e1605, +0xe80000c5,0x14003801,0xc100105c,0x108e9c48,0x108e5b89,0x00000000,0x031e3a5e,0x1085d705, +0xe8fffff5,0x14901754,0x108e7904,0x800039e1,0xd2fffec8,0xc10000e1,0x00000000,0x8009dbe2, +0xc100005c,0x10850349,0xd100093c,0x00109900,0x0010d503,0x1085d704,0x80001419,0xe8ffffed, +0x14901718,0x10851405,0xd2ffff2f,0xc100065c,0x10851b61,0xd1000910,0x00109900,0x0010d503, +0x1085d704,0x80001419,0xe8ffffed,0x1490172c,0x10851405,0xd2ffff37,0xc1000b5c,0x10851b75, +0xd10008e4,0x00109900,0x0010da03,0x1085d704,0x80001419,0xe8ffffed,0x14901740,0x10851405, +0xd2ffff3f,0xc100105c,0x10851b89,0xd10008b8,0x00109900,0x0010da03,0x1085d704,0x80001419, +0xe8ffffed,0x14901754,0x10851405,0xd2ffff47,0x10924941,0x1081c940,0x9000891c,0x90004921, +0xc2094c24,0x10920741,0x00924725,0x00000000,0xa40203e3,0x00000001,0x129e3821,0xe8000011, +0x14003800,0xc10000f9,0xc10002f9,0xc10012e1,0x00000000,0x061478f9,0xc10240e1,0xe800005d, +0x04f011e1,0xc2f700e8,0xc22488e0,0x120e5105,0xc3ffffe8,0xc30002e0,0x120f1109,0x008f48e8, +0x008ef9e1,0x00000000,0xa8003be0,0x034ebc0b,0x00000001,0x10845104,0x120e7808,0xc10240e1, +0xe8ffffe4,0x108efb08,0x008e7de5,0x049011e0,0x108f3c10,0x900039e9,0xc10012e0,0xc2f700e8, +0xc10240e5,0xc3ffffe8,0x061f38f8,0xc10000e1,0x008e88e9,0x120e7c08,0x0093f9f0,0xc1000045, +0xe800002c,0x00000000,0x00843ae5,0x04f0383c,0x008ef909,0xc1000038,0xc1000831,0xc1000434, +0x1082bb30,0xc1000c2d,0xd600430e,0x1091c741,0x00000000,0xb8004720,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891c,0x90004921,0xc1006024,0x10920741,0x00924725, +0xc24cc0e4,0x160e8230,0xc10004e1,0xc30002e4,0x00000000,0xc22488f5,0xc1fff438,0x008e78e4, +0xc10000e1,0x109e4830,0x0343f9e8,0xc1000035,0x10930820,0xc100002c,0x10928811,0xc1ffe8fc, +0xc10000f8,0x109f0861,0xc10000ec,0x900039e0,0x109e8851,0xc10000e4,0xa4000f28,0x109e0841, +0xc30002f4,0x90000c34,0x00834839,0x008308fc,0x90003cf8,0x90000a2d,0x1082cf04,0x900038e4, +0x90003aed,0xc10000fc,0xc10000f8,0x001f7d01,0xc1ffffe1,0x00828ae1,0xe800002d,0x14100afd, +0x00000000,0xa4000be0,0x108e7f05,0x119e390d,0x00000000,0x00000000,0x061ff8e6,0x1082cb04, +0x1092b805,0x120f3f09,0x008e0cf0,0x034e4df0,0x034eccf1,0x008e8cf3,0x108e7b04,0x161e3f18, +0x161e7949,0x00000000,0x900038e5,0x008e39e0,0x034e0cf1,0x008e38ed,0x00000000,0x84003de2, +0xe8000031,0x14103819,0xc10000e4,0x008e0df1,0x00000000,0x90003ae5,0x00000000,0x034e4df3, +0x00000001,0x108e7905,0x00000000,0x900038e5,0x108fbe04,0xc10240e1,0xe8ffff59,0x04903ee0, +0x108f7d09,0x1091c741,0x00000000,0xb8004720,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924761,0x001e4200,0x001e0301,0xc20010e4,0x020e39e1,0xc30382e5, +0x00000000,0xb80039e7,0x00000001,0x029e39e1,0x0011b801,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002025,0x00924725,0xc20188ec, +0xc20014e4,0xc10000e9,0xc30382ec,0xc30382e4,0xc10002e1,0x00000000,0x900039e0,0x90003be9, +0xd2000003,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891c,0xc1004c25,0x00924725,0xc2001ce0,0xc22000ed,0xc30382e1,0x00000000,0xb80038e7, +0xc20800e0,0x00000000,0xc1000239,0xe80000c4,0x029e79e0,0x029e39ed,0x14000400,0x122eb834, +0x122f392d,0xc21200e1,0x008342e1,0xe80000b8,0xc2ddc831,0x14100e04,0xc3000131,0xc10000e1, +0xe8000079,0x04f0380c,0xc100002d,0xc10000fc,0xc10004f9,0xc2ffffe4,0x034f7f08,0x034efe09, +0xc2ffffe0,0xc10200f0,0xc10200e9,0xc301ffe4,0xc301ffe0,0x1082cb09,0x001e7901,0x001e3800, +0x008ebdf0,0x008f3be9,0x00000000,0x093eb9e8,0x093e78f1,0x122e7a28,0x122e3928,0x108fbe21, +0xe8ffffb4,0x84004ce0,0x84000ce5,0x04900b0c,0x10830c10,0x108fff21,0x02018339,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0xd2ffff5c,0xc10002e1,0x00000000,0x0093b8e9, +0x00134201,0xe80000a5,0x14103c05,0xc10000e1,0xe8ffffc9,0x04f0380c,0xc100002d,0xc1000028, +0xc10004fd,0xc2ffffe4,0x034f0a08,0x034ecd29,0xc2ffffe0,0x034f3f08,0x034ecdfd,0xc10200f4, +0xc10200e8,0xc301ffe5,0xc301ffe1,0x008fbced,0x122f3e04,0x008efcec,0x001e7901,0x122efb04, +0x001e3800,0x008f3cf5,0x1082cb08,0x008e7be8,0x093eb9f1,0xeaffffb0,0x122e3a28,0x093eb8e5, +0x122e3a28,0x84004ce0,0x84000ce1,0x10830c20,0x8400cce0,0x84008ce1,0x04900b0c,0x10828a20, +0x108fff21,0xd2ffff37,0xc10000e1,0xe8ffff2d,0x04f0380c,0xc100002d,0xc1000040,0xc100043d, +0xc2ffffe1,0xc301ffe1,0x0012b801,0xd6004002,0xd2ffff0b,0x10924941,0x1081c940,0x9000891d, +0x10924771,0xc10000e1,0xe8000031,0x04e03808,0xc10001e8,0xc10000e5,0x00000000,0x008eb9e9, +0xe800000d,0x04a03a09,0xc10000e9,0x108e7905,0xe8ffffe9,0x04803909,0x0011ba01,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0x9000c905, +0x10900760,0x10924761,0xc2810ce5,0xc10000e0,0xc30001e5,0x00000000,0x900039e1,0x00000000, +0xb80002e3,0x00000001,0xe8000041,0x14003801,0xe8000019,0x14003805,0xe800003d,0x14003809, +0xe8000049,0x1400380d,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0xd1ffdfe6,0x10808211,0xd2ffffdf,0x00000000,0xb801c211,0xd1ffe03e, +0xc1000015,0xd2ffffcb,0x00000000,0xb801c211,0xd1ffe33f,0xd2ffffbb,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0x001ec201,0xc28110e1, +0xc30001e1,0x00000000,0xa00038e3,0x00000001,0x129e3805,0xe8000069,0x14003801,0xc28118e0, +0xc20104e8,0xc24000e5,0xc30001e0,0xc30001e9,0x008e7ae4,0xb80038e3,0x00000001,0x008eb9e1, +0xd1ffd171,0x12114308,0x00113b00,0x0010fa01,0xc1000309,0xd1ffd6ba,0xc1000309,0xc1000019, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xc28118e4, +0xc20104e1,0xc30001e4,0xc30001e1,0x00000000,0xb80039e6,0xd2ffffae,0x008eb9e1,0x10924941, +0x1081c940,0x9000891d,0x10924761,0xc10000e4,0x9000020c,0xc10008e1,0x00000000,0x8400c2e0, +0x840082e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891c,0xc1002025,0x00924725,0x00000000,0xb80002e0,0xb80003ed,0x00000000,0xac00c3e6, +0x00000000,0xac00c2e9,0xc10008e0,0x00000000,0x108eb805,0x009e38e4,0x009e7be9,0x120e790d, +0x008e7ae5,0x0081b9e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924751,0x00000000,0xac00c2e3,0x00000001,0xe800002d,0x14103821, +0x00000000,0xb80002e3,0x00000001,0x0011b801,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x00000000,0xb80002e2,0xd2ffffe2,0x108e3805,0x10924941,0x1081c940,0x9000891c, +0xc1002025,0x00924725,0x00000000,0xac00c2e0,0xb80002ea,0x129e431d,0x121ec30d,0xc2ffffe0, +0x009e78e4,0x008ebaed,0xc2ffffe0,0x900002e8,0x029e79e1,0x029e39e1,0xe8000040,0x8400c2e1, +0x14a03821,0x00000000,0xac00c2e0,0xb80002e7,0x00000001,0xc2ffffe0,0x108eb904,0x108e7821, +0xc2ffffe0,0x900002e8,0x029e79e1,0x029e39e1,0x00000000,0x8400c2e1,0x00000000,0xac00c2e3, +0x00000001,0xe800002d,0x14e03821,0x00000000,0xb80002e3,0x00000001,0x00000000,0xa40038e7, +0xc2ffffe1,0x029e39e1,0x00000000,0x840082e1,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002825,0x00924725,0x00000000,0xac00c2e3, +0x00000001,0xe800002d,0x14103821,0x00000000,0xb80002e3,0x00000001,0x00000000,0xa40038e7, +0xc2ffffe1,0x029e39e1,0x00000000,0x840082e1,0x00000000,0xac00c2ef,0x00000001,0xe8000051, +0x04f003ed,0xc10001e0,0xac0082ec,0x009ebb0d,0xc2ffffe4,0x020ef8ec,0xc2ffffe1,0x029e7ae5, +0x109e7b04,0x00000000,0x029e39e1,0x029e3be4,0x8400c2e1,0x0221b8e9,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0xc10001e0,0xb80002e0,0xac0082e9,0xc10008e0,0x020e78ed, +0x009f43ec,0x8400c2e1,0x109e7905,0xe8000050,0x108e3804,0x029efae5,0x14903d20,0x900002e1, +0x00000000,0xb80002eb,0x00000001,0xc1fff8e0,0xa4003ae0,0x120e7b21,0x00000000,0x00000000, +0x008f7de2,0xe8ffffe9,0x14f03d20,0x108eba04,0x028ef9e1,0x00000000,0x900002e9,0xe8000051, +0x14b03d01,0x00000000,0xb80002e8,0xac00c2e5,0xc10008e4,0xc2ffffe1,0x020f3bf4,0x009ef9f6, +0xc2ffffe4,0xa4003ae4,0x009eb9f5,0x029e7ae5,0x029e39e1,0xc2ffffe0,0x8400c2e1,0x029e39e1, +0x022e38ec,0x840082e1,0x028efce1,0xd2ffff2c,0x0011bb03,0x10924941,0x1081c940,0x9000c904, +0x9000891d,0xc1003424,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0x00154301,0xc1fff8e0,0xc1000059,0x008508e1,0x001e5401, +0x00000000,0x030e160a,0x10859605,0xe8fffff5,0x14901620,0x108e7904,0x800039e1,0xc10020e1, +0xe80000fd,0x049003e0,0x00158401,0xd1fffe18,0x00109402,0xc100200d,0x121e9620,0x121e4660, +0xc100ffe1,0x00000000,0x02ae7ae5,0xc2812ce0,0x029e79e1,0xc30001e0,0xc2812ce4,0x120eb905, +0x00000000,0x033e3ae2,0xc1ffe0e1,0x120e9620,0x00000000,0x008555e1,0x00000000,0x02ae3ae1, +0x121e0640,0x120eb820,0x121ef821,0xc100ffe0,0x02aefbe1,0x029e3be1,0xc30001e4,0x120e3805, +0x00000000,0x033e38e7,0x00000001,0x02ae3ae1,0x121e0620,0x120eb820,0x121e7821,0xc100ffe0, +0x02ae79e1,0xc2812ce0,0x029e79e1,0xc30001e0,0x120e7905,0x00000000,0x033e39e3,0x00000001, +0x02ae3ae1,0x121e3820,0x120eb821,0xc100ffe0,0x02ae7819,0xc2812ce0,0x029e79e1,0xc30001e0, +0x120e7905,0x00000000,0x033e79e2,0xc10020e1,0xe8ffff1d,0x04f015e0,0x02a5bae5,0x121e150d, +0xe80000a5,0x1400380d,0xe80000d9,0x14003809,0xe800010d,0x14003805,0xe8000049,0x14001501, +0x10955505,0xd1fffd00,0x00109402,0xc100010d,0x121e163d,0x02ae06e1,0x129e3805,0xe8000015, +0x14003800,0x12059605,0xc28005e1,0x02a596e1,0xc1ffffe1,0x008555e1,0xe8ffffcd,0x141015fd, +0xc2ffffe4,0xc2ffffe1,0x029e56e5,0x0291b9e1,0x1091c741,0x00000000,0xb800c704,0xb800805b, +0x00000000,0xb8004054,0xb8000051,0x00000000,0xb800871c,0xb8004721,0x07000101,0x10824741, +0x00100901,0xd1fffc80,0x00109402,0xc100080d,0x121e5620,0xc2812ce1,0xc100ffe4,0x120e9620, +0x02aef919,0x029e7be5,0xc30001e0,0x120e7905,0x00000000,0x033e39e3,0x00000001,0x02a5bae1, +0xd1fffc44,0x00109402,0xc100080d,0x121e5620,0xc2812ce1,0xc100ffe4,0x120e9620,0x02aef919, +0x029e7be5,0xc30001e0,0x120e7905,0x00000000,0x033e39e3,0x00000001,0x02a5bae1,0xd1fffc08, +0x00109402,0xc100080d,0x121e5620,0xc2812ce1,0xc100ffe4,0x120e9620,0x02aef919,0x00000000, +0x029e7be5,0xc30001e0,0x120e7905,0x00000000,0x033e39e2,0xd2fffec6,0x1295551c,0x02a5bae1, +0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x90004921,0x1081c724,0xc1002825,0x00920724, +0xc100cc25,0x00900724,0x00924725,0x00000000,0x9005c0ac,0x900600b1,0x00000000,0x900540a4, +0x900580a9,0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094,0x90048099,0x00000000, +0x9003c08c,0x90040091,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c,0x90030081, +0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064, +0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000, +0x90000051,0xc1ffece4,0xc1ffe8e1,0x00000000,0x034ac7e4,0x034a87e3,0x00000001,0xc10000e4, +0x00000000,0x109e0811,0xc10000e0,0x109e4820,0x900038e5,0xe800018c,0x90003915,0x04f038ac, +0xc10000a0,0x011a6b15,0xc235e8e0,0xc278aae4,0xc24f33e9,0xc30ec8e0,0xc3061fe4,0xc30b50e9, +0x00197800,0x0019b900,0x0019fa01,0xc21708e0,0xc2b315e4,0xc29d9de9,0xc3031fe0,0xc30d4de4, +0xc308e3e9,0x0018b800,0x0018f900,0x00193a01,0xc24036e0,0xc27993e4,0xc24be8e9,0xc30c5ee0, +0xc30a26e4,0xc30fb1e9,0x0017f800,0x00183900,0x00187a01,0xc2e69de0,0xc2bd7ae4,0xc24402e9, +0xc30563e0,0xc30e76e4,0xc306d7e9,0x00173800,0x00177900,0x0017ba01,0xc25979e0,0xc2d74ee4, +0xc29082e9,0xc30e1ce0,0xc3078ae4,0xc30f10e9,0x00167800,0x0016b900,0x0016fa01,0xc23f2fe0, +0xc241a3e4,0xc2c3cde9,0xc303e3e0,0xc30db9e4,0xc30839e9,0x0015b800,0x0015f900,0x00163a01, +0xc2a0abe0,0xc2018ce4,0xc23f7ee9,0xc30f4fe0,0xc304a5e4,0xc30f85e9,0x00153800,0x00157900, +0x001b3a01,0xc2020ee0,0xc2f024e4,0xc2fbfee9,0xc30259e0,0xc30cd9e4,0xc30987e9,0x00147800, +0x0014b900,0x0014fa01,0xc246d2e0,0xc27a6ce4,0xc2aac0e9,0xc30fece0,0xc30191e4,0xc30fd3e9, +0x0013b800,0x0013f900,0x00143a01,0xc2fb30e4,0xc2ef91e8,0xc2b49aed,0xc300c8e4,0xc210f2e0, +0xc30abeed,0xc30bdae8,0xc30ffbe0,0x0012f901,0x00137b00,0x0012b800,0x00133a01,0xd606c00e, +0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x00000000,0xb8008058,0xb8014065, +0x00000000,0xb8010060,0xb801c06d,0x00000000,0xb8018068,0xb8024075,0x00000000,0xb8020070, +0xb802c07d,0x00000000,0xb8028078,0xb8034085,0x00000000,0xb8030080,0xb803c08d,0x00000000, +0xb8038088,0xb8044095,0x00000000,0xb8040090,0xb804c09d,0x1091c77c,0xb8048098,0xb80540a5, +0x1091c724,0xb80500a0,0xb805c0ad,0x00000000,0xb80600b0,0xb8004721,0x1082477c,0xb80580a8, +0xb800871d,0x07000101,0x10824925,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905, +0x10900760,0x10924761,0x00000000,0xb803c3e7,0xc22009e1,0xe8000081,0x040039e1,0xc2200be1, +0xe8000075,0x040039e1,0xc2200ce1,0xe8000069,0x040039e1,0xc2200de1,0xe800005d,0x040039e1, +0xc2200ee1,0xe8000051,0x040039e1,0xc2200fe1,0xe8000045,0x040039e1,0xc22010e1,0xe8000039, +0x040039e1,0xc22011e1,0xe800002d,0x040039e1,0xc22012e1,0xe8000021,0x040039e1,0xc22013e1, +0xe8000015,0x040039e1,0xc22014e1,0xe8000055,0x041039e1,0x00000000,0xb80002e3,0x00000001, +0xe8000031,0x14003801,0xd1000d32,0x00108401,0xc1100019,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824742,0x07000102,0x00100901,0xd2ffffe0,0xc10001e1,0x00000000,0x900002e2, +0xd2ffffd6,0xc1000019,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900770,0x10924771, +0x00000000,0x90000051,0x00150201,0x00000000,0xb8028209,0xd1005ffc,0xc29fece5,0xc10000e0, +0xc30001e5,0x00000000,0x800039e1,0x00000000,0xb80294e6,0xd10004dd,0xc10040e1,0x0080b9e1, +0x00000000,0xb80294e6,0xd100621d,0xc21268e1,0x0080b9e1,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940, +0x9000c904,0x9000891d,0xc1008024,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000, +0x90040090,0x90044095,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080,0x90034085, +0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068, +0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000, +0x90000050,0x90004055,0x00158300,0x00188501,0xc10000e4,0xb8004484,0x109e0811,0x00000000, +0x900038e5,0x00000000,0x00000000,0xb8028257,0xd100043c,0xc10040e1,0xc21268e0,0x008815e1, +0x0010d500,0x0010a000,0x0087d5e1,0xe8000099,0x141006fd,0xc1ffff19,0x00000000,0xb8004055, +0x1091c740,0xb8000050,0xb8008059,0x00000000,0xb800c704,0xb8010061,0x00000000,0xb800c05c, +0xb8018069,0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079,0x00000000, +0xb8024074,0xb8030081,0x00000000,0xb802c07c,0xb8038089,0x00000000,0xb8034084,0xb8040091, +0x00000000,0xb8044094,0xb8004721,0x00000000,0xb803c08c,0xb800871d,0x07000101,0x10824741, +0x00100901,0x00000000,0xb80060e3,0x00000001,0xe800005d,0x14003801,0xc1000279,0xc1ffece0, +0x109e8951,0xc1fffce0,0x109e4960,0x008508e1,0x008e88e0,0x90003a51,0xd1000854,0xc2832c14, +0x109e0971,0x0010a000,0x90003878,0x900039e9,0xc3000114,0x00111500,0x0010df01,0xe8000019, +0x141006fd,0xd2ffff16,0xc1ffff19,0xd2ffffb2,0xc1000179,0xc10000e1,0x00000000,0x900016e1, +0x00000000,0xb80020eb,0x00000001,0xe80001c9,0x14103a05,0xc1000c8c,0xc1000c91,0xc21004e4, +0xb80160e0,0xc21008e1,0xc2100ae0,0x008edfe4,0x008e9fe1,0x120e6314,0x00000000,0x008e1fe1, +0x00000000,0x840038e4,0x84003a79,0x00000000,0x90003be1,0x00000000,0xb80020e3,0x00000001, +0xe80001bd,0x1410380d,0xc1fffce1,0x00000000,0x034e08e3,0x00000001,0x1299781d,0xc2001ce4, +0x120ea521,0xc30382e4,0xc10000e1,0x00000000,0xb80039ef,0xc1f8ffe5,0xc2001ce4,0x029efbe5, +0xe8000110,0xc30382e4,0x028ebbe9,0x04f03878,0xc1000074,0x900039e9,0xc2832ce4,0xc2100ce0, +0xc1000069,0xc30001e4,0xc1000064,0x0086dfe1,0x10873928,0xc1000060,0x0015d401,0xc1fffce1, +0x00000000,0x034e48e3,0xc10000e1,0xe800007d,0x04f038e4,0xc1000095,0xc1000058,0xc1000054, +0x00851a71,0x00000000,0xa40214e0,0x034e9b65,0x109e0950,0x0340d758,0x0010a001,0x00111400, +0x90003875,0xd1001a95,0x109e0960,0x00000000,0x129e7821,0x008155e8,0x900038e5,0xc1fffce0, +0xc20900e5,0xc10074e0,0x034e08e1,0x008514e0,0x00000000,0x008555e6,0x10896505,0xe8ffffa9, +0x049025e0,0x10859611,0xd1005fb4,0x109e0960,0x00811885,0x109e0950,0x90003890,0x00109f01, +0x00115d00,0x9000388c,0x0010e001,0xe9ffff50,0xc21200e0,0x10875d05,0x1085d720,0x90002218, +0x008618e1,0x04901d78,0x10869ae8,0x10865911,0xc21000e0,0xb9001fe4,0xc1000019,0x008e1fe3, +0xd2fffd38,0x008e798d,0x129e793d,0x00000000,0x900038e5,0xe800002d,0x14103a0d,0x00000000, +0xb801e0e7,0xc21000e1,0x029e39e1,0xe8000015,0x14003801,0xd2fffe2a,0xc100128c,0xc1001291, +0xe8000015,0x14103a0c,0xc100248d,0xd2fffe12,0xc1001291,0xd2fffe0a,0xc1002491,0xe8000011, +0x14103805,0xd2fffe5a,0xc1000395,0xd2fffe52,0xc1000295,0x10924941,0x1081c940,0x9000891c, +0xc1002825,0x00924725,0xc10000f0,0xc10000e4,0xc10000f5,0xc10000e0,0xc10000ec,0xc10000e9, +0xc10000e4,0x900042e4,0x900002f5,0xc10000e8,0x9000c2e8,0x900082f1,0xc10000e0,0x900142e0, +0x900102ed,0xc10000e0,0x840342e0,0x840302e9,0x00000000,0x900202e0,0x9001c2e5,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0x9000c905, +0x10900760,0x10924761,0x00000000,0x90000051,0x00150201,0xd1ffff63,0xd10007a0,0xc10001e1, +0x00109400,0x900254e2,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000, +0xb8000051,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1003c25,0x00900724,0x00924725,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051, +0x00154200,0x00150301,0x00000000,0xb80183ec,0xb800435b,0x00000001,0xe8000051,0x14103b01, +0xc10002e4,0xc10000e0,0xc1ffff19,0x00000000,0x9000c3e0,0x9003c3e5,0x1091c741,0x00000000, +0xb800c704,0xb800805b,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101, +0x10824741,0x00100901,0x00000000,0xb80083eb,0x00000001,0xe8000075,0x14003a01,0x00000000, +0xb800c3e7,0xc10000e1,0xe8000015,0x041038e5,0x00000000,0xb80143ef,0x00000001,0x00000000, +0x009e16ed,0xe800002d,0x04f038e9,0xd2ffff8c,0xc10000e0,0x009e7ae1,0xc10001e4,0x90018358, +0x900083e5,0xc1ffff18,0x9000c3e0,0x9003c3e5,0xc10000e4,0xc10001e0,0x008efbe9,0x00000000, +0x9000c3e0,0x900083e5,0x00000000,0xb800d4e3,0x00000001,0xe8000091,0x14003801,0x00000000, +0x009e16ed,0xe800002d,0x14e03821,0x00000000,0x900194ed,0xd2ffff24,0xc10000e0,0xc10001e5, +0x00000000,0x9000d4e0,0x9003d4e5,0xc1ffff19,0x00000000,0xa4003be7,0xc100ffe1,0xe8000025, +0x041039e1,0x00000000,0xa4007be7,0xc100e0e1,0xc100e0e0,0x029e79e1,0xe8000095,0x040039e1, +0xd2fffed8,0xc10000e0,0x108e7b05,0xc11004e4,0x900194e4,0x900154ed,0xc1ffff18,0x9000d4e0, +0x9003d4e5,0xd1ffee98,0x10809470,0x0010fb03,0xd1005a00,0x00109403,0xe8000049,0x141006fd, +0x00000000,0xb80194e3,0x00000001,0x009e16e1,0xe8000015,0x14803821,0x109e1621,0x00000000, +0x900194e1,0xd2fffe74,0xc10000e0,0xc10001e5,0x00000000,0x9000d4e0,0x9003d4e5,0xc1ffff19, +0xd1ffeedc,0x10809473,0x001ec601,0xd1ffee30,0x108e3b04,0x10809471,0x0010fb00,0x900154ec, +0x900194e2,0xd1ffd128,0x00109500,0x0010d403,0xe800001d,0x141006fd,0xd2fffe20,0xc10000e1, +0x00000000,0x9000d4e1,0xc1ffff19,0x00000000,0xb80115e3,0x00000001,0xe8000079,0x14103801, +0x00000000,0xb80114e3,0x00000001,0xe800001d,0x14003801,0x00000000,0xb800d4e7,0xc10000e1, +0xe8000031,0x041038e5,0xd1ffd48c,0x00109400,0x0010d503,0xe800001d,0x141006fd,0xd2fffdbc, +0xc10000e1,0x00000000,0x9000d4e1,0xc1ffff19,0x00000000,0xb801d5e4,0xb80114eb,0xc10400e1, +0x028e39e0,0x900115e9,0x00000000,0x9001d5e1,0x00000000,0xb801d5eb,0xc10080e1,0x029e3ae1, +0xe80000b5,0x14003801,0xc10001fd,0x00000000,0xb80015e7,0x00000001,0xe80000a5,0x14103905, +0x00000000,0xb80115e4,0xb80155eb,0xc1000ce1,0x00000000,0x061e78e5,0xc10000e1,0xe8000029, +0x04d038e4,0xc10000f9,0xc10000e1,0x00000000,0x00000000,0x008e38e9,0xe8fffff5,0x04b038e4, +0x108fbe05,0xc1ffffe1,0x008fbee1,0x008e3efd,0x120f7809,0x00000000,0xb80154e7,0x00000001, +0x108ebd20,0x009e16e5,0xe80000fd,0x04b03ae1,0x00000000,0x900194e5,0xd2fffce0,0xc10000e0, +0xc10001e5,0x00000000,0x9000d4e0,0x9003d4e5,0xc1ffff19,0xd2ffff5a,0xc10000fd,0xe8000015, +0x1410390c,0xc10000e1,0xc21000e1,0x029e3ae1,0xe80000ad,0x14003801,0xc10048f1,0x00000000, +0xb80115e4,0xb80155eb,0xc10000e1,0xe8000029,0x04d038e4,0xc10000ed,0xc10000e1,0x00000000, +0x00000000,0x008e38e9,0xe8fffff5,0x04b038e4,0x108efb05,0xc1ffffe1,0x00000000,0x008efbe1, +0x00000000,0x061e3aee,0x009e39e1,0x00000000,0x061e78f1,0xc10000e1,0xe8000029,0x04d038e4, +0xc10000f9,0xc10000e1,0x00000000,0x00000000,0x008e38e9,0xe8fffff5,0x04b038e4,0x108fbe05, +0xc1ffffe0,0x061e3bf1,0xd2ffff0c,0x00000000,0x008fbee1,0x008e38f9,0x008f78fd,0xd2ffff62, +0xc10090f1,0x008eb9f4,0xb800d4e5,0x00000000,0x900194ea,0xc10000e1,0xe800005d,0x041038e5, +0x00000000,0xa4003ae7,0xc100ffe1,0xe8000025,0x041039e1,0x00000000,0xa4007ae7,0xc100e0e1, +0xc100e0e0,0x029e79e1,0xe8000021,0x040039e1,0x00000000,0xb80154e3,0xd2fffc51,0x108ef805, +0x00000000,0x900194ed,0xc10001e1,0x00000000,0x9000d4e1,0x00000000,0xb801d5e3,0xd2fffb7d, +0x128e3821,0xc1000018,0x9001d5e1,0x1092497d,0x10924935,0x1081c97c,0x9000891c,0x9000c905, +0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc1006025,0x00900724,0x00924725,0x00000000, +0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e4,0xc1ffe4e1,0x00000000,0x0345c7e8, +0x034587e5,0x00000000,0x034547e1,0x0016c201,0x00164401,0x00168300,0x00000000,0x00160501, +0x00000000,0xb801c2e0,0xb80384e7,0x00000001,0xc10000e0,0x900242e4,0x129e7821,0xe800007d, +0x041038e5,0xd1fffa4a,0x0010c401,0xe800006d,0x141006fd,0xc10000e0,0xc1ffff19,0x00000000, +0x9002d9e1,0x1091c77d,0x1091c734,0xb8004055,0x00000000,0xb800c704,0xb8010061,0x00000000, +0xb8000050,0xb800c05d,0x00000000,0xb801c06c,0xb8004721,0x00000000,0xb8008058,0xb8018069, +0x1082477c,0xb8014064,0xb800871d,0x07000101,0x10824935,0x00100901,0x00000000,0xb801dbe4, +0xb8001be3,0x00000001,0xe8000028,0x129e79dd,0x14003804,0x9001dbe5,0xe8000079,0x14003809, +0xe8000089,0x1400380d,0xd2ffff7e,0xc1ffff19,0xd1001891,0x00111a00,0x0010db00,0x00109902, +0x00150601,0xe8000099,0x141014fd,0x00000000,0xb803d9e7,0xc2f000e1,0xc10000e0,0x029e79e1, +0xe800001d,0x041038e5,0x00000000,0xb80159e3,0x00000001,0x00000000,0x900199e1,0xd2ffff28, +0xc10000e1,0x00000000,0x9002d9e1,0xc1ffff19,0xd1001dd1,0x00111a00,0x0010db00,0x00109902, +0xd2ffffa6,0x00150601,0x109e8950,0x109e0971,0xd10035a0,0x109e4960,0x00109901,0x00111a00, +0x90003958,0x90003a5d,0x0010db00,0x90003854,0x00115801,0xd2ffff72,0x00150601,0x00000000, +0xb8001be3,0x00000001,0xe8000049,0x1400380d,0x00000000,0xb801990d,0xd1ffe925,0xc1fff8e1, +0x008088e1,0xc1fff8e0,0xb801d9e4,0xb80219e1,0x0080c8e0,0x10809971,0xd1ffe942,0x00000000, +0x900299e0,0x900259e5,0x00000000,0x9002d919,0xd2fffe76,0xc1000019,0x10924941,0x1081c940, +0x9000891c,0xc1003825,0x00924725,0xc20928e0,0x108282a1,0xc100002c,0xc10000f8,0x008fc2e1, +0xc10000f4,0x008efe28,0x008f3efd,0xc10000e4,0x108f7d04,0xc10020e1,0xc10000e4,0x90003ce4, +0xc10048e9,0xe8ffffe8,0xc10048e4,0x90003be5,0x04903de0,0x008efbe8,0x008f3ce5,0x1082cb05, +0xe8ffffc1,0x14900b48,0x108fbe11,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x1092497d,0x10924945,0x1081c97c,0x9000891c,0x9000c905,0x1081c744,0x90004920,0xc1003025, +0x00920724,0xc101b425,0x00900724,0x00924725,0x00000000,0x900700c0,0x900740c5,0x00000000, +0x900680b8,0x9006c0bd,0x00000000,0x900600b0,0x900640b5,0x00000000,0x900580a8,0x9005c0ad, +0x00000000,0x900500a0,0x900540a5,0x00000000,0x90048098,0x9004c09d,0x00000000,0x90040090, +0x90044095,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080,0x90034085,0x00000000, +0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d, +0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050, +0x90004055,0xc1ffece8,0xc1ffe8e0,0xc1ffe4e5,0xc1ffe0e0,0x034e47e8,0x0345c7e1,0x00000000, +0x0346c7e4,0x034587e1,0x00150200,0x00178501,0x00160301,0x00180401,0x00000000,0xac0004e3, +0x00000001,0x009778e5,0xe80000e1,0x14e01d01,0xc1201119,0x00000000,0xb8004055,0x1091c77c, +0xb8000050,0xb800c05d,0x1091c744,0xb8008058,0xb8010061,0x00000000,0xb800c704,0xb8018069, +0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079,0x00000000,0xb8024074, +0xb8030081,0x00000000,0xb802c07c,0xb8038089,0x00000000,0xb8034084,0xb8040091,0x00000000, +0xb803c08c,0xb8048099,0x00000000,0xb8044094,0xb80500a1,0x00000000,0xb804c09c,0xb80580a9, +0x00000000,0xb80540a4,0xb80600b1,0x00000000,0xb805c0ac,0xb80680b9,0x00000000,0xb80640b4, +0xb80700c1,0x00000000,0xb80740c4,0xb8004721,0x1082477c,0xb806c0bc,0xb800871d,0x07000101, +0x10824945,0x00100901,0xd1ffd23c,0xc1ff64e1,0x00000000,0x008108e0,0x0010a001,0x0010c501, +0x00000000,0xb80014e6,0xc100a4e0,0x0010dd00,0x00109401,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80054e6,0xd1ffe70c,0xc100a0e1,0x009e08e0,0x00000000,0xc1ff5ce9,0x008b48e8, +0x900038e5,0xc1ff62e0,0x0010ad01,0x00000000,0x033e48e3,0xc1001fe1,0x009e38e5,0xd1ffe7a8, +0x129e38e1,0x0087f9e1,0x0010df01,0x00000000,0xa402a0ec,0xa4001ef1,0xc29dfce8,0xa40420e4, +0xc29e9ce1,0xc29e7ce4,0xc30001e0,0xc30001e9,0xc30001e5,0x120e3b08,0x0319fbe0,0x031a3be5, +0xeb000048,0x034a78e8,0x00170601,0x120e3c08,0x00975d7c,0x10879e05,0x008698e1,0x00151800, +0x00000000,0x108ae029,0x14e03b34,0x108b3904,0xc10000a9,0xc1000199,0xe8000031,0x14102901, +0xd2fffe36,0xc1201219,0x109e7b34,0xc29ebce0,0xc1000099,0x120e7908,0xc30001e1,0x00000000, +0x034979e1,0xd2ffffd7,0xc1ff64e4,0xac00608c,0xc10001e1,0x020e389c,0x034548e6,0xc1ff68e5, +0xe8000284,0x00000000,0xc1000091,0x14002300,0x008648e4,0x1098b805,0xc1ff1ce1,0x008848e1, +0xe80000d8,0xc1ffffe1,0x04101468,0x0088e3e1,0xc1ffffe0,0xa4001ee1,0x00000000,0x008b2ce3, +0xe8000098,0x120e3809,0x14102c00,0x10879e04,0x00869ae1,0x1102aa00,0x108aaa04,0xc29dfcf5, +0xc29e9cec,0x031faba8,0xc30001f5,0xc30001ec,0xa40460fc,0xc1fff3e9,0xc29e7cf0,0xc29ebce4, +0xc10001e1,0xc30001f0,0x00000000,0xc30001e5,0x120efe08,0x0319feec,0x008ebee9,0x120eba08, +0x031a3ef0,0x034a7bf5,0x108e7f04,0x03497ae5,0x00000000,0x00000000,0x09bb0ae5,0x020e389d, +0xe8000019,0x14102900,0x1189be34,0x1098b805,0xd2fffd26,0xc1201219,0x00000000,0xb80019ef, +0x00000001,0x00000000,0x010e15ed,0x10865910,0x09b93890,0x00157b01,0xe80000a1,0x14e01f54, +0x001f2701,0xc1ff5ce0,0xc1001fe8,0xc1fff8e5,0x00000000,0x034e48e0,0x009e3a7d,0x122e380d, +0x120fb80d,0xc100a4e0,0x00000000,0x008f7ee5,0x009e08e0,0xa40039ec,0x108e7905,0x00000000, +0x900038e5,0xe8000045,0x14903d21,0x001eb901,0xc1fff8e0,0xa4003ae0,0x120e7b21,0x00000000, +0x00000000,0x008f7de2,0xe8ffffe9,0x14f03d20,0x108eba04,0x028ef9e1,0xc100a4e1,0x009e08e1, +0x00000000,0x900038e9,0x00975df8,0x020e1cf8,0x0087dff9,0x008738ed,0x00000000,0x009e1f9d, +0xe8000110,0x021e1ce1,0x14002600,0x029ef889,0x120e3b05,0x008ee9e0,0x031ea9e3,0x00000001, +0xc10000e0,0x129e7a3d,0xe8000055,0x041038e5,0x122f3a10,0xa4007bec,0x0097dff1,0xc10001e4, +0xc10000e0,0x009e9ff1,0x00000000,0x020e79f0,0x021e9ce9,0x109e7905,0x029e7ae5,0x008e7be5, +0x120e7905,0x008ee9e4,0x031ea9e7,0x00000001,0x129e7a3d,0xe8ffffbd,0x040038e5,0x00000000, +0xa4007bbf,0x00000001,0x129baf3c,0xc10001e0,0x122e7a11,0xe80000f8,0x0097dfe4,0x020e78b9, +0x14102e00,0x029ee4e5,0xc10000e1,0x10851410,0x900014e1,0x122e2f11,0xc10001e0,0x129bb83d, +0xe80001a8,0x020e78b9,0x14102e00,0x029ee4e5,0xc10000e1,0x10851410,0x900014e1,0xe8fffda5, +0x14102301,0x00000000,0x008f5f75,0xe8000259,0x14e03d01,0xc10000e1,0xc10040e0,0x009e7875, +0xe8000571,0x048039e1,0xd2fffb4e,0xc1201319,0x00000000,0x031ea9ef,0x00000001,0xc10000e0, +0x129e7a3d,0xe8000059,0x041038e5,0x120e3b04,0x122f3a10,0x0097dff1,0xc10001e0,0x033e25e0, +0x009e5ff1,0x00000000,0x020e38f0,0x021e5ce5,0x109e3805,0x029e79e1,0x008ef8e4,0x008e29e1, +0x00000000,0x031eb8e7,0x00000001,0xc10000e0,0x129e7a3d,0xe8ffffb9,0x040038e5,0x120e3b05, +0x00000000,0x033be5e1,0xd2ffff03,0xe8000011,0x14102e3d,0xe800006d,0x14102801,0x1097df05, +0xe8000034,0x021e1c7d,0x14003b00,0x129c7805,0x120e2e09,0x00000000,0x034c21e3,0x00000001, +0xd2fffef4,0x099e31c1,0x00000000,0x900014e1,0x10851411,0xd1ffcee9,0x0010d500,0x0010ae00, +0x028924e6,0x120e6e09,0x008e21e5,0x00000000,0x90003819,0x00000000,0x034c21e5,0xd2ffffc7, +0x108e2809,0xe8000025,0x04f01fe1,0xd1ffe338,0x0010ad02,0xc100100d,0x120e1c40,0x10975d41, +0x1087df40,0x02873819,0xc10001e0,0x0010d500,0x0097dfa1,0x021e5c7c,0x020e38a1,0xd1ffce80, +0x109e3805,0x029e39e1,0x0080aee1,0x1097df05,0x021e1c7d,0xd2fffe60,0x129c7805,0x099e3119, +0x10851410,0x900014e1,0xe8000011,0x14102e3d,0xe800006d,0x14102801,0x1097df05,0xe8000034, +0x021e1c7d,0x14003b00,0x129c7805,0x120e2e09,0x00000000,0x034c21e3,0x00000001,0xd2fffe40, +0x099e31c1,0x00000000,0x900014e1,0x10851411,0xd1ffce0d,0x0010d500,0x0010ae00,0x028924e6, +0x120e6e09,0x008e21e5,0x00000000,0x90003819,0x00000000,0x034c21e5,0xd2ffffc7,0x108e2809, +0xe8000025,0x04f01fe1,0xd1ffe25c,0x0010ad02,0xc100100d,0x120e1c40,0x10975d41,0x1087df40, +0x02873819,0xc10001e0,0x0010d500,0x0097dfa1,0x021e5c7c,0x020e38a1,0xd1ffcda4,0x109e3805, +0x029e39e1,0x0080aee1,0x1097df05,0x021e1c7d,0xd2fffdac,0x129c7805,0x099e3119,0x10851410, +0x900014e1,0x192e1501,0x118e9500,0x129e780c,0x122e3809,0x099f3ae4,0x099e3ae1,0xe8000365, +0x14e038f8,0x10857809,0xc20000e4,0xc10000e8,0x11ce1581,0xc30400e4,0x009eba55,0x001e7901, +0x022eb9e9,0x09bef8e9,0x108e7c0c,0x00000000,0xc24d44e1,0x120e7908,0xa40220e0,0xc30002e1, +0x00000000,0x034e79e3,0x129e3805,0xe8000344,0x21cefbe5,0x14103801,0xc2855885,0xc3000185, +0x00186101,0xc208f0e1,0x008818e1,0x11ce7d00,0x01ae1481,0x029e39e1,0xe8000289,0x14003801, +0xe800009d,0x14e01f55,0xc1ff5ce0,0xc1001fe8,0xc1fff8e5,0x00000000,0x034e48e0,0x009e3a7d, +0x122e380d,0x120fb80d,0xc100a4e0,0x00000000,0x008f7ee5,0x009e08e0,0xa40039f0,0x108e7905, +0x00000000,0x900038e5,0xe8000045,0x14903d21,0x001eb901,0xc1fff8e0,0xa4003ae0,0x120e7c21, +0x00000000,0x00000000,0x008f7de2,0xe8ffffe9,0x14f03d20,0x108eba04,0x028f39e1,0xc100a4e1, +0x009e08e1,0x00000000,0x900038e9,0x00975df8,0x020e1cf8,0x0087dff9,0x008738f1,0x109e5f10, +0xc10000e1,0x00000000,0x021e5ce5,0xc1000ae4,0x129eb93d,0x00000000,0x061e79ea,0x0088a1e5, +0x00000000,0xa40262e7,0x00000001,0xe8000045,0x041038e5,0x00000000,0xa40062e4,0xa400a2ea, +0x1097df11,0xc10001e1,0x020e38e4,0x009e5fe5,0x109e3804,0x021e5ce5,0x029e39e1,0xc1000ae0, +0x008e7ae1,0x00000000,0x061e38e6,0x0088a1e1,0x00000000,0xa40122e3,0xe8000049,0x04101468, +0x0097dfe1,0x00000000,0xa4001ee4,0xb80019e3,0x00000001,0xe8000028,0x120e7909,0x040015e0, +0x10879e04,0x00869ae5,0xd1ffcb95,0x0010f801,0xc1000108,0x00157801,0x001ec601,0x10865911, +0x00000000,0xa40162e8,0xa401a2e5,0x109e5f04,0xc10001e1,0x020e38e5,0x029e1ce1,0x111f7a00, +0x111e3800,0x111f3901,0xc10001e0,0x009e5ff4,0x099eb8ed,0x109e7904,0x0097f9f0,0x09bebde9, +0x020e38e4,0x900014e9,0x029e1ce1,0x111e3801,0x099e38ed,0x09be3ce1,0x10851420,0x900054e1, +0xe8000045,0x04101469,0x00000000,0xa4001ee4,0xb80019e3,0x00000001,0xe8000028,0x120e7909, +0x040015e0,0x10879e04,0x00869ae5,0xd1ffcaf1,0x0010f801,0xc1000108,0x00157801,0x001ec601, +0x10865911,0x00000000,0xa401e2e8,0xa40222e5,0x109e5f04,0xc10001e1,0x020e38e5,0x029e1ce1, +0x111f7a00,0x111e3800,0x111f3901,0xc10001e0,0x009e5ff4,0x099eb8ed,0x109e7904,0x0097f9f0, +0x09bebde9,0x008e1f74,0x900014e8,0x020e78e5,0x00000000,0x029e5ce5,0x111e7901,0x099e79ed, +0x09be7ce5,0x10851420,0x900054e5,0x11ce7800,0x01ae1481,0x029e39e1,0xe8fffd89,0x14103801, +0x008e1f75,0x118e3801,0x120e3811,0x009514e1,0xc20900e4,0x120e1b0c,0xc10240e9,0x120e1608, +0x008298e4,0x008e57e1,0x00000000,0x009eca50,0x008e39e1,0x122e7b7d,0x129e790d,0x008e7be5, +0x122e7909,0xe8000014,0x009e7ae5,0x04e01428,0x900038e5,0xd6000152,0xd2fff59e,0xc1000019, +0xc20000e8,0xc2ffffe0,0x11ee5515,0xc30400e8,0xc37fffe1,0x001eba00,0x001e3801,0x020eba55, +0xd2fffca8,0x009e38e9,0x09be39e1,0x008ef8e9,0xd2fffcd5,0xc2867085,0xc3000185,0x10924941, +0x1081c940,0x9000891c,0xc1007025,0x00900724,0x00924725,0x00000000,0x90010060,0x90014065, +0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xe8000058,0xc24e305d, +0x14000300,0xc300025d,0xe8000081,0x14000305,0xe80001c5,0x1400030d,0x00000000,0xb8004055, +0x00000000,0xb8000050,0xb800c05d,0x1091c740,0xb8010060,0xb8014065,0x00000000,0xb8008058, +0xb800871d,0x07000101,0x10824741,0x00100901,0xc10024e1,0x00000000,0x060384e1,0xc10000e1, +0xe8ffffb9,0x04e03838,0xc1000058,0xc1000065,0xc100082d,0xc1000034,0xc1000c28,0xc1000431, +0xd6008156,0xd2ffff97,0xc10000e1,0xe8ffff8d,0x04e03810,0xc1000059,0xc24ec0ed,0xc24ec0f4, +0xc24ec0e0,0xc24ec0f1,0xc24ec0e8,0xc30002ec,0xc24ec0e5,0xc30002f4,0xc30002e0,0xc30002f1, +0xc30002e8,0xb801bd54,0xb801fc51,0xc30002e4,0xb8023b4c,0xb8027a49,0x00000000,0xb802b944, +0xb802f843,0x0013c201,0xc1000064,0xc1000038,0xc1000435,0xc1000830,0xc1000c2c,0x10828f31, +0xd600616a,0x00000000,0xb8040fe4,0xb80417e1,0x00000000,0xb8044ffc,0xb8060fe1,0x00000000, +0xb8064fe5,0x00000000,0xb8068fe8,0xb806cfe1,0x00000000,0xb8070fe4,0x21ceb9e1,0x00000000, +0x00000000,0xb8074fe1,0x00000000,0x90040fe8,0x21cef855,0x10859604,0x21ceb950,0xb80457ed, +0xc10000f4,0x21cfb848,0x21ce7a4d,0xc10000f0,0x21ceb944,0x90060fed,0xc10000e0,0x90064fe8, +0x21ce7841,0xc10000ec,0x90068fe4,0x21cfbfed,0xc10000e8,0x90070fe8,0x9006cff9,0xc10000e4, +0x90074fe4,0x90044ff9,0xc10090e0,0x9007cfe0,0x90078ff5,0xe9ffff34,0x90084fec,0x90080ff1, +0x0083cfe0,0x9008cfe4,0x90088fe9,0x04801611,0xd2fffe4b,0xc10000e1,0xe8fffe41,0x04e03810, +0xc1000059,0xc24ec0ed,0xc24ec0f4,0xc24ec0e0,0xc24ec0f1,0xc24ec0e8,0xc30002ec,0xc24ec0e5, +0xc30002f4,0xc30002e0,0xc30002f1,0xc30002e8,0xb8003d60,0xb8007c55,0xc30002e4,0xb800bb50, +0xb800fa4d,0x00000000,0xb8013948,0xb8017846,0xc1000041,0x0013c201,0x008e9008,0xc10000e0, +0xc10000e5,0x00000000,0x90003ae1,0x00000000,0xb8018fe8,0xb801cfe5,0xc10000ec,0xb8020fec, +0xb8024fe1,0xc10000e0,0xb8028fe8,0xb802cfe5,0xc10000e0,0x90008fe0,0x90004fe5,0x00000000, +0x90010fe0,0x9000cfed,0xc10000f8,0x21cf3954,0x21cf7a61,0xc10054e0,0x21ceb84c,0x21cefb51, +0xc1001264,0x21ce3944,0x21ce7a49,0x00828fe0,0x90018ff4,0x90014ff9,0xc1004838,0x90020fec, +0x9001cff1,0xc1004c34,0x90028fe4,0x90024fe9,0xc1005030,0x9002cfe0,0xc100542d,0xd600617a, +0x00000000,0xb8088fe8,0xb80897e5,0xc10090e4,0x00000000,0xc10090e1,0x00000000,0x008410e6, +0x00000000,0x21ce7ae6,0x00000000,0x90088fe5,0x00000000,0xb808cfe8,0xb808d7e7,0x00000001, +0x10859604,0x21ce7ae5,0xe8ffff11,0x04801610,0x9008cfe4,0x0083cfe1,0xd2fffce3,0x10924941, +0x1081c940,0x9000891c,0x90004921,0xc100c824,0x10920741,0x00924725,0x00134201,0xc1ff70e0, +0xc1000031,0x008488e1,0xc24da02c,0x10829261,0xc1000044,0xc300022d,0xd600c18a,0x10830c05, +0xe8ffffe9,0x14800c0c,0x108492c0,0x10834d61,0xc1ff70e0,0xc1000045,0xc24ec040,0xc100003c, +0x008488e1,0xc3000240,0xc1004830,0xc1001839,0xc1003034,0xc1007828,0xc100602d,0xd600a1a6, +0x1091c741,0x00000000,0xb8004720,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891c,0xc1002c25,0x00924725,0xc10000e1,0xe8000025,0x04e03814,0xc100003d,0xc1000038, +0x00130201,0xc1000034,0x00128300,0x0012c401,0xd602c1be,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1003425,0x00924725,0x00000000, +0xb8000240,0xb800423d,0xc1000039,0xc100042c,0xc1000830,0xc1000035,0xc1000c29,0xd600621a, +0xc10000e4,0x90040340,0xc10000e1,0x00000000,0x900402e5,0x00000000,0x9004433d,0x00000000, +0x900442e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924925, +0x1081c97c,0x9000891c,0x9000c905,0x1081c724,0xc1005c25,0x00900724,0x00924725,0x00000000, +0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0xc1ffece4,0xc1ffe8e0,0x00168201,0x00000000,0x034647e4, +0x034ec7e2,0x00158300,0x00160501,0x00154401,0xc10480e4,0xa40244e4,0xc2afc0e1,0x00000000, +0x061e59e6,0xc30001e0,0x00000000,0x120eb909,0xe8000014,0x0086fae1,0x14103909,0xe80001bd, +0x14003b01,0xd1000228,0x110e3b01,0x0010db00,0x060539e1,0xc1000210,0x00000000,0x00108501, +0xd1fffa5d,0x00000000,0x0010d400,0x00109b01,0xc1000211,0x00000000,0xa40255f3,0x00000001, +0xe80001a1,0x14003c09,0x001ed601,0x120e7b08,0xc1fffce0,0x11debb91,0x00000000,0x008e39e1, +0x00000000,0x034e3863,0x00000001,0x110e3801,0x029e3ae1,0xe800003d,0x14003801,0xc1fff8e1, +0x008eb9e1,0xc1ffffe4,0x034e3a60,0xc1fffce1,0x00000000,0x008ebae0,0x008efbe7,0x11de7b90, +0x110e3801,0x029e39e1,0xe8ffffdd,0x14103801,0xc10240e4,0xc10020e1,0xc238e5e4,0x009eb9ed, +0x00000000,0x061e7ae6,0xe8000120,0x121e7949,0x14003c08,0x0095f8e5,0xd1000154,0xc10120e0, +0xc10090e5,0x10911708,0x008098e4,0x0080dbe2,0x10911708,0xa402550d,0xd1fff985,0xc10120e1, +0x00809be1,0xc20900e0,0x00109b01,0xd1fffd8c,0x060519e1,0x10855aa1,0x00115700,0x0080d550, +0x00111801,0xc1001fe1,0xe8000039,0x0490385c,0xc1001f59,0xc108b850,0x00855551,0xd1fffdac, +0x00809454,0x0080d463,0xc1ffffe4,0xc10048e1,0x009514e0,0x008596e5,0xe8ffffe5,0x04f0165d, +0xd1001bd8,0x00109803,0x1091c77d,0x1091c725,0x00000000,0xb800c704,0xb8010061,0x00000000, +0xb8004054,0xb8000051,0x00000000,0xb801c06c,0xb800871d,0x00000000,0xb800c05c,0xb8008059, +0x1082477c,0xb8018068,0xb8014065,0x07000101,0x10824925,0x00100901,0xd1fffc44,0x00000000, +0x0010db02,0x00108501,0xd1fffc34,0xc10090e0,0xc10048e5,0x0080dbe0,0x008098e6,0xd2fffe5b, +0xd2fffe6e,0xc10240ed,0xc10002e1,0xe8ffff19,0x04f0385c,0xc1000259,0xc1009054,0xc1012051, +0xd1fffbfc,0x00809560,0x0080d46f,0x10859604,0xc10090e4,0xc10048e1,0xe8ffffe8,0x008555e0, +0x008514e5,0x0490165d,0xd2fffedf,0x10924941,0x1081c940,0x9000891c,0xc100c025,0x00900724, +0x00924725,0x00000000,0x900740c4,0x900780c9,0x00000000,0x9006c0bc,0x900700c1,0x00000000, +0x900640b4,0x900680b9,0x00000000,0x9005c0ac,0x900600b1,0x00000000,0x900540a4,0x900580a9, +0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094,0x90048099,0x00000000,0x9003c08c, +0x90040091,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c,0x90030081,0x00000000, +0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069, +0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051, +0xc10000e1,0xe80001d1,0x04e03810,0xc10000c9,0x001bc201,0xc10000c4,0x001b8300,0xc10000c1, +0xc25d5ee8,0xc2e352e4,0xc24f1ee1,0xc3fde9e8,0xc30bcbe4,0xc3fb30e1,0x001b7a00,0x001b3900, +0x001af801,0xc25284e8,0xc277f9e4,0xc219fde1,0xc30763e8,0xc3f281e4,0xc30ffce1,0x001aba00, +0x001a7900,0x001a3801,0xc2769ee8,0xc2cdbbe4,0xc237ade1,0xc3fc89e8,0xc3f1cee4,0xc30acfe1, +0x0019fa00,0x0019b900,0x00197801,0xc2e890e8,0xc2c779e4,0xc255c2e1,0xc30f9ee8,0xc30898e4, +0xc3ff4de1,0x00193a00,0x0018f900,0x0018b801,0xc2934be8,0xc21770e4,0xc2ad7ce1,0xc3f0bde8, +0xc3f061e4,0xc3f89ce1,0x00187a00,0x00183900,0x0017f801,0xc2aa3ee8,0xc21caee4,0xc26cb5e1, +0xc300b2e8,0xc3f434e4,0xc30f42e1,0x0017ba00,0x00177900,0x00173801,0xc28807e8,0xc23887e4, +0xc2b0e2e1,0xc30d7ee8,0xc3f767e4,0xc304cfe1,0x0016fa00,0x0016b900,0x00167801,0xc2c853e8, +0xc2e603e4,0xc23245e1,0xc3f530e8,0xc3f003e4,0xc30e31e1,0x00163a00,0x0015f900,0x0015b801, +0xc28962e8,0xc29346e4,0xc28360e1,0xc30376e8,0xc30cb1e4,0xc3f642e1,0x00157a00,0x00153900, +0x0014f801,0xc2f549e8,0xc20ab7e4,0xc26cbae1,0xc30fdce8,0xc3f023e4,0xc3f34ee1,0x0014ba00, +0x00147900,0x00143801,0xc27ca0e8,0xc2a2a2e4,0xc2ca18e1,0xc309bde8,0xc30216e4,0xc3f137e1, +0x0013fa00,0x0013b900,0x00137801,0xc28756e8,0xc278aae4,0xc235e8e1,0xc3f9e0e8,0xc3061fe4, +0xc30ec8e1,0x00133a00,0x0012f900,0x0012b801,0xd606c22a,0x00000000,0xb8000050,0xb8004055, +0x00000000,0xb8008058,0xb800c05d,0x00000000,0xb8010060,0xb8014065,0x00000000,0xb8018068, +0xb801c06d,0x00000000,0xb8020070,0xb8024075,0x00000000,0xb8028078,0xb802c07d,0x00000000, +0xb8030080,0xb8034085,0x00000000,0xb8038088,0xb803c08d,0x00000000,0xb8040090,0xb8044095, +0x00000000,0xb8048098,0xb804c09d,0x00000000,0xb80500a0,0xb80540a5,0x00000000,0xb80580a8, +0xb805c0ad,0x00000000,0xb80600b0,0xb80640b5,0x00000000,0xb80680b8,0xb806c0bd,0x1091c740, +0xb80700c0,0xb80740c5,0x00000000,0xb80780c8,0xb800871d,0x07000101,0x10824741,0x00100901, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc100e824,0x90004920,0x10920741,0x00900724, +0x00924725,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c,0x90030081,0x00000000, +0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069, +0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051, +0x00178200,0x00154301,0x00000000,0xb900c4e6,0xc10088e1,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb90104e6,0xc10084e1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80043e3, +0x00000001,0xe800013c,0xc1ff78e5,0x14003800,0x008748e4,0x00150301,0xc1000271,0xe800002d, +0x14103808,0xc100206d,0x00000000,0xb801c3e8,0xb80083e3,0xc10100e5,0x120e3808,0x028e7ae5, +0x1086f810,0x9001c3e5,0x00000000,0xb801c3e3,0x00000001,0x129e3841,0xe80000f1,0x14003801, +0xc10020e0,0xac031410,0x061e5b71,0xd1ffd368,0x009e386d,0x008e39e1,0x10808270,0x00000000, +0x1200f809,0x00000000,0xac0354e0,0x8403141b,0x00000001,0xe80000b5,0x040006e1,0x00000000, +0xb80255e3,0x00000001,0xc10000e0,0x129e7805,0xe8000099,0x041038e5,0xc12009e0,0xc1ffff19, +0x00000000,0x9003dee1,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059, +0x00000000,0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c, +0xb8020071,0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x00000000, +0xb8034084,0xb8038089,0x00000000,0xb8004720,0xb800871d,0x07000101,0x10824741,0x00100901, +0xd2fffede,0xc1000171,0xc10000e1,0xe800007d,0x04f0386c,0xc1000069,0xc1ffc0e1,0x008548e1, +0xc10000e1,0xe8000059,0x04f03870,0xc100007d,0x00851a55,0xd1ffd0f0,0x10809e72,0xc100040d, +0xe800001d,0x1410063d,0xd2ffff40,0xc1200ae1,0x00000000,0x9003dee1,0xc1ffff19,0xe800007d, +0x14000601,0x108e0605,0x1087df04,0x800014e1,0xe8ffffc5,0x04901f70,0x10851481,0x10869a05, +0xe8ffffa1,0x04901a6d,0xc10020e1,0xe8000085,0x04f01be0,0x00169b01,0xc1ffc0e4,0xc1ffe0e1, +0x008e48e4,0x008e08e1,0x00851be4,0x00855be1,0xd1ffd074,0x10809e72,0xc100040d,0xe8000025, +0x1410063d,0xd2fffec4,0xc1200ae1,0x00000000,0x9003dee1,0xc1ffff19,0xd2ffff92,0xc10000e1, +0xe80000b1,0x14000601,0x108e4605,0x10869a04,0x800015e4,0xc10020e1,0xe8ffffb8,0x00000000, +0x800014e5,0x04901ae0,0x10851404,0x10855505,0xc1ffc0e4,0xc1ff80e0,0xc1000069,0x008648e4, +0x008608e1,0xc10000e1,0xe8000089,0x04f03870,0xc100007d,0x00159900,0x00155800,0x00851a61, +0x00000000,0x031e166b,0x00000001,0xe800004d,0x14003801,0xd1ffcfd0,0x10809e72,0xc100060d, +0x00000000,0x80001419,0x00000000,0x031e556b,0xc1003fe1,0xe8000025,0x041039e1,0xd2fffe0c, +0xc1200be1,0x00000000,0x9003dee1,0xc1ffff19,0xd2ffff5e,0xc10000e5,0x1087df05,0xe8ffffa4, +0x10855581,0x04901f70,0x10851480,0x10859681,0x10869a04,0xc10020e1,0xe8ffff6d,0x04901ae1, +0x00000000,0x161e1b32,0xc1000058,0x12057808,0xc100005d,0xc10000e1,0xe80000ad,0x04f0386c, +0xc1000069,0x00189601,0xc10000e1,0xe8000089,0x04f03870,0xc100007d,0xc1000084,0x00181900, +0x00151801,0x00000000,0x031e206b,0x00000001,0xe8000139,0x14003801,0xd1ffbbe8,0x10809e70, +0x0010f803,0x00000000,0x034e1d84,0x031e946b,0xc23200e5,0xc30002e4,0x008e22e0,0x120eba09, +0x00000000,0x034e7ae7,0x00000001,0x00000000,0x21fe46e6,0x00000000,0x900038e5,0x1087df05, +0xe8ffffa4,0x10886111,0x04901f70,0x10851480,0x10882081,0x10869a05,0xe8ffff71,0x04901a6c, +0x1088a2c1,0xc10020e1,0xe80000a5,0x04f01be0,0x00169b01,0x00151501,0x00000000,0x031e196b, +0x00000001,0xe80000c1,0x14003801,0xd1ffbb54,0x10809e70,0x0010f803,0xc10000e1,0xe800005d, +0x04f03870,0xc100007d,0xc10000f0,0x001ed801,0x00000000,0x034e1df0,0x031ebb6b,0xc23200e5, +0xc30002e4,0x008e14e0,0x120eba09,0x00000000,0x034e7ae7,0x00000001,0x1087df04,0x00000000, +0x21fe46e5,0xe8ffffcc,0x108efb81,0x04901f70,0x108f3c10,0x900038e5,0x10869a04,0xc10020e1, +0xe8ffff79,0x04901ae0,0x108514c1,0x1085d705,0xe8fffea5,0x14901730,0x10855510,0x10859611, +0xd2fffc4a,0xc1000019,0x00000000,0x034e1d87,0xd2ffff0d,0xc10000e0,0x008e62e1,0x00000000, +0x900039e1,0xc10000e1,0xe8ffffb1,0x04f03870,0xc100007d,0xc10000e9,0x00000000,0x034e1deb, +0x1087df05,0xe8fffff4,0xc10000e0,0x008e54e1,0x04901f70,0x108eba10,0x900039e1,0xd2ffff7f, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc101e424,0x90004920,0x10920741,0x00900724, +0x00924725,0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094,0x90048099,0x00000000, +0x9003c08c,0x90040091,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c,0x90030081, +0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064, +0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000, +0x90000051,0x00188200,0x00160301,0x00000000,0xb900c4e6,0xc1015ce1,0x009e08e1,0x00000000, +0x900038e5,0x00000000,0xb90104e6,0xc10158e1,0x009e08e1,0x00000000,0x900038e5,0x00000000, +0xb80043f3,0x00000001,0xe8000338,0xc1fea4e1,0x14003c00,0x008848e0,0x00164301,0xc1000281, +0x00000000,0xb801c3ef,0xc21000e1,0x029e3be1,0xe8000319,0x14003801,0xc10004e9,0xc23334e4, +0x160e3a78,0xc2333cf5,0xc30002e4,0x00000000,0xc30002f5,0x00000000,0x0087b8f4,0x0317fae6, +0xe8000029,0x14103c08,0xc1002075,0xc10100e0,0xb80083e1,0x028e3be1,0x00000000,0x9001c3e2, +0x120e3809,0x10877811,0x009e5f74,0xb801c2e5,0x00000000,0x01de1d7d,0x00000000,0x00000000, +0x061eb9e1,0x109e0821,0x00000000,0x900038e4,0x00877a75,0x00000000,0x00000000,0xb80202ea, +0xc1fff8e8,0x109e4810,0xc10000e1,0xe800007c,0x008688e9,0x04f03874,0xc1000070,0x900039e9, +0xc1ffb8e1,0x008588e1,0x00000000,0x031e5e73,0xc233d4e1,0xc30002e0,0x120e7905,0x00000000, +0x00000000,0x031579e1,0xc10000e1,0xe8000031,0x04f03880,0xc100006d,0x00851c59,0xd1ffcb88, +0x1080a270,0x0010d503,0x1086db04,0x80001419,0xe8ffffed,0x04901b80,0x10851481,0x10871c05, +0xe8ffffa9,0x04901c75,0xe8000065,0x04f01d7c,0x00171d01,0xc1ffb8e4,0xc1ffd8e1,0x008e48e4, +0x008e08e1,0x00851de4,0x00855de1,0x1080a270,0x031e5e73,0xc233d4e1,0xc30002e0,0x120e7905, +0x00000000,0x0310f9e1,0xd1ffcb1f,0x00000000,0x10871c04,0x80001519,0xe8ffffd4,0x80001419, +0x04901c7c,0x10855504,0x10851405,0xc10000e1,0xe800007d,0x04f0387c,0xc1000071,0xc1ffb8e4, +0xc1ff78e1,0x0085c8e4,0x008588e1,0xc10000e1,0xe8000051,0x04f03880,0xc100006d,0x00155700, +0x00851c59,0x00000000,0x031e1573,0x00000001,0xe800001d,0x14003801,0xd1ffcaac,0x1080a272, +0xc100020d,0x00000000,0x80001419,0x1086db05,0xe8ffffd5,0x04901b80,0x10851480,0x10855581, +0x10871c05,0xe8ffffa9,0x04901c7d,0x00000000,0xb801d9e3,0x00000001,0x129e3841,0xe80001c9, +0x14003801,0xd1ffc8d4,0x00109a00,0x1080e273,0x00109a00,0xac031911,0xd1ffcbbe,0x0010c601, +0x00000000,0xac0359e0,0x8403191b,0x00000001,0xe8000195,0x040006e1,0x00000000,0xb80258e3, +0x00000001,0xc10000e0,0x129e7805,0xe8000179,0x041038e5,0xc12009e0,0xc1ffff19,0x00000000, +0x9003e2e1,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059,0x00000000, +0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071, +0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x00000000,0xb8034084, +0xb8038089,0x00000000,0xb803c08c,0xb8040091,0x00000000,0xb8044094,0xb8048099,0x00000000, +0xb804c09c,0xb80500a1,0x00000000,0xb8004720,0xb800871d,0x07000101,0x10824741,0x00100901, +0xd2fffce2,0xc1000181,0xe8000079,0x14102009,0x00000000,0xb80103e3,0x00000001,0x121e7805, +0xc27d00e1,0xe8000069,0x040039e1,0xc2bb80e1,0xe800005d,0x040039e1,0xc2dac0e1,0xe8000079, +0x040039e1,0xc2fa00e1,0xe800006d,0x040039e1,0xc23880e1,0xc30001e1,0xe800005d,0x040039e1, +0x00000000,0xb80143e7,0xc2bb80e1,0xe8000051,0x041039e1,0xc10000e1,0xd2fffc86,0x001eb801, +0x00000000,0xb80103e5,0xd2ffff9b,0x00000000,0xb80143e7,0xc27d00e1,0xe8000015,0x041039e1, +0xc10003e1,0xd2fffc5a,0x001eb801,0xd2fffffa,0xc10002e1,0xd2fffc4a,0xc10000e9,0xd2ffffbe, +0xc10001e1,0xc10000e1,0xe80001a5,0x04f0387c,0xc1000071,0xc1ffb8e8,0xc1feb8e4,0xc1ff78e1, +0x008948e8,0x008908e4,0x0088c8e1,0xc1000068,0xc1000164,0xc1000261,0xc10000e1,0xe8000159, +0x04f03880,0xc100006d,0x00156301,0x0015e500,0x00851a90,0x0015a401,0x00000000,0x031e1773, +0x00000001,0xe800010d,0x14003801,0xd1ffc838,0x1080a272,0xc100060d,0x00000000,0x80001419, +0x00000000,0x031e1573,0x00000001,0xe80000a5,0x14003809,0xe80000b5,0x14003801,0xe80000c1, +0x14003805,0xe80000b9,0x1400380d,0x00000000,0x031e5573,0x00000001,0x129e3905,0xe8000021, +0x14003801,0x109e3905,0x00000000,0x031e14e3,0x00000001,0x00000000,0x800054e1,0x00000000, +0x031e9958,0x031f1669,0x00000000,0x031e5859,0xc1003fec,0xc1003fe1,0xc1003fe5,0x010ebae4, +0x00000000,0x010efced,0x010e39e0,0x028e7be9,0x028e39e1,0xe800005d,0x14003801,0xd2fffd88, +0xc1200be1,0x00000000,0x9003e2e1,0xc1ffff19,0x00000000,0x031e166a,0xd2ffff76,0x00000000, +0x800094e0,0x800054e1,0xd1ffc75c,0x1080a272,0xc100060d,0x00000000,0x80005419,0xd1ffc748, +0x1080a272,0xc100060d,0xd2ffff44,0x8000941b,0x1086db04,0xc10060e4,0xc10060e1,0xe8fffedc, +0x008514e0,0x008596e5,0x04901b80,0x1085d780,0x10855581,0x10871c05,0xe8fffea0,0x10869a0d, +0x04901c7c,0x1086180c,0x1086590d,0xc233d4f0,0x161e5d90,0x161e1f91,0xc1ffb8f5,0xc30002f0, +0xc10001ec,0xc1feb8e9,0x108e7908,0x108e3808,0xc1000069,0x008648f4,0x0085c8e8,0x00863bf1, +0xc1000858,0x12057908,0x12053809,0xc10000e1,0xe800017d,0x04f03874,0xc1000071,0x1219da08, +0xc1000098,0x00195601,0xc10000e1,0xe8000145,0x04f03880,0xc100006d,0xc10000a0,0x00191900, +0x0088e65d,0x00000000,0x031ea473,0x00000001,0xe8000305,0x14003a01,0xc1ffffe0,0x031e1e71, +0x00000000,0x00000000,0x008e7ae1,0xc1feace0,0x00000000,0x1080a271,0x008108e1,0x120e3805, +0x00000000,0x031e18e3,0x00000001,0xc233e4e0,0x160eb83d,0xc30002e1,0x008e3ae1,0x00000000, +0x031eb8e7,0x00000001,0xd1ffb3a8,0xc23440e0,0x160e7a51,0xc30002e1,0x0080f9e1,0x00000000, +0x031e239d,0x00000000,0x034e21a2,0xc1feace4,0x00000000,0xc23200e9,0xc30002e8,0x00000000, +0x120ef809,0x008e25e0,0x034e48e4,0x034ebbeb,0x00000001,0x00000000,0x21fe79e9,0x109e3821, +0xc1feb0e0,0x900038e5,0x00000000,0x034e48e0,0x034e21a3,0x00000001,0x008e25e0,0x21fe79e9, +0x109e3811,0xc1feb4e0,0x900038e5,0x00000000,0x034e48e0,0x034e21a3,0x00000001,0x008e25e0, +0x21fe79ea,0x00000000,0x900038e5,0x00000000,0xc10060e0,0x1086db05,0xe8fffeec,0x00000000, +0x0088e3e1,0x04901b80,0x10892480,0x108a2811,0x10871c04,0xc10090e1,0xe8fffeb0,0x00000000, +0x008965e1,0x04901c74,0x1089a60d,0xe800016d,0x04f01d7c,0x00171d01,0x00000000,0x16091d0d, +0x0018d500,0x00000000,0x12195a09,0x00000000,0x031e9973,0x00000001,0xe80001f9,0x14003a01, +0xc1ffffe0,0x031e1e71,0x00000000,0x00000000,0x008e7ae1,0xc1feace0,0x00000000,0x1080a271, +0x008108e1,0x120e3805,0x00000000,0x031e18e3,0x00000001,0xc233e4e0,0x160eb83d,0xc30002e1, +0x008e3ae1,0x00000000,0x031eb8e7,0x00000001,0xd1ffb240,0xc23440e0,0x160e7a51,0xc30002e1, +0x0080f9e1,0xc10000e1,0xe80000b5,0x04f03880,0xc100006d,0xc10000f4,0x008f245d,0x00000000, +0x031efc95,0x00000000,0x034e61f5,0xc1feace5,0xc23200e8,0x00000000,0xc10060e1,0xc30002e8, +0x034e48e4,0x120efb09,0x008f3ce0,0x034ebbe8,0x008e23e7,0x00000001,0x00000000,0x21fe79e9, +0x109e3821,0xc1feb0e0,0x900038e5,0x00000000,0x034e48e0,0x034e21f7,0x00000001,0x008e23e0, +0x21fe79e9,0x109e3811,0xc1feb4e0,0x900038e5,0x00000000,0x034e48e0,0x034e21f7,0x00000001, +0x1086db04,0x21fe79e8,0x008e23e1,0xe8ffff71,0x04901b80,0x108f7d10,0x900038e5,0x10871c04, +0xc10090e1,0xe8fffec8,0x00000000,0x0088e3e1,0x04901c7c,0x1089240d,0xc10000e1,0xe8000039, +0x04f03880,0xc100006d,0xc100002d,0xc10020e1,0xe8000015,0x04f01fe0,0x00171f01,0x00129401, +0xd6002306,0x1086db05,0xe8ffffe5,0x04901b80,0x1082cb11,0x10869a05,0xe8fffcd4,0x10851431, +0x14901a30,0x10855530,0x10859631,0xd2fff97a,0xc1000019,0x00000000,0x034e21a3,0x00000001, +0x008e25e1,0xc10000e4,0x109e3821,0x00000000,0x900038e5,0x00000000,0x034e21a3,0x00000001, +0x008e25e1,0xc10000e4,0x109e3811,0x00000000,0x900038e5,0x00000000,0x034e21a3,0xd2fffdb1, +0xc10000e0,0x008e65e1,0x00000000,0x900039e1,0xc10000e1,0xe8ffff29,0x04f03880,0xc100006d, +0xc10000e9,0x00000000,0x034e21eb,0x00000001,0x008e23e1,0xc10000e4,0x109e3821,0x00000000, +0x900038e5,0x00000000,0x034e21eb,0x00000001,0x008e23e1,0xc10000e4,0x109e3811,0x00000000, +0x900038e5,0x00000000,0x034e21eb,0x1086db05,0xe8ffffb4,0xc10000e0,0x008e63e1,0x04901b80, +0x108eba10,0x900039e1,0xd2fffeb7,0x10924941,0x1081c940,0x9000891d,0x10924771,0x009e820d, +0xe800002d,0x14803a00,0x90000408,0xc10000e5,0x001e3a00,0x009eba0d,0xe8fffff9,0x14e03a00, +0x108e7905,0x00000000,0x900004e1,0x00000000,0x900005e5,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1009424,0x90004920, +0x10920741,0x00900724,0x00924725,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c, +0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000, +0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0x00154200,0x00158300,0x0015c401,0x00000000,0xa40243e0,0xac00c367, +0x00000001,0xe800025d,0x14103809,0x00000000,0xa40203e3,0x00000001,0x129e3821,0xe800023d, +0x14003801,0xc1000261,0x129e0504,0xb80002ed,0x111e7800,0x111e8400,0xc10000e1,0x00000000, +0x029e79e9,0x109e8821,0x00000000,0x90003aed,0x00000000,0x00000000,0xb80042ee,0x109e8811, +0xe80002d0,0xc1fff8f1,0x041038e4,0x008508f0,0x90003aed,0xc10190e1,0xe80001f1,0x04f019e1, +0x12109911,0xd1fffe88,0xc1ffe8e4,0xc1ffece1,0x00000000,0x008108e0,0x008148e5,0xc100050d, +0x129e993c,0xc249c4e0,0x109e4841,0x121f3a08,0x129ed90c,0x109e8831,0x120e5808,0x900039f0, +0xc30002e1,0x0086b9e0,0x90003aed,0xc29f08e8,0xc1000089,0xc30001e9,0x001eba01,0x1088a204, +0xc1002de0,0xc10000e5,0xe8fffff4,0x00000000,0x90003ae5,0x049022e0,0x108eba11,0xc1000085, +0xc1ffe8e0,0xc1000064,0xc1000081,0x008708e0,0xc1000060,0x1086d649,0x00000000,0x031e5a87, +0xc10000e1,0xe8000071,0x04f038e4,0xc1000089,0xc29f08e0,0x0085e06d,0xc30001e1,0x008598e1, +0x00109500,0x0340dc65,0xd1ffc05f,0x00000000,0x034e5c64,0x80001719,0x00000000,0x031e1a85, +0xc10001e1,0x1088a204,0x00000000,0x10861811,0x10882004,0x00000000,0x020e78e5,0xe8ffffc4, +0x1085d704,0x109e7905,0x049022e0,0x10859610,0x900016e5,0x10886105,0xe8ffff81,0x14902110, +0x10865911,0xc10027e1,0xe800002d,0x04f020e1,0x008ea06d,0x10882004,0xc10027e0,0xc10000e5, +0xe8fffff4,0x00000000,0x80003ae5,0x049020e0,0x108eba05,0xd1ffbe44,0x00109400,0x0010d503, +0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb800c05c, +0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071,0x00000000, +0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x00000000,0xb8034084,0xb8038089, +0x00000000,0xb8004720,0xb800871d,0x07000101,0x10824741,0x00100901,0xd2fffdd2,0xc1000161, +0xd2fffdca,0xc1000061,0xc101f4e1,0xe800005d,0x04f019e1,0xd1fffc98,0xc1ffece0,0xc10190e5, +0xc1ffe8e0,0x009659e4,0x008108e1,0xc100050c,0x12109908,0x008148e1,0xc249c4e0,0x129f590c, +0x109f0841,0xd2fffe28,0x109e8830,0xc30002e1,0x120e1808,0x108e7830,0xc10000ed,0x0086b9e0, +0x90003cf4,0x90003aed,0xd1fffc44,0xc1ffece1,0xc1ffe8e0,0x008108e0,0xc101f4e5,0xc100030c, +0x009099e4,0x008148e1,0xc249c4e0,0xa40216e0,0xc100ffe9,0xc30002e0,0xc10000f4,0x109f0841, +0xc10000ec,0x109e0830,0x108e7861,0x00000000,0x900038ec,0x90003cf5,0xd2fffdb4,0x128e3811, +0x120e1808,0x029eb8e9,0x0086b9e0,0x800216e9,0x12165904,0xc100b4e1,0xe8000171,0x04f019e1, +0x00109901,0xd1fffbc8,0xc1ffe4e4,0xc1ffe8e1,0x00000000,0x008148e0,0x008108e5,0xc100240d, +0xc1ffe4e8,0xc1fff0e4,0xc1ffece1,0x008148e0,0x034088e8,0x008108e5,0xd1fffb96,0xc100060d, +0xc249c4e4,0xc10000e8,0x109e0831,0xc30002e4,0x900038e8,0x120e1809,0x108e7991,0x0086b9e1, +0xc1ffe8e0,0xc1000085,0xc1000080,0x10875748,0x0087c8e1,0x10879648,0xc100006c,0xc1000071, +0x00000000,0x031e5a84,0x034edf72,0xc10001e9,0xc10000e1,0xe8000084,0x020ebaed,0x04f038e4, +0xc1000088,0x10967a05,0xc29f08e0,0x0085e074,0x00862079,0xc30001e1,0x00859be1,0x00109500, +0x0340df71,0xd1ffbda3,0x010e0664,0x034e5f70,0x80001819,0x00000000,0x800017e1,0x00000000, +0x00000000,0x031e1a85,0xc10001e1,0x1088a204,0x020e38e4,0x10882005,0x10861804,0x109e7805, +0xe8ffffbc,0x1085d704,0x900016e5,0x049022e0,0x1086db10,0x10859611,0x10886105,0xe8ffff65, +0x14902110,0x10871c11,0xc10027e1,0xe8fffd69,0x04f020e1,0x008ea074,0x008ee079,0xc10000e4, +0xc10027e1,0x10882004,0xc10000e4,0x80003be5,0xe8ffffec,0x80003ae5,0x049020e0,0x108efb04, +0x108eba05,0xd2fffd33,0xc100f4e1,0xe8000065,0x04f019e1,0xc100b4e0,0xc249c4e5,0xc1003fe0, +0x009659e0,0x10928861,0xc30002e4,0x029e19e0,0x109f8851,0x129e193c,0x129f590c,0x1212f811, +0x121ff808,0x109e8830,0x109f0841,0xd2fffeb4,0xc10000ec,0x120e1809,0x108e79c0,0x90000a2c, +0x90003cf5,0x0086b9e0,0x90003efc,0x90003aed,0xd1fff9fc,0xc1ffece1,0xc1ffe8e0,0x008108e0, +0xc100f4e5,0xc100030c,0x009099e4,0x008148e1,0xc249c4e0,0xc10000f4,0x109f0841,0xd2fffe64, +0x109e8830,0xc30002e1,0x120e1808,0x108e78f0,0xc10000ed,0x0086b9e0,0x90003cf4,0x90003aed, +0x10924941,0x1081c940,0x9000891c,0xc1003c25,0x00924725,0x00000000,0xb80003e7,0xc10227e1, +0xe8000085,0x04a039e1,0xc10240e4,0xc20900e1,0x008482e0,0x900003e5,0xc10048e1,0x008442e1, +0xe8000051,0x04e01149,0xc1fffce0,0xb800113c,0xc24d6035,0x00000000,0x034411e1,0xc1000038, +0xc24d8031,0xc100042c,0x00000000,0xc3000235,0xc3000230,0x00000000,0x00129101,0xd600631a, +0xc10048e1,0x008451e1,0xe8ffffc1,0x04801149,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0xd2ffff94,0x108e7965,0x120e3909,0x0084b808,0x900003e5,0x10924941,0x1081c940, +0x9000891d,0x10924771,0xc10048e0,0xc100012d,0x008282e1,0xd600832a,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924935,0x1081c97c,0x9000891c,0x9000c905, +0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc100b825,0x00900724,0x00924725,0x00000000, +0x900680b8,0x9006c0bd,0x00000000,0x900600b0,0x900640b5,0x00000000,0x900580a8,0x9005c0ad, +0x00000000,0x900500a0,0x900540a5,0x00000000,0x90048098,0x9004c09d,0x00000000,0x90040090, +0x90044095,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080,0x90034085,0x00000000, +0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d, +0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050, +0x90004055,0xc1ffece8,0xc1ffe8e4,0xc1ffe4e1,0x00000000,0x034a47e8,0x034a07e5,0x00000000, +0x0349c7e2,0x001ac201,0x001a8500,0x00000000,0x00154401,0x00000000,0xb801c3e4,0xb80143ef, +0xc24000e1,0x029eb9e1,0xe8000011,0x14003a00,0x00198301,0x120efb05,0x121e3b3c,0x121e7b1d, +0x129e3804,0x129e793d,0xe8000014,0x109e3821,0x14003a00,0x008538e5,0x1085140d,0xc29fece1, +0xc30001e1,0x00000000,0xa00038e3,0x00000001,0xe8000025,0x14103801,0xd1ffb26c,0x00109403, +0xc29fece4,0xc10001e1,0xc30001e5,0x00000000,0x800039e1,0x00000000,0xb801e6e7,0xc21000e1, +0x029e39e1,0xe8000241,0x14003801,0xc10001e5,0xc10000e0,0x900028e5,0xe80003c9,0x04f038e4, +0xc1000095,0x00000000,0x16089431,0xc24cc0e8,0x00000000,0xc24cc0f1,0x10892a28,0xc1fff8ec, +0xc24cc0e5,0xc2100ce0,0xc30002e4,0xc30002f1,0xc30002e8,0x0088d5e0,0xc10008e1,0xc10004e0, +0x008862f0,0x0087f8e9,0x10872920,0x0087b8e4,0x008808ed,0xc100006c,0x00161c00,0x10876a21, +0xc1000068,0xc100005c,0x00166401,0xc10000e1,0xe8000231,0x04f0389c,0xc10000b1,0x001b5901, +0xc10000bc,0x0015a000,0xc10000b9,0x00000000,0xa4026de0,0x034e63b9,0x00000000,0xb80021e7, +0xe8000040,0x00000000,0x008557e5,0x14103808,0x900016e5,0x00000000,0xa4022de3,0x00000001, +0x129e3821,0xe8000169,0x14003801,0x00000000,0x034e1f8b,0x00000001,0x00000000,0x900016e1, +0x00000000,0xb801e6e7,0xc21000e1,0x029e39e1,0xe800015d,0x14003801,0xe8000149,0x14102c01, +0xc10000e1,0x0010ed00,0xb800a614,0x0010ab01,0xd1fff65a,0x00113801,0x00150601,0x109e0950, +0x034160b8,0x109e8961,0x00000000,0x90003851,0xd1ffce50,0x109e0980,0x109e4971,0x0010ab00, +0x900039b0,0x90003aa5,0x00112d00,0x90003894,0x0010d501,0xe800012d,0x14000601,0x00000000, +0xb8004055,0x1091c77c,0xb8000050,0xb800c05d,0x1091c734,0xb8008058,0xb8010061,0x00000000, +0xb800c704,0xb8018069,0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079, +0x00000000,0xb8024074,0xb8030081,0x00000000,0xb802c07c,0xb8038089,0x00000000,0xb8034084, +0xb8040091,0x00000000,0xb803c08c,0xb8048099,0x00000000,0xb8044094,0xb80500a1,0x00000000, +0xb804c09c,0xb80580a9,0x00000000,0xb80540a4,0xb80600b1,0x00000000,0xb805c0ac,0xb80680b9, +0x00000000,0xb806c0bc,0xb8004721,0x1082477c,0xb80640b4,0xb800871d,0x07000101,0x10824935, +0x00100901,0xd2fffdce,0xc10002e5,0x00000000,0x034e1e8a,0xd2fffeae,0x00000000,0x900016e1, +0xd2fffec4,0xc100b8e1,0x008e2ae2,0xe8000029,0x14102501,0xc10000e1,0xd1ffab28,0x0010ed01, +0x00812f90,0x00117800,0x0010ab02,0xd2fffeb2,0x00150601,0x00000000,0x031e1db1,0xd2ffffdf, +0x00000000,0x108b2c04,0x108bae11,0xe8fffe00,0x108b6de9,0x04902c9c,0x10859610,0x108befe9, +0x00000000,0xb80066e3,0x00000001,0xe8000079,0x14103809,0x00000000,0xb800a6e3,0x00000001, +0xe8000065,0x14003801,0x00000000,0x034e1c68,0x034e696a,0x00112600,0x0010a300,0x0010d902, +0x109e5820,0x082eb9e0,0x109e0951,0xc1fff8e4,0x900018e8,0x900039e9,0x00000000,0x034148e4, +0x9000386d,0x00000000,0x034e696a,0xd100174d,0x109e0961,0x00000000,0x900038e5,0xe8fffe41, +0x14100601,0xc10000e1,0xe8000061,0x04f0389c,0xc10000b1,0xc1000058,0x00155900,0x00152901, +0x00000000,0xa40255e0,0x034e635b,0x00000001,0xe8000078,0x008e57e5,0x14103809,0x0010b900, +0x03415468,0x03412059,0xd1ffadaa,0x0010d501,0x108b2c05,0xe8ffffcc,0x10851421,0x04902c9c, +0x10859610,0x108555e9,0x00000000,0xb80028e1,0xc10240e0,0x10896505,0xc20900e4,0x0086dbe0, +0xc10074e1,0x008659e0,0x00000000,0x0085d7e5,0xe8fffcbd,0x049025e0,0x10869a10,0x10861811, +0xd2fffd9e,0xc1000019,0xd1fff998,0x0080d468,0x0010b903,0xd2ffff9f,0x10924941,0x1081c940, +0x9000891d,0x10924761,0xc10000e1,0xe8000011,0x04e03810,0xc1000029,0xd600033e,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924935,0x1081c97c,0x9000891c, +0x9000c905,0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc1008825,0x00900724,0x00924725, +0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068, +0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000, +0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e4,0xc1ffe4e1,0x00000000,0x034747e8,0x034707e5, +0x00000000,0x0346c7e1,0x00158201,0x00178401,0x0017c300,0x00000000,0x00168501,0x00000000, +0xb80302e3,0x00000001,0xe800008c,0xc1000061,0x14103800,0x00154300,0xc100005d,0xc10003e0, +0xc1ffff19,0x00000000,0x9003c2e1,0x00000000,0xb8004055,0x1091c77c,0xb8000050,0xb800c05d, +0x1091c734,0xb8008058,0xb8010061,0x00000000,0xb800c704,0xb8018069,0x00000000,0xb8014064, +0xb8020071,0x00000000,0xb801c06c,0xb8028079,0x00000000,0xb802c07c,0xb8004721,0x1082477c, +0xb8024074,0xb800871d,0x07000101,0x10824935,0x00100901,0x00000000,0xb801c3e7,0xc21000e1, +0x029e39e1,0xe8000059,0x14003801,0xe8000049,0x14101b05,0xc1000951,0xd1ffb306,0x10808271, +0x00000000,0xb80196e3,0x00000001,0x009e3819,0xe8000045,0x04e03851,0xd2ffff54,0xc10000e0, +0xc1200ce5,0x00000000,0x900356e0,0x9003d6e5,0xc1ffff19,0xd2ffffc6,0xc1001151,0xe8000011, +0x14101b05,0xd2ffffb6,0xc1001151,0xd2ffffae,0xc1002051,0x00000000,0xb801d5e3,0x00000001, +0x129e3841,0xe800005d,0x14003801,0x1200d40c,0xac031510,0x10809671,0xd1ffb51f,0x00000000, +0xac0355e0,0x8403151b,0x00000001,0xe8000035,0x040006e1,0x00000000,0xb8025fe3,0x00000001, +0xc10000e0,0x129e7805,0xe8000019,0x041038e5,0xc12009e0,0xc1ffff5d,0x00000000,0x9003d6e1, +0xc1fff8e4,0xb801d5e0,0xc1fffce1,0xc21000f0,0x008ec8e4,0x109e8951,0xd1ffa2ac,0x109e0960, +0x008e48e1,0x10809670,0x900038e4,0x0010db01,0x00115a00,0x90003aec,0x029138f1,0xe8000019, +0x14000601,0xe8000011,0x14101701,0xc1ffff5c,0x9003d619,0xc1fffce1,0xc1ffe8e0,0xb801d5e0, +0x034e48e1,0x008088e3,0x028e38e5,0x00000000,0x9001d5e1,0x00000000,0xb80215e0,0xb8005ae7, +0x00000001,0x028e38e5,0x00000000,0x900215e1,0x00000000,0xb801960d,0xd1ffb107,0xd1ffb2c8, +0xc1ffe8e1,0x00000000,0x008088e1,0xc100200d,0xc20000e5,0xc20000e0,0x00150600,0xc3ffe6e5, +0xc3ffe2e0,0x029e46e5,0xe8000061,0x041039e1,0xc20000e1,0xc30001e1,0xc10000e0,0x029e46e1, +0xe800001d,0x041038e5,0xd1ffb1ac,0xc1ffe8e1,0x00000000,0x008088e1,0xc100100d,0xc20000e1, +0xc30008e1,0x029e14e1,0xe8000155,0x14003801,0xc10009e5,0xd1ffb250,0xc1ffe8e1,0x0010f900, +0x008088e2,0x00160601,0xd1ffb114,0x10809673,0x00000000,0xb80196e0,0xb8001aeb,0x00000001, +0x00957819,0x008e7a55,0x01be18e5,0x00000000,0x06163861,0xe8000111,0x14103a00,0xc1000050, +0x00967961,0x00000000,0xb801d6e7,0x109e0841,0x00000000,0x900038e5,0x00000000,0xb80216e7, +0x109e0831,0xc10000e0,0x900038e5,0x00151900,0x900356e1,0xe800004c,0x00955551,0x14101701, +0xc1fff0e0,0x109e8950,0x109e4961,0xd1fff660,0x109e0970,0x008088e1,0x0010df00,0x90003a74, +0x9000386d,0x00115a00,0x90003970,0x00111e01,0xe8000011,0x14000601,0xc1ffff5c,0x9003d619, +0xe8000039,0x140017fd,0xc1fff0e4,0xc1fff4e1,0x00000000,0x034e48e7,0x00000001,0x00000000, +0x900256e5,0x00000000,0x034e08e3,0x00000001,0x00000000,0x900296e1,0xc1fff8e1,0x00000000, +0x034e08e3,0x120e590d,0xe80000d8,0x009e39e1,0x04901560,0x9002d6e1,0x00111800,0xb80196e0, +0xb803160a,0xd1fffb56,0x0090f861,0x00000000,0x90035661,0xd2fffc58,0x00119703,0xd2fffeba, +0xc10008e5,0x00000000,0xb80356e7,0x00000001,0xe8000025,0x04b03ae5,0xe8ffff1d,0x14101701, +0xd2ffff14,0xc12010e1,0x00000000,0x9003d6e1,0xc1ffff5d,0xc1fff0e0,0xb80316e1,0x008088e2, +0xd1ffaefd,0x008e38e5,0x0090f8e9,0x00000000,0xb8001ae3,0x00000001,0xe8fffedd,0x04b019e1, +0xd1ffaf7c,0x009519e0,0x10809673,0x00000000,0xb80316e4,0xb80356e1,0x00111401,0xd1fffabe, +0x0010c600,0x0080b9e1,0x00000000,0xb80356e3,0xd2fffea5,0x008e3851,0x00000000,0x900356e1, +0x00000000,0xb8001ae3,0x00000001,0xe8000089,0x04f019e1,0x00000000,0x00953865,0x008e1455, +0xe800000d,0x04b03861,0x00951855,0x00000000,0xb80356e3,0x00000001,0xe8000025,0x04f014e1, +0x00111400,0xb803160b,0xd1fffa51,0x008e3809,0x0090f851,0x00000000,0x90035651,0x00111500, +0xb80356e5,0x00000000,0xb80316e8,0xb80196e2,0xd1fffa2a,0x0080bae4,0x0090f855,0x00000000, +0xb80356e3,0xd2fffed1,0x008e3855,0x00000000,0x900356e1,0xd2ffffc8,0xc10000e1,0x00000000, +0x900356e2,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002825,0x00900724, +0x00924725,0xd1ff712f,0xd1ff8799,0xc27ffc09,0xc1004010,0xc100000c,0xc3000209,0xd1ff88d1, +0xc23a4809,0xc3000009,0xd1ff70fb,0xc20014e1,0xc30382e1,0x00000000,0xb80038e7,0x00000001, +0x129e3905,0xe800002d,0x14003801,0xc20014e8,0x001e7901,0xc30382e9,0x129e793d,0x129e3905, +0xe8fffff9,0x14103801,0x00000000,0x90003ae5,0xc22478e8,0xc22444e4,0xc22444e1,0xc30002e8, +0xc30002e4,0xc30002e1,0x108ef840,0x90003ae4,0xc2247ce5,0xc30002e4,0xc29fe4e8,0xc10000e1, +0xc30001e8,0x900039ec,0xc29fe8e5,0xc30001e4,0x90003ae0,0xc10000e1,0xc29fecec,0x900039e0, +0xc10000e9,0xc30001ec,0xc2a010e4,0xc10000e1,0xc30001e4,0x80003be8,0xc20030ed,0xc30382ec, +0x900039e0,0xc20104e5,0xc30001e4,0xc20104e8,0xc24000e1,0xc30001e8,0x90003be4,0xc20034e5, +0xc30382e4,0x008ebae0,0xc20030e1,0xc30382e0,0x900039e8,0xc20000f5,0xc30300f4,0xb80038e0, +0xc20030e9,0xc30382e8,0xc20034e0,0xc20000f1,0xc30382e0,0xc30300f0,0xc20034ed,0xc30382ec, +0xb80038e0,0xc2002ce5,0xc30382e4,0x028f78f4,0xc11000e1,0xc28104e8,0x900039e0,0x90003af5, +0xc30000e8,0x00000000,0xc20000e5,0xc30300e4,0x028f38f0,0xc2010ce1,0xc30382e0,0x90003bf0, +0x028e7ae5,0xc28104ec,0x900038e4,0xc24000e5,0xc30000ec,0xc20000e0,0xc20104e9,0xc30300e0, +0x008e7be4,0xc30382e9,0xc2011ce4,0x028ef9e0,0xc24000e1,0xc30382e4,0x90003aec,0xc20004ed, +0xc30000ec,0x900039e0,0xc20000e5,0xc30300e4,0xc20124e0,0xc2012ce9,0xc30382e0,0x028e7be4, +0xc30382e9,0xc12000e0,0x900038e4,0xc29fe0e5,0x00000000,0x90003ae1,0xd10000bc,0xc30001e4, +0xc28104e1,0xc1000408,0xc30000e0,0xc100020d,0xc1000510,0x900039e0,0xc1000115,0xc22480e1, +0xe800001c,0xc30002e1,0x14000600,0x90003819,0xd100019e,0xc1000208,0xc1301f0d,0xd10005f5, +0xc2244409,0xc3000209,0xd1ffb5c1,0xc2244409,0xc3000209,0xc22478e4,0xc2247ce0,0xc10000ed, +0xc30002e4,0xc30002e0,0xc10000e9,0x00000000,0xb80039f0,0xb80038e6,0xc10000e1,0xd100021d, +0xc2244408,0x9000fce8,0x9000bced,0xc3000208,0x9000b9e1,0xc1000019,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d, +0x1081c940,0x9000c904,0xc1003025,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055, +0x001e8401,0x001f4200,0x001f0500,0x001ec301,0xc20008e4,0xc1000055,0xc30382e5,0x001e7901, +0x00000000,0xb80039e3,0x00000001,0x129e3805,0xe800001d,0x14003801,0xc20000e1,0x10855504, +0xc30001e1,0xe8ffffdd,0x04a015e1,0x120e7b10,0x120e3c25,0x120eba18,0x028efde4,0xc20008e5, +0xc20010e8,0x028efbe8,0xc30382e5,0xc30382e8,0xc10001e0,0x028efbe1,0xe8000048,0x900039e0, +0x90003aed,0x14003c00,0xc1000051,0xc1000055,0xd1ffa62e,0xc1000108,0xc100090d,0x001e0601, +0xe8000021,0x14003801,0xc20000e1,0x10855504,0xc30010e1,0xe8ffffdd,0x04a015e1,0xc1000151, +0x00119401,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054, +0xb8000051,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002025,0x00900724,0x00924725,0x00000000,0x90000051,0x001e0200,0x00150301,0xd1fffeb9, +0x0010b801,0xc1000210,0xc100000c,0xc1000115,0xe800001d,0x14000601,0xd1fffe9d,0xc1000211, +0xc1000208,0xc100000c,0xc1000115,0xc2000ce0,0xc20018e8,0xc20008e5,0xc30382e0,0xc30382e9, +0xc30382e4,0xb80038e4,0xc10001e1,0x00000000,0x900039e0,0x90003a52,0xd1ffa7bc,0x00000000, +0xc2000ce1,0xc30382e0,0x128e7905,0xc1012c08,0x900038e5,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940, +0x9000c904,0x9000891d,0xc100bc24,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000, +0x9002c07c,0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071, +0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0x0016c201,0xc1004ce1,0xc10000e4,0xc1000060,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb8028283,0x00000001,0xe8000079,0x14102001,0xc1ffff19, +0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb800c05c, +0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071,0x00000000, +0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x00000000,0xb8004720,0xb800871d, +0x07000101,0x10824741,0x00100901,0xc20004e4,0xc2002ce0,0xc10048e9,0xc30382e4,0xc30382e0, +0xc2a000f9,0x00000000,0xb80039e8,0xb80038e1,0xc29ff8f0,0xc10040ed,0xc29ff4e4,0xc10000e0, +0x009e88e9,0xc1ffb42c,0x90003ae1,0xc2126828,0xc30001f0,0xc30001f9,0x129ffa0c,0xc30001e4, +0x109f48b1,0xc10010ec,0x0087a0ec,0x120eb809,0xc1ffb8e0,0x0087c82c,0x00876029,0xd1ffa654, +0x10868240,0x00170201,0x008088e0,0x90003dfc,0x90003efd,0xc100000c,0x900039e8,0x90003ced, +0xe800016d,0x140006fd,0xc2002850,0xc201085d,0xc2247064,0xc3038250,0xc2247459,0xc29fe854, +0xc3000258,0xc3000265,0xc303825c,0x00151400,0xc3000155,0xd100027c,0x00109c00,0x0010e003, +0xe8000131,0x14000641,0xc10100e1,0xe8000121,0x040006e1,0xc21000e1,0xe8000101,0x040006e1, +0xd1ffb1f8,0x00000000,0x0010df01,0xc2247414,0x00111a00,0x00109b01,0xc3000215,0xe800004d, +0x141006fd,0x00000000,0xb803e0e7,0xc2f000e1,0xc10000e0,0x029e79e1,0xe80000c1,0x040038e5, +0xd1ffb031,0x00111e00,0x0010e000,0x00109f02,0xe80000c1,0x14000641,0xc10100e1,0xe80000b1, +0x040006e1,0xd2ffff9f,0x00000000,0xb801a0e4,0xb80160e1,0x00000000,0xb80019e4,0xb80017e3, +0x009eb9e1,0x008e79e9,0xe8000088,0x900019e5,0x04c039e1,0xe8ffff6d,0x14100601,0xc1ffb8e4, +0xb80016e4,0xc21004e1,0x00815de0,0x00000000,0x008088e5,0xd10003fd,0x109e0951,0x00111e00, +0x900038e4,0x0010da01,0xe8000049,0x14000641,0xc10100e1,0xe8000039,0x040006e1,0x00000000, +0xb80015e3,0xd2ffff1d,0x108e3805,0x00000000,0x900014e0,0x900015e1,0x00000000,0xb803e0e3, +0x00000001,0xe8fffed1,0x14003805,0xc1ffff61,0xc22474e0,0xc10048e4,0xc10003ed,0xc30002e0, +0x009e88e4,0xc1ffb8e5,0x008088e4,0x90003aec,0xb800380d,0xd1ffa49f,0x00000000,0xb8029be3, +0x00000001,0x00000000,0xb803f8eb,0x00000001,0x110e7a00,0x110e3a05,0x028e39e1,0xe8000021, +0x14003801,0xd1fffbc8,0x00000000,0x0010fa02,0xc1000109,0xd2fffd2c,0x00119803,0xd1fffbb0, +0x00000000,0x0010fa02,0xc1000209,0xd2ffffeb,0x10924941,0x1081c940,0x9000891c,0xc1002425, +0x00924725,0xc2a014e0,0xc2afc0ed,0xc30001e0,0xc201c8e9,0x129e38f0,0xc30002e9,0xc2afbce4, +0xc2d3c0e0,0x108f3821,0xc30001e4,0x900042f0,0xc30001ed,0xc201c8e4,0x900039f0,0xc30001e1, +0xc30002e4,0x900282e8,0x900142ed,0xc2ddc8e8,0x900339e0,0xc21200e5,0xc30001e8,0xb80282f0, +0xc22278e1,0x008ebae6,0xc22274e4,0x00000000,0xc2ddc8ed,0xc30001ec,0x008e7ce5,0x00000000, +0x900039ed,0x00000000,0xb80282e7,0x00000001,0x008e39e1,0x00000000,0x900038e9,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000,0x9000891d,0x1081c940, +0x9000c904,0xc1003c25,0x00900724,0x00924725,0x00000000,0x90004054,0x90008059,0x00000000, +0x90000051,0x00154200,0x00158301,0x00000000,0xb800c2e3,0x00000001,0xe800003d,0x14003801, +0xc1001019,0x1091c741,0x00000000,0xb800c704,0xb800805b,0x00000000,0xb8004055,0x00000000, +0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0x00000000,0xb80183eb,0x00000001, +0xe8000029,0x14003a01,0x00000000,0xb80042e4,0xb80082e3,0x00000001,0x008e39e1,0x009e38e9, +0x00000000,0x900082e1,0xc29fe0e4,0xb80082fc,0xc2a014e1,0xc30001e4,0x00000000,0xc30001e1, +0x00000000,0xb80039e6,0x008e3fe1,0x00000000,0xb80183f1,0x129fb90d,0x009e38f9,0xc10004e0, +0x00000000,0x129e780d,0xe800004c,0x009e38e5,0x14003c00,0x129f780d,0xc2a014ec,0xc10000e1, +0xe8000034,0xc30001ed,0x04e038fc,0xc10000e8,0x008e7ded,0x001e7901,0x00000000,0x031e3cea, +0x108eba05,0xe8fffff5,0x04803afc,0x108e7904,0x800039e1,0xc2a014e4,0xc29fe0e8,0xc10fa0e1, +0xc30001e4,0xc30001e8,0x009f38fd,0x108e3c0c,0x008f7de4,0x009efff9,0x109e0950,0x900042f4, +0x008e78f9,0x12217908,0xb8003ae0,0x0080fded,0x00000000,0x900038f1,0xd1000296,0xc1000008, +0x009138f9,0xe8000041,0x141006fc,0x00150601,0xc10001e0,0xb80055e4,0xb80095e1,0x00000000, +0x9000d5e3,0xc1000050,0x008e78e5,0x10851404,0xc10000e1,0xe8fffff8,0x800039e1,0x14801420, +0x108e7905,0xc29fe4e4,0xc20108e1,0xc30001e4,0xc30382e1,0x00000000,0xb80039e4,0xb80038e3, +0x00000001,0xe8000041,0x048039e1,0xe8000039,0x14e01421,0x00000000,0xb80095e0,0xb80055e7, +0x00000001,0x008e14e1,0x008e78e5,0x10851404,0xc10000e1,0xe8fffff8,0x800039e1,0x14801420, +0x108e7905,0x00109600,0xb80095e0,0xb800550f,0xd1000dc9,0x008e3851,0x00113800,0x900095e1, +0xd1ff790e,0xc1000009,0xd2fffdfe,0xc1000019,0x1092497d,0x10924915,0x1081c97c,0x9000891c, +0x9000c905,0x1081c714,0xc1004825,0x00900724,0x00924725,0x00000000,0x90014064,0x90018069, +0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051, +0xc1ffece0,0x00164301,0x00000000,0x0345c7e3,0x00168200,0x00000000,0x00160501,0x00000000, +0xac008550,0xb800855a,0x00000000,0xb800c556,0xe800000d,0x14101405,0xc1000055,0x00000000, +0xb80083e3,0x00000001,0xe80000a9,0x04003851,0xc10001e4,0x90010250,0xc10001e1,0x0010d700, +0x9001c2e0,0x900002e5,0x00000000,0xb80005e3,0x00000001,0x00000000,0x900182e1,0x00000000, +0xb80005e2,0xd1ffa04e,0x00000000,0x900142e1,0xe8000061,0x141006fd,0xc1010019,0x1091c77d, +0x1091c715,0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8004054,0xb8000051,0x00000000, +0xb800c05d,0x00000000,0xb8008058,0xb8018069,0x00000000,0xb8014064,0xb800871d,0x07000100, +0x00000000,0x1082477d,0x10824915,0x00100901,0x00000000,0x00000000,0x90011a51,0x00109a00, +0x90009951,0x0010d700,0xb8011ae1,0x00000000,0xac00d8e3,0x00000000,0x9000d9e1,0x00000000, +0x90029a58,0x90025ae1,0x00000000,0x9002da55,0xc10000e4,0xb80059e0,0xc10002e1,0x00000000, +0x90001ae0,0x90031ae5,0xd1ff9f8a,0x00000000,0x90039ae1,0xe8000011,0x141006fd,0xd2ffff42, +0xc1010019,0xd2ffff3a,0xc1000019,0x1092497d,0x10924915,0x1081c97c,0x9000891c,0x9000c905, +0x1081c714,0xc1005425,0x00900724,0x00924725,0x00000000,0x90010060,0x90014065,0x00000000, +0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece0,0x00164301,0x00000000, +0x034547e3,0x00000001,0xc29fe4e4,0xc20108e1,0xc30001e4,0xc30382e1,0x00000000,0xb80039e4, +0xb80038e3,0x00000001,0xe800005d,0x048039e1,0xc1ffff19,0x1091c77d,0x1091c715,0x00000000, +0xb800c704,0xb8010061,0x00000000,0xb8004055,0x00000000,0xb8000051,0x00000000,0xb800c05c, +0xb8008059,0x00000000,0xb800871c,0xb8014065,0x07000100,0x00000000,0x1082477d,0x10824915, +0x00100901,0xc2a008e8,0xc2011ce0,0x120f4509,0xc30001e8,0xc30382e0,0xc28104e5,0x00000000, +0xb8003ae0,0xb8003861,0xc30000e4,0xc24000e1,0x008ef9e2,0x129e78f1,0x008e39f5,0xe80001e5, +0x04a03861,0xc29fe0e0,0x009f18e5,0xc30001e1,0x0095fdf0,0xb80038ea,0xc28104e1,0xc30000e1, +0x01ae3aec,0x01ee7ae1,0x029e39e1,0xe8000165,0x14003801,0xc2a00ce8,0xc29ffce4,0xc10000e1, +0xc30001e8,0xc30001e5,0x00000000,0x900039e0,0x90003aed,0x1225bc09,0xe800001d,0x14001601, +0xd1ff7070,0x00115602,0xc1000009,0xd1ff75c2,0xc1000009,0xc29ffce1,0xc30001e1,0x00000000, +0xb80038e3,0x00000001,0xe800013d,0x14003801,0xd1fff405,0xc1000511,0xc1000408,0xc100020c, +0xc1000115,0x00150601,0xe8000015,0x14001401,0xd1fff4fe,0xc1000208,0xc1301f0d,0x122e1709, +0xe8000035,0x14003801,0xc2a00ce0,0x120e5608,0x00117801,0xc30001e0,0xc1000008,0x0080d9e5, +0x00000000,0xb8003811,0xd1ff6feb,0xd1ff7542,0xc1000009,0xc2a008ec,0xc2a00ce4,0xc2a008e9, +0xc30001ec,0xc30001e4,0xc29fe0e1,0x00000000,0xb8003bec,0xb80039e7,0x00000001,0x009ed8ed, +0xc30001e8,0x009ed5ed,0xc30001e0,0x90003aec,0x008e79ed,0x00000000,0x900038e5,0xc29fe4e4, +0xc20108e1,0xc30001e4,0xc30382e1,0x00000000,0xb80039e8,0xb80038e3,0x00000001,0x008e7a55, +0xe800000d,0x04a039e1,0x009578e9,0xd2fffe08,0xc20038e0,0xc29fe4e5,0xc30001e4,0xc30382e0, +0x008eba55,0x00119500,0x900038e8,0x900039e9,0xe8fffec5,0x04803aed,0xc2a00cec,0xc29ffce5, +0xd2fffeb4,0xc28104e8,0xc30001e5,0xc10001e0,0xc30000e8,0xc30001ed,0x00000000,0x90003be8, +0x900039e1,0xd1fff2d1,0xc1000511,0xc1000408,0xc100010c,0xc1000115,0xd2fffed2,0x00150601, +0xe8000011,0x14000501,0xd1ff6eea,0xc1000009,0xc2a008ec,0xc29fe0e4,0xc2a008e9,0xc30001ec, +0xc30001e4,0xc29fe0e1,0x00000000,0xb8003bec,0xb80039e6,0xc30001e9,0xd1ff7415,0xc30001e0, +0x008efb54,0x008e7955,0xc1000008,0x900038e4,0x90003aed,0xd2ffff0b,0x1092497d,0x10924925, +0x1081c97c,0x9000891c,0x90004921,0x1081c724,0xc1002825,0x00920724,0xc100e825,0x00900724, +0x00924725,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000, +0x90000050,0x90004055,0xc1ffece4,0xc1ffe8e1,0x00000000,0x034487e4,0x034447e3,0x00000001, +0x00000000,0xa40203e4,0xa41083e1,0x00000000,0xa40243ec,0xa410c3eb,0x00000001,0x129e7920, +0x011ebbe8,0x129e3821,0x011e39e1,0x028e3ae1,0xe8000049,0x14003801,0xc1201419,0x00000000, +0xb8000050,0xb8004055,0x1091c77c,0xb8008058,0xb800c05d,0x1091c724,0xb8010060,0xb8014065, +0x1082477c,0xb8004720,0xb800871d,0x07000101,0x10824925,0x00100901,0x00000000,0xb80084e9, +0xc1ffb2e1,0x008408e1,0xc1000058,0x00000000,0x001e5001,0x10859604,0xc10027e1,0xe8fffff8, +0x840039e9,0x049016e0,0x108e7909,0x00000000,0xb80084e3,0x00000001,0x129e3805,0xe8000351, +0x14003801,0x00000000,0xb801c4e8,0xa410c3e2,0x00000000,0x00000000,0xb80042f5,0xc10100e5, +0xe8000428,0x028e7ae5,0x14103808,0x1085c3e8,0x9001c4e5,0xc10058e4,0xa40217e1,0xc10054e8, +0xc10000f0,0xc1005ce1,0xc1ffa4e8,0x009ec8e4,0x009e48e9,0xc10000f0,0x900039f0,0x009e48e1, +0xea000084,0xc10000e8,0x008348e9,0x129e3820,0x900039e8,0x90003bf1,0xc1000060,0xc1000050, +0xc100003d,0x14003800,0xc1000030,0xc100004d,0x00000000,0x03155317,0xc10000e1,0xe800002d, +0x04f03854,0xc1000058,0x1084d305,0xc10000e5,0x00000000,0x034e3de7,0x00000001,0xe8000345, +0x14003801,0x00131301,0xc10024e0,0x00851454,0x120e5509,0xe8ffffbc,0x008f7de5,0x049014e1, +0x0013d301,0xe8000075,0x04f01444,0xc1000039,0x00000000,0x03155317,0xc10000e1,0xe800003d, +0x04f03854,0xc1000058,0x1084d305,0xc10000e5,0x00000000,0x034e3de7,0x00000001,0xe80002f9, +0x14003801,0x120e0e08,0x00161301,0x008e0de1,0x00000000,0x9000384d,0x108e4e04,0x120e1508, +0x00851455,0x11be3908,0x008f7de1,0xe8ffffa4,0x0613b9e1,0x04901445,0x111e5800,0x009e8f30, +0xc10000e1,0x00000000,0x00000000,0x061e7ae6,0x00833931,0xe8000025,0x04f03830,0xc1000059, +0x00000000,0xb80084e3,0x00000001,0x00129000,0x1292f8f9,0xd6000342,0xe800002d,0x04f00f60, +0x00158f00,0xc1000039,0x1202cf04,0xb80084e1,0x00828b43,0x129e38f9,0x120e3841,0x12233841, +0xd6006346,0xc1ffa4e0,0xc29f08e4,0xc100c0ed,0xc30001e4,0x034388e1,0xc100e4e8,0x1082d748, +0xc10090e1,0xc1000058,0xc10021f8,0x008283ed,0xc10022fc,0x00000000,0x008f03e9,0x108f57d8, +0x008eb8e4,0xc10004ed,0xe8000221,0x04b03f39,0xc1fff4e0,0x031e0bf9,0x00000000,0x034e3ae3, +0x00000000,0x80003de1,0x00000000,0x90003ae0,0x031e0afb,0x00000001,0x00000000,0x80003ce1, +0xeaffffc8,0x03438ded,0x10859604,0x108f7d04,0x108efb11,0x108eba10,0x108fff04,0x108f3c05, +0x1490160c,0x00000000,0x108fbe05,0x00000000,0xb801c4e7,0xc21000e1,0x029e39e1,0xe800035d, +0x14003801,0x00000000,0xac00d7e3,0xc23188e4,0x00000000,0xc1003ce9,0xc30002e4,0x129ef804, +0xc10000e1,0xc100c0e8,0xc1000050,0x060ebbe9,0xe800009c,0x008643e9,0x04f03844,0xc100004c, +0x00863ae5,0xc29f0834,0xc100003d,0xc3000134,0x00139001,0x1085d748,0x00134d01,0x00000000, +0x00000000,0x032e903f,0x00000000,0x03155315,0xc10000e0,0x129e7a05,0xe8000031,0x040038e5, +0x00000000,0x031e194f,0x00000001,0xe8000255,0x14003801,0x129e3af9,0x120e3841,0x122e3841, +0x00000000,0x84000ee1,0x00000000,0x00000000,0x00851455,0xe8ffffa8,0x10838e08,0x1084d305, +0x04901444,0x10834d10,0x1083cf09,0x00000000,0xb80084e3,0x00000001,0x129e3809,0xe800009d, +0x14003801,0x00000000,0xb801c4e7,0xc10200e1,0xc24d44e0,0x028e79e1,0xc30002e0,0x9001c4e5, +0x00000000,0x00000000,0xb8007831,0xc10000e1,0xe8000068,0xc100004d,0x04f03844,0xc1000051, +0xc100002d,0x00000000,0x00000000,0x032e102e,0x00000000,0x03155316,0xe8000025,0x14103809, +0xc10000e1,0xe8000019,0x04f03854,0xc1000059,0x008e1251,0x1202b809,0xd6002356,0x00000000, +0x00000000,0x00851455,0xe8ffffbd,0x04901444,0x1084d304,0x1082cb09,0xd2fffb86,0xc1000019, +0x10859605,0xe8fffcad,0x04901654,0x108e7911,0xd2fffcbb,0x10859605,0xe8fffcf9,0x04901654, +0x108e7911,0xd2fffd17,0xe8fffe19,0x04103f39,0xd2fffe10,0xc10001e0,0xc10000e5,0x00000000, +0x90003ae0,0x80003de6,0xc10000e1,0xe8000060,0xc1000031,0x04f03844,0xc1000050,0xc100004d, +0x00000000,0x03155317,0xc10000e1,0xe800002d,0x04f03854,0xc1000058,0x1084d305,0xc10000e5, +0x00000000,0x034e3de7,0x00000001,0xe8000099,0x14003801,0x00131301,0x120e1508,0x00851455, +0xe8ffffc0,0x008f7de1,0x04901445,0xc10000e1,0xe8000025,0x04f03830,0xc1000059,0x00000000, +0xb80084e3,0x00000001,0x00129000,0x1292f8f9,0xd600035e,0xe8000065,0x14f00c55,0xc29f08e4, +0xa40997e4,0xc29f08e1,0xc30001e4,0xc30001e1,0x00000000,0xb80539e6,0x00000000,0x8009d7e5, +0x00000000,0xa43503e5,0x00000000,0x900578e5,0xd2fffd5c,0xc100d5e1,0x008e03e1,0x00000000, +0x800038e5,0x10859605,0xe8ffff59,0x04901654,0x108e7911,0xd2ffff67,0xe8fffd35,0x14100c55, +0xd2fffd2c,0xc29f08e5,0xc30001e4,0xc10000e8,0xc10001e1,0x00000000,0x8009d7e8,0x900579e1, +0x00000000,0xb8000de0,0x031e974f,0x00000001,0xe8fffdb9,0x040038e9,0xe8000029,0x14103a01, +0xc10000e1,0xe8fffda5,0x04f03854,0xc1000059,0x008e1251,0x1202b809,0xd6002362,0xd2fffd8f, +0xc10000e1,0xe8fffd85,0x04f03854,0xc1000059,0xc1ffffe0,0x1292fa04,0x008e5251,0x00000000, +0x008e3ae1,0x121e3805,0x1202b908,0x12033809,0xd600436a,0xd2fffd57,0xc10000e1,0xe8fffd71, +0x04f03844,0xc1000050,0xc100004d,0x1083d748,0xc1000038,0x00135001,0x00000000,0x00000000, +0x032e903b,0x00000000,0x03155315,0xc10000e0,0x129e7a05,0xe8000031,0x040038e5,0x00000000, +0x031ecf4f,0x00000001,0xe8000041,0x14903b1d,0x129e3af9,0x120e3841,0x122e3841,0x00000000, +0x84000de1,0x00000000,0x00000000,0x00851455,0xe8ffffa8,0x1084d305,0x04901444,0x10838e08, +0x10834d09,0xd2fffceb,0xc10000e1,0xe8ffffd9,0x04f03854,0xc1000059,0xc10006e4,0xc24ef0e8, +0xc24ef0e1,0x120efb08,0x009e79ec,0xc30002e9,0x120e7908,0x03433be8,0xc30002e1,0x008e1250, +0x0342f9e3,0x1202b809,0xd6002376,0xd2ffff9b,0x10924941,0x00000000,0x9000891d,0x1081c940, +0x9000c904,0xc1002c25,0x00900724,0x00924725,0x00000000,0x90000051,0x00150201,0xc2a014e0, +0xc10000e4,0xc10000f5,0xc10000f0,0xc10000ec,0xc10000e9,0xc10000e4,0x900002e4,0xc30001e1, +0xd1ff955c,0x900082f0,0x900042f5,0xc100000c,0x900102e8,0x9000c2ed,0x10808270,0x900182e0, +0x900142e5,0xd1ff9538,0x10809492,0xc100000d,0xc10000e8,0xc10000e0,0xc10001e5,0xc10000e0, +0x900354e0,0x9002d4e9,0x00000000,0x9003d4e0,0x900394e5,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940, +0x9000891c,0x9000c905,0x10900750,0x10924751,0xd1ff94cc,0x008e0310,0x9000020d,0xc10001e0, +0x9001420c,0x900042e1,0x10808270,0x9001820c,0x9000c2e1,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940, +0x9000c904,0xc1002825,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00154201, +0xd1ff94fe,0x10808271,0x00000000,0xb80055ef,0x00000001,0x109ebb05,0xe8000079,0x04f006e8, +0x00150601,0x00000000,0xa40006e7,0xc100ffe1,0xe8000025,0x041039e1,0x00000000,0xa40046e7, +0xc100e0e1,0xc100e0e0,0x029e79e1,0xe8000045,0x040039e1,0x10851405,0xe8000039,0x04f014e9, +0x00000000,0xa40014e7,0xc100ffe1,0xe8ffffe9,0x041039e1,0x00000000,0xa40054e7,0xc100e0e1, +0xc100e0e0,0x029e79e1,0xe8ffffcd,0x041039e1,0x00000000,0x009e3b51,0xe8000035,0x14e03821, +0xc1ffff19,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054, +0xb8000051,0x07000102,0x00100901,0xd1ff9390,0x10809570,0x0010d403,0xd2ffffce,0xc1000019, +0x10924941,0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1005025,0x00924725,0xc20e00e0,0xc1000045, +0x008402e1,0xc100003c,0x00139001,0xc20a00e0,0xc20e00f1,0xc20c00e8,0xc20800ec,0xc10400e5, +0xc10600e8,0x00930ef0,0x0092cee9,0xc1000034,0xc10200e0,0x00928ee1,0x1083cf04,0x009f8eec, +0x009f0ee9,0xc10000e8,0xc10000fc,0x009ecee5,0xc10000e0,0x009e4ee0,0xc10000f5,0xc10000e8, +0x90000be8,0x90000c35,0xc10000e0,0x90003efc,0x90000ae1,0xc10000e0,0x90003be0,0x90003cf5, +0xe8ffff8c,0x90000ee0,0x900039e9,0x14900f20,0x10838e11,0x10845105,0xe8ffff6d,0x14901140, +0x10841081,0xc21000e0,0xc21008e5,0xc21004e8,0x008f42e0,0xc2100ae1,0xc10000f8,0xc10000ec, +0xc10000f1,0x008e42e8,0x008e02e0,0x008e82e5,0xc10000e4,0x900039f0,0x90003df9,0x00000000, +0x840038e4,0x84003aed,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d, +0x10924925,0x1081c97c,0x9000891c,0x9000c905,0x1081c724,0xc1008c25,0x00900724,0x00924725, +0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0xc1ffece4,0xc1ffe8e0,0x00164201,0x00000000,0x034587e4, +0x034f87e3,0x00160401,0x00000000,0xb90002f1,0x120e0508,0x120f452c,0xc2100ce5,0x008e82e4, +0x109e4950,0xc24f34ed,0xc30002ec,0x0340bae0,0xc20900e9,0xd1ff97ac,0xc24f340c,0x109e0961, +0x00857d08,0x90003958,0x00813be9,0xc300020c,0x900038f0,0x00117e01,0x00000000,0xb900195d, +0xc10000e1,0xe80002f0,0xc1000035,0x04f03858,0x00000000,0x00151801,0xc24f34e4,0xc10400e1, +0xc20900e0,0x0082d5e0,0xc30002e5,0x008339e1,0x129e5704,0xc10480e0,0xc24f34ed,0x1203b924, +0x060f39e0,0x121e1705,0xc30002ec,0x00000000,0x121e8d05,0x120e7808,0x00829538,0x008e0b39, +0xc1000060,0x1204ba08,0x0084fced,0x0083f8e4,0x00844cf0,0x00840ae5,0xd600237e,0xc1ffffe0, +0x00000000,0x00168a01,0xc1ffffe0,0x008e57e0,0xc2290865,0x129e793c,0xc3000264,0x02ae385d, +0x128eb904,0x129e7804,0xc22908e1,0x120e7924,0x12063a08,0xc30002e1,0x0084d8e0,0x008f95e4, +0x00844be5,0xc22908e0,0xb8007eec,0x034f15e5,0xc30002e0,0xb80393e4,0xb800bee9,0x129e17f8, +0xb80313e4,0x034ed8e1,0x120f7808,0xb800fee9,0xc22908e1,0xc30002e0,0xb80293e0,0x21ce3be5, +0x0084bde0,0x21cefae4,0x21cf3ced,0xc22908e4,0xb8013ee9,0x008f3ce0,0xb80213e0,0xb8017eed, +0x008efcec,0xb80193e8,0x21ce3ae1,0xc30002e4,0xb801bee9,0x008f3be0,0xb80113e1,0xc1007ce0, +0xb801fee4,0x21ce3ae1,0x008414e0,0xb80093e0,0x21ce7be9,0x008efce0,0x034e3de4,0x034e5539, +0x008f3be4,0xb8004ae8,0x21cebae1,0xc1ffffec,0xb80392e5,0x008f3ce8,0xb8008ae8,0x21ce79e1, +0xc22908e0,0xb80312e4,0x21cf39e1,0x008fbce4,0xb800cae8,0xb80292e5,0x02ae7bf8,0xb8010ae8, +0x21cefae5,0x108fb904,0xb80212e5,0x008f3ef0,0xb8014ae8,0x21ce7ae5,0x008efcec,0xb80192e4, +0x21cefae5,0x008f3be4,0xb8018ae8,0xb80112e5,0x008f3cec,0xb801cae4,0x21cefae5,0xc30002e0, +0xb80092e1,0x008efcec,0x00000000,0x21ce3ae5,0x0093b860,0x00000000,0x21cebae5,0x008efbe1, +0xc22908e0,0x21ce79e0,0x008ebbe9,0xc30002e1,0x0092b8f4,0x008e7ae5,0xc100013c,0x900014e4, +0x10851411,0xd6018386,0xc10080e0,0xb80011fc,0xb80051e9,0x008659e0,0xb80091f4,0xb800d1e5, +0x00829960,0xb80111ec,0x034f9961,0x00000000,0xb8038ae0,0xb8030af1,0x00000000,0xb8028ae0, +0xb8020aea,0x00000000,0xb80151e4,0xb8018ae1,0x00000000,0x21cfbae0,0x21cffff9,0x00000000, +0xb80191e0,0xb8010af5,0x008fbff8,0x21cf39e0,0x21cf7df1,0x00000000,0xb801d1e4,0xb8008ae1, +0x008e7ef4,0x21ceb9e0,0x21ce7be9,0x008ef9f1,0x008efbe4,0x21ce38f5,0x008e7be8,0x21ce39e1, +0x008e79e1,0xc1ffffe0,0x008e79e0,0x10834d05,0xc10040e4,0x02aeb8e4,0x108e1705,0xe8fffd54, +0x1295f83c,0x108e3a05,0x04900d58,0x900014e0,0x008514e5,0xc1000019,0x1091c77d,0x1091c725, +0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8004054,0xb8000051,0x00000000,0xb800c05d, +0x00000000,0xb8008058,0xb8018069,0x00000000,0xb8014064,0xb800871d,0x07000100,0x00000000, +0x1082477d,0x10824925,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900760, +0x10924761,0xc28110e0,0xc20114e5,0xc30001e0,0xc30382e5,0x00000000,0xa00038e0,0x9000390b, +0x00000001,0x129e3805,0xe800007d,0x14003801,0xd1ffe2c5,0xc1000311,0xc1000408,0xc100010c, +0xc1000115,0xc2000ce4,0xc2000ce0,0xc1012c09,0xc30382e4,0xc30382e1,0x00000000,0xb80039e7, +0xd1ff8bf5,0x128e7905,0x00000000,0x900038e5,0xc2000ce4,0xc1000019,0xc10000e0,0xc30382e5, +0x00000000,0x900039e1,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102, +0x00100901,0xd1ffe251,0xc1000311,0xc1000408,0xc100020c,0xc1000115,0xd2ffff8f, +}; + +/* cga */ +static unsigned long srp_fw_cga[] __devinitdata = { +0x8ae3fe80,0x02c02c32,0x14020004,0x00000002,0x00000000,0xa1100000,0x00000000,0x0001a000, +0x00140000,0x9022a964,0x00000000,0xa0020001,0xa8200003,0x80000320,0x28400206,0x01000000, +0x88140000,0xa0000010,0x00000143,0x00000000,0x40000000,0x00000190,0x001ac000,0x42200000, +0x0064c000,0x00400000,0x00000000,0x2d400000,0x00002804,0x00001a08,0x000140c0,0x00000000, +0x0421d000,0x00000000,0x00000000,0x805fa000,0x0debfffa,0x02803cd4,0x64022800,0x10000802, +0x00ce6820,0x8c980800,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x01815000, +0x00010000,0x80000010,0x00200606,0x00000038,0x00000000,0x48000000,0x00000103,0x00000000, +0x04a40000,0x00000000,0x00000000,0x19300000,0x00000000,0x0010a700,0x00000000,0x00000000, +0x00006810,0x80100000,0x00000000,0x01930000,0x0541a000,0x00002000,0x00000000,0x00000000, +0xc2fffffa,0x030a4023,0x00000650,0x00000100,0x0c002830,0x00000800,0x00000801,0x00040000, +0x00000a01,0x90209020,0x00000000,0x00000100,0x07400000,0x40002400,0x00102287,0x04304000, +0x00000800,0xa8000400,0x00000143,0x00000000,0x34080000,0x00a80000,0x00000000,0x00000000, +0x41089002,0x010ca000,0x00000000,0x309023c8,0x00000000,0x00000a04,0x80000600,0x00000000, +0x01204001,0x40000b80,0x00000000,0x00000000,0x26f7f000,0x0a00a2b0,0xf404682c,0x5ea03002, +0x00002810,0x00400000,0x00164001,0xd4000100,0x06301c01,0x9022a964,0x00000000,0x38000009, +0x06602137,0x21590224,0x40000400,0x004000c4,0x20000000,0x10008490,0x00000000,0x00000000, +0x14080740,0x00ec8151,0x000a0172,0x00800000,0xc02c8810,0x00201020,0x00000000,0xa1400000, +0x24006834,0xe0000a01,0x00000a00,0x21090e00,0x80000800,0x00003c01,0x00000000,0x805fa000, +0x2603ffc0,0x01682000,0x6400080c,0x50691046,0x00002810,0x00080000,0x001640b2,0x0000c060, +0x00021c00,0x606c0004,0x00000000,0x36615406,0x066846c3,0x8bd92400,0x42000607,0x00000000, +0x80000000,0x00000410,0x000c4000,0x00000000,0x14024800,0x00a81202,0x000a0000,0x00000000, +0xd02c8002,0x024010c1,0x00000000,0x003e1000,0x02282800,0x000401d1,0x07000000,0x00010d80, +0x00000801,0x00000004,0x00000000,0x00000000,0x26000000,0x0000fa70,0x66b02e58,0x5020d280, +0x00000810,0x00000900,0x00164000,0x0e02c000,0x00000000,0x00200004,0x00000000,0x04039810, +0x074800e4,0x2b910000,0x00200400,0x00000080,0x24000000,0x08908484,0x000a4000,0x00000000, +0x14080e78,0x05048110,0x00000000,0x00800000,0xc8000164,0x00000c00,0x00000000,0xf87f1000, +0x24040004,0x260000d3,0x000002c1,0x00080e00,0x00000000,0x00000c04,0x00000000,0x00000000, +0x00000000,0x00000000,0x43244808,0x50213000,0xf0000000,0x08480003,0x00000000,0x0e040000, +0x00000000,0x00240000,0x00000000,0x307b9200,0x48003617,0x82010000,0x24002286,0x000000b8, +0x24000000,0x40000080,0x00060103,0x00000000,0x14080008,0x05008000,0x00200160,0x00900800, +0x40020164,0x00001000,0x00000000,0x00000000,0x03300000,0x30000110,0x00000e01,0x001b0000, +0x00000084,0x00001804,0x00000000,0x00000000,0xc0000000,0x003e03f9,0x34066818,0x50081000, +0x00000004,0x00080000,0x008c0001,0x0e020000,0x00001b00,0x10800000,0x00000000,0x10800102, +0x48388024,0x320e0330,0x30002000,0x000000d0,0x04020000,0x0b000080,0x000ac000,0x00000000, +0x140a4800,0x09aa0000,0x000ac0f6,0x42000000,0x702c8164,0x00201001,0x00000000,0x00000000, +0x03a06d70,0x60000152,0x00000200,0x0109f700,0x40000001,0x00000003,0x00000000,0x00000000, +0x00000000,0x00000290,0x80044800,0x0a890100,0x00018000,0x00080004,0x000c0109,0x0e042000, +0x00000000,0x04240000,0x00000000,0x00611008,0x04600604,0x0a0003a8,0x28108000,0x0043c0cc, +0x20000000,0x10000080,0x00000000,0x00000000,0x14086818,0x00aa8008,0x00224190,0x00100000, +0x80000164,0x00000400,0x00000000,0x00000000,0x36260020,0x3000015d,0x00000041,0x00010000, +0x00000001,0x00004000,0x00000000,0x00000000,0x00000f40,0x002a0000,0x2418002c,0x50083152, +0x00000000,0x00480000,0x001640b2,0x00040100,0x00000000,0x60a40000,0x00000000,0xb0015c20, +0x48100227,0x0bd10000,0x00042400,0x000000b0,0x24000000,0x08000084,0x000a6000,0x00000000, +0x14024808,0x00008190,0x000c0000,0x00900000,0xc0020000,0x00201020,0x00000000,0x00000000, +0x03a60550,0x40001b90,0x06c000a0,0x20080e00,0xbc01e001,0x00002c00,0x00000000,0x00000000, +0x27000000,0x00000000,0x37300010,0x0aa02800,0x00006800,0x00400000,0x000c2000,0x0d840000, +0x00020000,0x00240004,0x00000000,0x1c020002,0x6e608054,0x1b5d0004,0x18000400,0x000000b8, +0x80000000,0x10008490,0x00060000,0x00000000,0x0002002c,0x05000a04,0x002240e0,0x00100000, +0x00424164,0x000010e1,0x00000000,0x003b1000,0x34060000,0x00000151,0x00001000,0x00000000, +0xb8000001,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00184820,0x5e8840c9, +0x0000000c,0x00080000,0x00164001,0x0d800060,0x00000000,0x10800000,0x00000000,0x20020008, +0x48200903,0x0bdd27a6,0x00000000,0x00000060,0x04020000,0x03000400,0x00000000,0x00000000, +0x00002f40,0x00000151,0x08224120,0x42000000,0xf8000164,0x00200a00,0x00000000,0x00000000, +0x37360000,0x00000154,0x000004e0,0x24200d80,0x38000001,0x00003804,0x00000000,0x00000000, +0x0003e000,0x0a00e000,0xf7344824,0x90488802,0x00006d48,0x00480000,0x001640b2,0x0d86a000, +0x00000000,0x90840004,0x00000000,0x00600110,0x80000600,0x0a040331,0x1b800000,0x00200000, +0x24000000,0x10000080,0x00060000,0x00000000,0x3410483c,0x05cb0a06,0x00180192,0x00000000, +0x78004164,0x00200401,0x00000000,0x003e1000,0x03300030,0x8008011c,0x06c00000,0x20000e00, +0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x0002f800,0xe4160440,0x901061d8, +0x00c02810,0x00000010,0x008c00b2,0x000640c0,0x00000f00,0x20208004,0x00000000,0x10220006, +0x00080824,0x20001620,0x4c908000,0x002800b0,0x24000000,0x00021000,0x000c0000,0x00000000, +0x1720082c,0x00000154,0x00000160,0x00800000,0x81180000,0x00001001,0x00000000,0xe0400f84, +0x00100820,0xc00121d1,0x06c00600,0x00080f80,0x80000800,0x00183c03,0x00000000,0x00000000, +0x00f80000,0x003e0000,0xf4100648,0x904004c8,0x00014810,0x21000004,0x00000460,0x0c0400a0, +0x000c1b00,0x20200004,0x00000000,0x240b1020,0x48300226,0x820003a4,0x10108207,0x00000000, +0x80000000,0x07000090,0x000a2000,0x00000000,0x0408480c,0x05021351,0x000e8160,0x10900000, +0x802c88c0,0x00000841,0x00000000,0x00391f84,0x37382810,0x68080150,0x01c02300,0x20080000, +0x00000821,0x00003c80,0x00000000,0x00000000,0x7e03f000,0x0038000f,0xc4160760,0x00100018, +0x00002800,0x00480000,0x00010460,0x00020100,0x000a1b00,0x00240004,0x00000000,0x241a0608, +0x0020b003,0x220007a6,0x1c802000,0x00400080,0x80020000,0x1c000410,0x00060000,0x00000000, +0x14100010,0x05cb0154,0x08200000,0x42000000,0x302c8000,0x00000a01,0x00000000,0xf87f1e04, +0x14100758,0x40160209,0x05c00200,0x04200000,0x81000800,0x00000003,0x00000000,0x00000000, +0x2703ffc0,0x003f0000,0xe4004f5c,0x00307348,0x0000e80c,0x21000008,0x00840000,0x0003a080, +0x00000000,0x20200004,0x00000000,0xb00a0032,0x6e401603,0x21510006,0x10108000,0x00280080, +0x24040000,0x19021000,0x000c0000,0x00000000,0x152e0e6c,0x01cb0bd6,0x00200060,0x42000000, +0x80000002,0x00000840,0x00000000,0x003d1e84,0x24182838,0x6e170190,0x00004500,0x30090100, +0x80000800,0x00082384,0x00000000,0x00000000,0x80000ffe,0x00000393,0x24160660,0x503100c6, +0x00016d74,0x00480000,0x98840001,0x0006006c,0x00040000,0x10801080,0x00000000,0xa6720106, +0x482c4283,0x920803a0,0x14802206,0x003000c0,0x80000100,0x13800410,0x00060000,0x00000000, +0x17af2808,0x05010390,0x000c00c0,0x00801000,0xf0024002,0x00401000,0x00000000,0xfc400e44, +0x27b02f64,0xc0171206,0x00000500,0x00080080,0x00000c84,0x00000004,0x00000000,0x00000000, +0x00fbffc0,0x0000ffe0,0x962c080c,0x10703242,0x00014b78,0x00480008,0x00002001,0x0d84a0e0, +0x00000000,0x108100f0,0x00000000,0x18015320,0x482c1324,0x92080000,0x28108206,0x002b0480, +0x24000000,0x49b21000,0x000a0103,0x00000000,0x2400480c,0x05020002,0x000ec116,0x00101000, +0x40000164,0x00400901,0x00000000,0xfc400000,0x27bc0008,0x6e000a00,0x00000700,0x00090000, +0x00000884,0x00102000,0x00000000,0x00000000,0x0003ffc0,0x003eff80,0xf4004f48,0x50303886, +0x00012a64,0x00480000,0x00012009,0x00060000,0x00000100,0x10800004,0x00000000,0x046a0406, +0x6e6c04e4,0x0a060000,0x14802000,0x00100060,0x04000000,0x46b00400,0x00060103,0x00000000, +0x24104828,0x09001b93,0x08290112,0x00801000,0xf1080000,0x00400c00,0x00000000,0xe07e1000, +0x03b84c58,0xc0010a01,0x00000700,0x04200000,0x0201e084,0x00003803,0x00000000,0x00000000, +0x00fbffc0,0x0039fbd0,0x241e6838,0x9030d889,0x00014952,0x00480008,0x00012009,0x0004a100, +0x00000000,0x10808004,0x00000000,0x10015422,0x074c0224,0x9201240e,0x38108206,0x00400060, +0x24040000,0x4cb21000,0x000a0103,0x00000000,0x24106800,0x05888192,0x000c0080,0x42001000, +0x40004002,0x00400801,0x00000000,0xfc400000,0x03b80008,0x60010a04,0x00000700,0x10090000, +0x38000884,0x00100984,0x00000000,0x00000000,0x0003ffc0,0x00000000,0x44062e4c,0x50600006, +0x0000e974,0x00480008,0x18840420,0x0d860024,0x00000000,0x00040004,0x00000000,0x100a0636, +0x07703474,0x820c1404,0x10108206,0x00000060,0x04000000,0x46821000,0x000a0103,0x00000000, +0x24126838,0x01040000,0x000c0094,0x00801000,0xc0424164,0x000010e0,0x00000000,0xf47e1000, +0x03b80548,0x20170a01,0x00400701,0x00090080,0x00000884,0x00100000,0x00000000,0x00000000, +0x3e03ffc0,0x00000000,0xf4066800,0x50311200,0x00012804,0x00480000,0x008400b2,0x000400c0, +0x00040000,0x000500f0,0x00000000,0x0e720022,0x000c8214,0x8a0c03a0,0x19002206,0x000000c0, +0x80040000,0x46800490,0x00040103,0x00000000,0x14044f4c,0x000001dc,0x08260000,0x42001000, +0xf0000000,0x00001001,0x00000000,0xf8400000,0x03b82e69,0xc0070a05,0x06c00600,0x14200080, +0x00000084,0x00003800,0x00000000,0x00000000,0x3efbffc0,0x00000000,0x0416082c,0x5c88c063, +0x00000000,0x21000000,0x98164000,0x0001a0d0,0x00000100,0x00040004,0x00000000,0xa00a0606, +0x68009067,0x92080000,0x28000606,0x00300080,0x24040000,0x49800080,0x0008a103,0x00000000, +0x24126838,0x0000019e,0x00000060,0x42001000,0x01080000,0x00000400,0x00000000,0x00000000, +0x27bc0648,0x20150201,0x00004601,0x00090d80,0x80000084,0x00004802,0x00000000,0x00000000, +0x0003fffe,0x00000000,0xc006481c,0xd00800c6,0x00002810,0x21000000,0x00000001,0x00010020, +0x00000100,0x002500f0,0x00000000,0xa7615122,0x04402107,0x81920006,0x12800606,0x00000000, +0x00000000,0x4c800080,0x00000103,0x00000000,0x04b64800,0x05021a00,0x002e0120,0x10900800, +0xf1080012,0x00000400,0x00000000,0xf8400000,0x041c4820,0xc0112000,0x000044c0,0x00010000, +0x00000c84,0x00002400,0x00000000,0x00000000,0x8003ffc0,0x0000000f,0x00066c70,0x5cc00010, +0x00012801,0x00480000,0x00164001,0x00040080,0x00000000,0x00040004,0x00000000,0x000b9100, +0x00300024,0x81d00320,0x00000606,0x00104454,0x24000000,0x49800084,0x00040103,0x00000000, +0x24004808,0x09008192,0x00000040,0x00100000,0x00024000,0x000006e0,0x00000000,0x003e1000, +0x00002818,0xb0172000,0x000010c0,0x11090d80,0x08000000,0x00002803,0x00000000,0x00000000, +0x3e03ffc0,0x0000fc05,0x00066e78,0x9058c040,0x00018550,0x08480000,0x18000001,0x00010000, +0x00000100,0x00040024,0x00000000,0x16220106,0x07400034,0x8b960010,0x10002206,0x00000000, +0x00020000,0x4c808480,0x00000103,0x00000000,0x34100448,0x00000204,0x002c0000,0x42000012, +0xf1080212,0x00001000,0x00000000,0xfc7e1000,0x03200008,0x80130a02,0x00000600,0x28010000, +0x0241e001,0x00002000,0x00000000,0x00000000,0xa7fbffc0,0x000003ff,0x0006074c,0xdcc090c4, +0x00010008,0x21000000,0x00002801,0x00040100,0x00000100,0x000120f0,0x00000000,0x06600032, +0x07708634,0x80030320,0x28000606,0x00000040,0x24000000,0x49800084,0x00000103,0x00000000, +0x24080800,0x05000192,0x002080b6,0x00100000,0x01080000,0x000006e0,0x00000000,0x00000000, +0x24040558,0xb0011200,0xc6002300,0x00010000,0x00000000,0x00002800,0x00000000,0x00000000, +0x0a03ffc0,0x000000f0,0x24006838,0xdcf00810,0x00004800,0x00480000,0x000c00b2,0x000600a0, +0x05100100,0x00000004,0x00000000,0x061a0202,0x07700024,0x93d202a8,0x4a802206,0x000000b0, +0x04000000,0x498004a0,0x000a0103,0x00000000,0x1410480c,0x05020002,0x00000100,0x00100800, +0x91080000,0x000006e1,0x00000000,0x00000000,0x24100018,0x80130a01,0x06c00620,0x00010000, +0x00000084,0x00001800,0x00000000,0x00000000,0x3a03ffc0,0x00040100,0x02360e40,0x0e981981, +0x00000268,0x00480000,0x000000b2,0x0005c060,0x00000000,0x00040004,0x00000000,0x00020020, +0x05700200,0x819207a4,0x29000606,0x000800c0,0x20000000,0x48908480,0x000a0103,0x00000000, +0x0001cf48,0x09010b90,0x00000180,0x00100000,0x88004000,0x00000a00,0x00000000,0xe47f1000, +0x03300009,0x80150002,0x07000600,0x31090000,0x00000021,0x00003800,0x00000000,0x00000000, +0x0b03ffc0,0x0eff0000,0x24066c4c,0x0cd00004,0x00000020,0x00080000,0x980000b2,0xb400010c, +0x00000000,0x00040004,0x00000000,0x22135038,0x4f602036,0x9a031408,0x18000606,0x00030040, +0x24000000,0x49800084,0x000a0103,0x00000000,0x24a0876c,0x058b0004,0x00080000,0x00800000, +0xf0005002,0x000006e1,0x00000000,0xec7e1fc4,0x03240448,0x86190005,0x07001000,0x20080000, +0x00000800,0x00001800,0x00000000,0x00000000,0xcd03ff80,0x003ee00f,0x34000778,0x00193140, +0x00004800,0x00080000,0x00164000,0xb4040000,0x00000000,0x000500f0,0x00000000,0x1e235904, +0x07700104,0x819e0000,0x28002606,0x000300b0,0x24020000,0x49800484,0x000a0103,0x00000000, +0x000c4c50,0x00ee0152,0x00000180,0x42000800,0x80005002,0x00000a01,0x00000000,0xe8400000, +0x00044d48,0x20130a00,0x00000001,0x00080e00,0xcd01e084,0x00004001,0x00000000,0x00000000, +0x4c000f80,0x0000011e,0x07bc680c,0xdc900010,0x00000000,0x00000000,0x000000b2,0x0e050060, +0x00000000,0x00040000,0x00000000,0x06600d08,0x2f4d3034,0x9b922406,0x10000606,0x000000d4, +0x20000000,0x4c900080,0x000c0103,0x00000000,0x00004c60,0x05020000,0x000a4180,0x00100000, +0xc0004164,0x00040600,0x00000000,0xe4400000,0x03204808,0x90010004,0x07000000,0x20010000, +0x0501e021,0x00001800,0x00000000,0x00000000,0x3903ef80,0x0003f400,0x02204f4c,0x90700082, +0x00000008,0x00000000,0x000100b2,0x000500e1,0x00000000,0x20200004,0x00000000,0x01815020, +0x4f6c0234,0x920e3404,0x49002606,0x000000c0,0x24000000,0xcc900084,0x00000103,0x00000000, +0x00004c72,0x00ca1b9c,0xe02c0180,0x00800010,0xf8004000,0x000c0c00,0x00000000,0xfc7e1000, +0x03344c58,0xe6000110,0x07001000,0x24080000,0x00000001,0x00001c83,0x00000000,0x00000000, +0xff03ef80,0x0fc081cf,0xf406002c,0x0c913040,0x00802834,0x00080000,0x001640b2,0x000520c0, +0x00000000,0x902200f0,0x00000000,0xa6639100,0x07630903,0x000a2406,0x48042400,0x000000a0, +0x24000000,0xc9000084,0x00000103,0x00000000,0x00004c60,0x05000192,0x00000000,0x00100000, +0xf8020002,0x240406c0,0x00000000,0xf4400000,0x03a40658,0xb2010000,0x07001080,0x20080e00, +0x40000800,0x00001803,0x00000000,0x00000000,0x1d03e000,0x000087f0,0x47b84f4c,0x50304880, +0x00004800,0x08480000,0x00000000,0x00066000,0x00000000,0x10200004,0x00000000,0x063b5002, +0x06700274,0x8b940321,0x4c002207,0x002000d0,0x24000000,0xc9108484,0x000c0103,0x00000000, +0x15200f70,0x05ee819e,0x002c0130,0x00800800,0xb8004010,0x480c0e01,0x00000000,0xe0400000, +0x00060000,0xe0000000,0x00000400,0x00010000,0x00000084,0x00001c00,0x00000000,0x00000000, +0xde03ef80,0x003e8ec7,0x04060e6c,0x5008f050,0x00c04860,0x00080000,0x00164009,0xb005c000, +0x00001c01,0x00040000,0x00000000,0x06000436,0x00323874,0x00022405,0x49000400,0x001800d4, +0x24000000,0xc0000084,0x00080103,0x00000000,0x14122800,0x05069a08,0x000000a0,0x00900000, +0x882c8810,0x00000001,0x00000000,0x00000fc4,0x03a00444,0x8a182190,0x000010e0,0x20080e00, +0x00000821,0x00000001,0x00000000,0x00000000,0x12000f80,0x0000fd30,0x3626680c,0x500303c9, +0x00c06820,0x00480000,0x000000b2,0x00030000,0x00000000,0x00048004,0x00000000,0x06035808, +0x04403000,0x9a0003a0,0x40002607,0x000000cc,0x20000000,0x09600000,0x000c8000,0x00000000, +0x2400482c,0x010403d7,0x00270180,0x00800000,0xc0000002,0x000c0641,0x00000000,0xfc400f84, +0x00002800,0xa818c002,0x07000000,0x01090000,0x38000801,0x00001803,0x00000000,0x00000000, +0xce000000,0x00003d6f,0x37260f7e,0x90013000,0x0001c804,0x00000000,0x002120b2,0x0e000000, +0x00001c00,0x04240000,0x00000000,0x00320100,0x68103040,0x81940330,0x40002207,0x000000c0, +0x24000000,0xc9c00484,0x000ca103,0x00000000,0x24100f48,0x0d0101dc,0xe00800a0,0x00100007, +0xa82c8164,0x00080641,0x00000000,0x00000000,0x17ae4c60,0xa8000190,0x07000000,0x24080000, +0x00000001,0x00000000,0x00000000,0x00000000,0x17000000,0x00380140,0x34182f4c,0x904000c8, +0x0001c808,0x00080000,0x001640b2,0x000000c1,0x00000000,0x00200000,0x00000000,0x00015038, +0x48003234,0x0b920230,0x18002000,0x000000c0,0x20000000,0xc0000480,0x00080103,0x00000000, +0x0010680c,0x00c80000,0x00000120,0x00000000,0xf0000000,0x00001000,0x00000000,0xfc400000, +0x00082818,0x8e001202,0x07000400,0x00010e00,0x00000001,0x00003800,0x00000000,0x00000000, +0x9803e000,0x003e0396,0x3418081c,0x90400116,0x0001c838,0x00080000,0x000000b2,0x00020000, +0x00001c00,0x000620f0,0x00000000,0x18035900,0x00000904,0x00060006,0x4b802400,0x0000004c, +0x24000000,0x00000084,0x00080000,0x00000000,0x00000830,0x09050a02,0x04200180,0x00000000, +0x002c8002,0x00000c01,0x00000000,0xe0400000,0x03a64d50,0xc4101212,0x07000060,0x24200000, +0x00000000,0x00000000,0x00000000,0x00000000,0x21000000,0x003891b0,0x3416680c,0x10300081, +0x0001a820,0x08480000,0x001640b2,0xd40660e0,0x00000001,0x24240000,0x00000000,0x00615d00, +0x680c3134,0x20000018,0x21842400,0x000000cc,0x04000000,0x00000080,0x000a0000,0x00000000, +0x24006800,0x00ed9a0c,0x00000130,0x00100000,0xc0001002,0x00001080,0x00000000,0x00000000, +0x02204808,0x02160b92,0x07000421,0x00080e00,0x00000001,0x00001804,0x00000000,0x00000000, +0x15000f80,0x003f0190,0x47a60f5c,0xd0003302,0x00014810,0x00480000,0x000000b2,0x0e0280e0, +0x00000000,0x00040004,0x00000000,0x1c015d36,0x2e6b2024,0x2b900320,0x20002000,0x000000d0, +0x24000000,0x00008484,0x0006a000,0x00000000,0x3404680c,0x09010000,0x002c00a0,0x00900000, +0x18004164,0x00001041,0x00000000,0xfc781000,0x03a64820,0x4e000a06,0x07000400,0x20080000, +0x00000021,0x00004c00,0x00000000,0x00000000,0x20000000,0x003f0190,0x00000000,0x90004802, +0x00014820,0x00080000,0x001640b2,0x00000000,0x00000000,0x00240004,0x00000000,0x042b9102, +0x68200014,0x120e3400,0x10002000,0x003800d4,0x24000000,0x09b00404,0x00000000,0x00000000, +0x2400481c,0x00c90194,0x002240a0,0x00800000,0x40020000,0x000c1040,0x00000000,0x00000000, +0x00064820,0x00061315,0x07000200,0x00010e00,0x38000001,0x00003803,0x00000000,0x00000000, +0x00000000,0x00000230,0xc3a6045c,0x901008c2,0x0001a820,0x00080000,0x001640b2,0x0e020060, +0x00001c00,0x00000000,0x00000000,0xa07a0120,0x000c0007,0x22000404,0x21000000,0x00400000, +0x24000000,0xc6000404,0x000a2103,0x00000000,0x00042f78,0x00010003,0x00000120,0x00000000, +0xc02c8164,0x000010c1,0x00000000,0x00000000,0x03a00444,0x000c0a00,0x07000461,0x20080e00, +0x38000821,0x00001804,0x00000000,0x00000000,0x2103e000,0x00009ba0,0x3626074c,0x0cc00000, +0x00012e44,0x08480000,0x000000b2,0x0e01c000,0x00001c00,0x04240004,0x00000000,0x06420e04, +0x07403624,0x21d42409,0x40000400,0x00380084,0x20000000,0x10000400,0x00000000,0x00000000, +0x2400680c,0x0dcf01d2,0x00230000,0x00100000,0xf02c8164,0x000010c1,0x00000000,0x003f1f84, +0x00020648,0x30001356,0x070002c1,0x00080000,0x00000800,0x00001800,0x00000000,0x00000000, +0x1f03e000,0x0e40979e,0x2418074c,0x00111000,0x00c06801,0x00480000,0x00164000,0x00060000, +0x00001c00,0x40040000,0x00000000,0x00015238,0x077c0004,0x01980327,0x43802400,0x000000a0, +0x24000000,0x07008484,0x000ca000,0x00000000,0x0014080c,0x00cd8000,0x000000a0,0x10900000, +0xd02c8000,0x6c0010c0,0x00000000,0xe0400000,0x02204820,0x08160209,0x000004e1,0x00010e00, +0xb8000801,0x00000001,0x00000000,0x00000000,0x1a000000,0x00000150,0x03a0000c,0x9000cb06, +0x00c0e838,0x00400000,0x000000b2,0x00020000,0x00000000,0x00200000,0x00000000,0xb0039100, +0x07700003,0x920207a0,0x31002607,0x000000c4,0x24000000,0x10000400,0x000a0000,0x00000000, +0x00006800,0x008c1202,0x002400a0,0x00148000,0xc0000010,0x00000001,0x00000000,0x00000000, +0x02a02800,0x2e18120c,0x07000e01,0x01090000,0x38000081,0x00003c03,0x00000000,0x00000000, +0x3803e000,0x003ef390,0x03be044c,0x90110003,0x00004800,0x20400000,0x000020b2,0x0e01c0e0, +0x01b00000,0x2426a0f0,0x00000000,0x004a0008,0x0d443000,0x819836b9,0x0b802207,0x00280000, +0x20000000,0x10000090,0x00000000,0x00000000,0x00066830,0x0000019b,0x00080000,0x00100000, +0x00020164,0x00000c00,0x00000000,0xf8400000,0x03a60544,0xe0101a08,0x070908a0,0x21090000, +0x00000021,0x00003804,0x00000000,0x00000000,0xa3000000,0x003ff808,0x34060740,0x905901c0, +0x00c06838,0x00400000,0x00840000,0x0e02c000,0x00001c00,0x20240004,0x00000000,0x06000128, +0x00300524,0x20000006,0x28000400,0x00280060,0x00000000,0x00000080,0x000c0000,0x00000000, +0x25a0680c,0x00ea0000,0x000ac136,0x10900000,0x802c8164,0x00000c00,0x00000000,0x00000fc4, +0x00064820,0x20100190,0x00000d01,0x00080080,0x00000800,0x00000000,0x00000000,0x00000000, +0x40000000,0x003fe629,0x373c680c,0x90588050,0x00002830,0x00400a20,0x002120b2,0x0005c080, +0x00000000,0x20240000,0x00000000,0xa00a0300,0x0f5c1003,0x800003a0,0x13902207,0x00400060, +0x04000000,0x10000080,0x0006c080,0x00000000,0x3416080c,0x0d058392,0x002c0120,0x10900000, +0xd0000000,0x00000241,0x00000000,0x00000f84,0x03a02e49,0x20000196,0x07000481,0x20010000, +0x38000800,0x00003803,0x0000002d,0x00000000,0x00000000,0x00000240,0x74060544,0xd0401346, +0x00004b40,0x00400000,0x800020b2,0x0e03c0e0,0x00000000,0x04240004,0x00000000,0x06000d00, +0x003c0600,0x01920018,0x38000400,0x000000d0,0x24000000,0x13008480,0x000c0080,0x00000000, +0x34060004,0x09001358,0x00200000,0x00800000,0x70004164,0x00000e61,0x00000000,0x00000fc4, +0x03b82e64,0x0018019e,0x070010c1,0x00080000,0x00000801,0x00004800,0x00000024,0x00000000, +0x2403e000,0x09ff0390,0xf416074c,0x0c803902,0x00004809,0x00400fc0,0x00164000,0x00004060, +0x00000000,0x102220f0,0x00000000,0xa001d002,0x68000303,0x3b5c0000,0x48102000,0x00400000, +0x20000000,0x10000400,0x000c8000,0x00000000,0x34066d54,0x01c9000c,0xc0224140,0x10900006, +0x80004000,0x7e000c61,0x00000000,0xe0400000,0x03a62804,0x30100002,0x00000621,0x24080e00, +0xc0000001,0x00001804,0x00000000,0x00000000,0x22000000,0x00250250,0x34196c4c,0x00007006, +0x00006e78,0x08480000,0x00164408,0x000340ec,0x02401c00,0x00200004,0x00000000,0x04615008, +0x680c0040,0x33de36a8,0x48002000,0x000000c0,0x20000000,0x08000410,0x00060000,0x00000000, +0x353c281c,0x00ee0002,0xc0224120,0x00800006,0xc02c8212,0x00001000,0x00000000,0xfc400e84, +0x03260441,0xc0001350,0xb4001000,0x24080e00,0x00000800,0x00000003,0x00000000,0x00000000, +0x3f03e000,0x000003d0,0x03a6480c,0x50400309,0x0001280c,0x20400000,0x80164001,0x0e05c00a, +0x00000000,0x000600f0,0x00000000,0x38615130,0x074c0937,0x120203a6,0x1b842400,0x00402000, +0x20000000,0x10000080,0x00000000,0x00000000,0x00100830,0x00070000,0x40140120,0x0086c002, +0xc0000164,0x00000c01,0x00000000,0xf4400000,0x02a80448,0x20000098,0x000902c1,0x04080e00, +0x38000081,0x00003004,0x00000000,0x00000000,0x3903ef80,0x0aa7ee60,0xc41e6808,0x00004012, +0x00004b48,0x08480000,0x001640b2,0x0e0200c0,0x03f00000,0x902280f0,0x00000000,0x1c0a0106, +0x2f4c00f4,0x0192032e,0x42000400,0x004000d4,0x20000000,0x00000090,0x00000000,0x00000000, +0x25b80030,0x00c80154,0x00000000,0x00800000,0xf0004164,0x00201081,0x00000000,0xfc400000, +0x04040e48,0x0e001a0a,0x07000a01,0x00080e00,0x1441e000,0x00003c84,0x00000000,0x00000000, +0x80fc0000,0x097f9e3e,0x83a04810,0x900041c0,0x00004818,0x00080000,0x00000000,0x0e032000, +0x00000000,0x60a40004,0x00000000,0xa6135600,0x074c04c3,0x01920000,0x43802400,0x000000d4, +0x24000000,0x09008484,0x000c8000,0x00000000,0x341c4804,0x00c913d0,0x00160060,0x00100000, +0xe0020164,0x01e010e1,0x00000000,0xa8b91fc4,0x36200460,0x2000009b,0x00000201,0x00080000, +0x00000801,0x00003800,0x00000000,0x00000000,0x0003f000,0x0000e3f0,0x34066c4c,0x9ef00003, +0x0001c820,0x00080000,0x00164001,0x0005c000,0x00001c00,0x04240000,0x00000000,0x06135900, +0x48303040,0x01dc0000,0x23800400,0x1c400040,0x20000002,0x10000400,0x00000000,0x00000000, +0x24000000,0x05e90198,0x002e00a0,0x00800000,0xc02c8000,0x000010e1,0x00000000,0x00000000, +0x03260800,0x201013da,0x000004c1,0x20090e00,0x80800821,0x00001803,0x00000000,0x00000000, +0xcdf7ef80,0x00004cc2,0x00004800,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000c, +0x00000000,0x00009020,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000008c0,0x00000000,0x00132000,0x00000000,0x00000000,0x00000000,0x00000000, +0x05218800,0x00000000,0x00000000,0xbf400000,0x00000000,0x00000d30,0x00000008,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x000180c4,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000, +0x01b00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000006,0x00000040,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x20000000,0x00000206,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000008c0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x01900000,0x00000000,0x00000000,0x00000000,0x00008480,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x40000000,0x00000005,0x00000000,0x00000000,0x00000020,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00080000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000c000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00060000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x80000000,0x00000003,0x24000000,0x90000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000034, +0x00000000,0x00000000,0x00000000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x04000f40,0x00000000,0x00040000,0x00040000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002000,0x00000000, +0x34000000,0x00000000,0x90000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x28010000,0x00000005,0x00000000,0x00000000,0x00000000, +0x80fbef80,0x05002c02,0x00006800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80209020,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x02000000, +0x00000100,0x08000000,0x00060000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00080400,0x00000000,0x508b2288,0x00000000,0x00000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x00fc0000,0x00140000,0x0000000c,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x29740000,0x00000002,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xc0000400,0x00000103,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3f400000, +0x0ff7ef80,0x00004cf3,0x00040000,0x00100000,0x00000000,0x80000000,0x00000000,0x00000000, +0x00000000,0x00009020,0x00000000,0x01000801,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000300,0xc0000000,0x00000103,0x00000000,0x00080000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00132000,0x00000000,0x00000000,0x00000000,0x00000000, +0x05418800,0x00000000,0x00000000,0xbf400000,0x40000000,0x00004c04,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000002, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x08a00000,0x00000000,0x00000000, +0x00100000,0x00000000,0x00000000,0x00000000,0x00000000,0x0004a000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x04000000,0x00000000,0x00004800,0x00000000,0x00000800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x20000000,0x00000206,0x00000000, +0x00000000,0xc0000000,0x00000103,0x00000000,0x24004800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0003d000,0x00000040,0x00000008,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x01300002,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000001,0x00000000,0x00000000,0x00800000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00060000,0x00120000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002804,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000002,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80000000,0x00000207,0x00000034,0x00000000,0x00000000,0x00000000,0x00000000, +0x24000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34060000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00004180,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000034, +0x00000300,0x00000000,0x00000000,0x00000000,0x24100000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x34060000,0x00000000,0x00000000,0x00000000, +0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00152c00,0x00000000,0x00000000, +0x00000030,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000054,0x00000000,0x00000000,0x00000000,0x00000000, +0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00180000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00006800,0x00000000,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00002000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x03a00000,0x80000000,0x000000c0,0x20000000, +0x00000021,0x00000000,0x00000000,0x00000000,0x4efbef80,0x05123803,0x34000030,0x00000000, +0x00000030,0x08480000,0x00000000,0x00000000,0x00000000,0x80209020,0x00000000,0xa0000000, +0x00000007,0x00000000,0x00008000,0x01800000,0x00000c00,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x508e2348, +0x00180000,0x00000000,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x00000000, +0xd5ffefbe,0x00143002,0x00060000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000c, +0x00000000,0x69749020,0x00000002,0x01800000,0x00000000,0x00000000,0x00000000,0x06000000, +0x00000300,0x00000000,0x00000000,0x00000000,0x01200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x48000000,0x00000000,0x000c22c8,0x00000000,0x60000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x3f400000,0xcdfbffc0,0x02800c03,0x34000000,0xd0000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x902280c4,0x00000000,0x0001d000, +0x00000034,0x00000000,0x00042400,0x00000000,0x00000000,0x08900000,0x00000000,0x00000000, +0x01a00000,0x00000000,0x00000000,0x00000000,0x00000000,0x01840000,0x00000000,0x28800000, +0x00000000,0x00000000,0x00000000,0x00000000,0x05418800,0x00000000,0x00000000,0x00000000, +0x84d3ff76,0x04ce4c02,0x0004e800,0x00000000,0x00000060,0x80000000,0x00001000,0x00000000, +0x00000000,0x90229964,0x00000000,0x00000001,0x00000600,0x20000000,0x2b800286,0x00300000, +0x00001600,0xc0000000,0x00000103,0x00000000,0x34180000,0x00000000,0x000a0000,0x00000000, +0x00000000,0x00200000,0x00000000,0x4d400e44,0x00000000,0x80000a00,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x805fa000,0x0cffff00,0x02f92950,0x77200000,0x00000000, +0x000a6800,0x00000000,0x00212000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000000,0x00000000,0x00002000,0x00000000,0x00000400,0x08000000,0x00000000,0x00000000, +0x34060000,0x00000000,0x00000000,0x00000000,0x00000000,0x0020a000,0x00000000,0x2c8a2000, +0x00002800,0x001000d6,0x00000000,0x00200000,0x04418800,0x00000000,0x00000000,0x00000000, +0x4edbf000,0x04c04c05,0x00000000,0xd0000000,0x00006830,0x08480000,0x00000000,0x00000000, +0x00000000,0x90229964,0x00000000,0xa0120003,0x00000003,0x00000000,0x00000000,0x00300000, +0x00001600,0x08a00000,0x00000000,0x00000000,0x04060000,0x00000000,0x00000000,0x00000000, +0x00000000,0x0024a000,0x00000000,0x4d400000,0x00020030,0x00000050,0x00000000,0x00000000, +0x00000004,0x00000000,0x00000000,0x805fa000,0x0bfc0f38,0x02842800,0x74000000,0x00184000, +0x00000800,0x80000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x01800800, +0x00000000,0x00000000,0x00000000,0x00000034,0x00000000,0xc0000000,0x00000103,0x00000000, +0x34302800,0x00000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800000, +0x24000800,0x00000004,0x000000c0,0x00000000,0x04418800,0x00000000,0x00000000,0x00000000, +0x00e3ff00,0x050050a0,0x43a10000,0x00000000,0x000a4810,0x00000000,0x01003000,0x00000000, +0x00000000,0x9022a960,0x00000000,0x00000001,0x00000000,0x80000000,0x00000287,0x02302800, +0x00000000,0x00000000,0x00000000,0x00000000,0x34040000,0x00000000,0x00000000,0x00000000, +0x00000000,0x01000000,0x00000000,0x51400000,0x00006c4b,0x00101204,0x00000000,0x08010000, +0x0221e000,0x00000000,0x00000000,0x805fa000,0x17ebffbc,0x059758e3,0x1403a803,0x0ae80000, +0x00000030,0x00000000,0x02000000,0x0e000002,0x00001c00,0x9022a960,0x00000000,0x00000001, +0x00000064,0x80000004,0x00000206,0x08000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00066c40,0x0d000000,0x08180140,0x00000000,0x006c8164,0x00800000,0x00000000,0x59400308, +0x00000758,0x00100008,0x00000000,0x19200000,0x01204400,0x00000000,0x00000000,0x805fa000, +0x80fbdfba,0x02c00002,0x00030808,0x00080000,0x00020000,0x00000008,0x20002001,0x000000d1, +0x00060000,0x90200184,0x00000000,0x04000000,0x04400100,0x80000000,0x00102206,0x08342400, +0x20000000,0x08000010,0x00000000,0x00000000,0x14080030,0x00e9c000,0x04000000,0x00000000, +0x00000000,0x02000000,0x00000000,0x2c800288,0x00000030,0x001700d4,0x00000000,0x14080000, +0x01204400,0x00004000,0x00000000,0x00000000,0x8d03ffc0,0x00002c20,0x24004800,0x1a804002, +0x01020000,0x00000000,0x00000000,0x00000000,0x00000000,0x000100f0,0x00000000,0x000a0000, +0x05400200,0x80000000,0x10000206,0x00422400,0x00000000,0x40800000,0x00000103,0x00000000, +0x34000460,0x00000000,0x001b0166,0x00000000,0xc0004000,0x00000000,0x00000000,0x00192000, +0x00004800,0x6013920c,0x00000000,0x00000000,0x0201e000,0x00000000,0x00000000,0x00000000, +0x0cffffc0,0x03590970,0x24146820,0x10080000,0x00002800,0x00000008,0x023641b2,0x00000000, +0x00040000,0x00000000,0x00000000,0x00200408,0x00040880,0x800003a0,0x00108207,0x00000000, +0x80000000,0x40000010,0x00000103,0x00000000,0x00000000,0x00000000,0x08000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000740,0x00000000,0x07000000,0x04200e00, +0x0201e000,0x00000000,0x00000000,0x00000000,0x40f3ffc0,0x06406573,0x36282c44,0x0c800000, +0x00000800,0x00000000,0x00000000,0x00000000,0x00000000,0x90209044,0x00000000,0x00200002, +0x00000514,0x80000000,0x00000206,0x08000000,0x00002000,0x48000000,0x00000103,0x00000000, +0x00006800,0x00000000,0x00001200,0x00000000,0x00000000,0x00800000,0x00000000,0x00000348, +0x0000680c,0x00061a00,0x00000000,0x00000000,0x39204000,0x00004481,0x00000000,0x00000000, +0xcfe3ffb8,0x064064b2,0x14000742,0xda800002,0x00000008,0x00000000,0x28165000,0x0e0000e1, +0x00000000,0x90229964,0x00000000,0x00000009,0x00000000,0x80000000,0x00000206,0x08302400, +0x00001000,0x40000000,0x00000103,0x00000000,0x00060550,0x00000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x654002c8,0x00000008,0x000000dc,0x00000000,0x10000e00, +0x01204400,0x00004380,0x00000000,0x805fa000,0x57fbfffb,0x028038f3,0x66200000,0x00600000, +0x00022810,0x00000000,0x28000000,0x000000c1,0x00001c00,0x902110f0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000206,0xfc302400,0x0001f4ff,0x40000000,0x00000103,0x00000000, +0x00106e40,0x00880000,0x00000000,0x00000000,0x002c8000,0x02000000,0x00000000,0x28800000, +0x00000000,0x0010000c,0x00000000,0x00000000,0x0221e400,0x00000000,0x00000000,0x00000000, +0x17ffffbb,0x00003170,0x40040000,0x00080006,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00020000,0x07400100,0x80000000,0x00000206,0x00000000, +0x0001fc00,0x40000000,0x00000103,0x00000000,0x34000038,0x50000000,0x000000d6,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00001200,0x00000000,0x00000000, +0x0221e400,0x00000000,0x00000000,0x00000000,0x0ffffffc,0x039734f3,0x00006803,0x0a810000, +0x00006830,0x00000000,0x000011b2,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00300800,0x80000000,0x00000206,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x04060640,0x50000000,0x001b0000,0x00000000,0x00000000,0x02000000,0x00000000,0x388d2308, +0x0000680c,0x00000008,0x07000000,0x00000000,0x39204400,0x00000001,0x00000000,0x00000000, +0xcfe3ffb8,0x064064b2,0x14000742,0xda800002,0x00000008,0x00000000,0x28165000,0x0e0000e1, +0x00000000,0x90229964,0x00000000,0x00000009,0x00000000,0x80000000,0x00000206,0x08302400, +0x00002200,0x40000000,0x00000103,0x00000000,0x00060550,0x00000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x654002c8,0x00000008,0x000000dc,0x00000000,0x10000e00, +0x01204400,0x00004380,0x00000000,0x805fa000,0x57fbfffb,0x028038f3,0x66200000,0x00600000, +0x00022810,0x00000000,0x28000000,0x000000c1,0x00001c00,0x902110f0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000206,0xfc302400,0x0001f4ff,0x40000000,0x00000103,0x00000000, +0x00106e40,0x00880000,0x00000000,0x00000000,0x002c8000,0x02000000,0x00000000,0x28800000, +0x00000000,0x0010000c,0x00000000,0x00000000,0x0221e400,0x00000000,0x00000000,0x00000000, +0x17ffffbb,0x00003170,0x40040000,0x00080006,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00020000,0x07400100,0x80000000,0x00000206,0x00000000, +0x0001fc00,0x40000000,0x00000103,0x00000000,0x34000038,0x50000000,0x000000d6,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00001200,0x00000000,0x00000000, +0x0221e400,0x00000000,0x00000000,0x00000000,0x0ffffffc,0x039734f3,0x00006803,0x0a810000, +0x00006830,0x00000000,0x000011b2,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00300800,0x80000000,0x00000206,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x04060640,0x50000000,0x001b0000,0x00000000,0x00000000,0x02000000,0x00000000,0x388d2308, +0x0000680c,0x00000008,0x07000000,0x00000000,0x39204400,0x00000001,0x00000000,0x00000000, +0x40dfefb8,0x04402ff3,0xb6b00000,0xdc800000,0x00026c6c,0x00000000,0x803640b2,0x0f84a00e, +0x00000000,0x902290d0,0x00000000,0x00000009,0x054020c0,0x81900006,0x30000286,0x0a000000, +0x04001400,0x40000084,0x00000143,0x00000000,0x3406080c,0x00008000,0x00000112,0x00000000, +0x70000164,0x00200600,0x00000000,0x45c00f84,0x00000000,0x60000000,0x07c00200,0x00000f80, +0x0521a000,0x00000000,0x00000000,0xbf400000,0x0d03ef80,0x000048b0,0x00066e60,0x0e980000, +0x0801067c,0x80080008,0x000001b2,0x000000c0,0x00000000,0x000180f0,0x00000000,0xa001d000, +0x00002002,0x81920220,0x20108306,0x08300000,0x20000000,0x40000080,0x00000183,0x00000000, +0x04062804,0x00000000,0x08000000,0x00800000,0xf0000000,0x000010c1,0x00000000,0x00000000, +0x00000800,0x80000000,0x07c00000,0x04200000,0x04c1a000,0x40001800,0x00000000,0x00000000, +0xc0ebef80,0x003c3402,0x00090003,0x00010101,0x10000000,0x80000000,0x00000000,0x000300c0, +0x00001f00,0x000210d0,0x00000002,0x02011000,0x00040000,0x800203a0,0x18000686,0x16384a00, +0x20001400,0x40000400,0x00000143,0x00000000,0x00000008,0x00000000,0x00300178,0x00000000, +0x406c8000,0x00000000,0x00000000,0x00000000,0x00004808,0x80000200,0x00000ac0,0x00010000, +0x0421a000,0x80000000,0x00000000,0x00000000,0x7dfbef80,0x02c02c03,0x36380010,0x10100008, +0x30000740,0x00400000,0x000020b2,0x000000e1,0x00000000,0x902210d0,0x00000000,0xa0011008, +0x2f603002,0x800003b8,0x20000706,0xf4302a00,0x040028ff,0x40000000,0x00000183,0x00000000, +0x34100550,0x00000150,0x00180000,0x00100000,0xc0000000,0x06000601,0x00000000,0x2c800fc4, +0x00002c40,0x24000000,0x07c008e1,0x00010000,0xc221e000,0x00000003,0x00000000,0x00000000, +0x00ffef80,0x00113520,0x24060540,0x0c980100,0x08002800,0x00400000,0x00002000,0x0f800000, +0x00000000,0x697120f0,0x00000002,0x00000008,0x00001840,0x81900220,0x00002286,0x00000000, +0x20000000,0x40000080,0x00000143,0x00000000,0x00024d44,0x00000001,0x0032c0c0,0x00000000, +0x00000164,0x00600000,0x00000000,0x00381e44,0x00006800,0x00000000,0x00000600,0x00010000, +0x8221e000,0xc0000003,0x00000000,0x3f400000,0xfffbffc0,0x02b93402,0x34106800,0x50100000, +0x3800075c,0x28480000,0x00164001,0x0f80c000,0x00000000,0x902290d0,0x00000000,0x20000006, +0x08000002,0x80020000,0x2c000286,0x08000000,0x00001000,0x48000000,0x00060143,0x00000000, +0x03200e64,0x00c80000,0x00660166,0x00000000,0x00000164,0x00800000,0x00000000,0x28800000, +0x24000810,0x00000000,0x00000000,0x00000f80,0x0521a000,0x80004380,0x00000000,0x00000000, +0x0be3fffb,0x00002cd0,0x40000000,0x00084000,0x18000808,0x00000014,0x001641b2,0x00000000, +0x00161f00,0x000660d0,0x00000002,0x00000000,0x00000200,0x80000000,0x00202686,0x12000000, +0x24000c00,0x40000020,0x00000143,0x00000000,0x07b80f40,0x00a80000,0x00310100,0x00800000, +0x002c8000,0x00000600,0x00000000,0xf4400000,0x00040002,0x00001a00,0x07c00000,0x10080f80, +0xc4c1a000,0x00000003,0x00000002,0x38400000,0x83efff80,0x04404403,0x2401cd4c,0x00000002, +0x0000000c,0x00400000,0x00001000,0x00000000,0x00000000,0x90229960,0x00000000,0x26011101, +0x04433002,0x80000000,0x00002306,0x02000000,0x00000600,0x48000000,0x00000183,0x00000000, +0x00060000,0x00000000,0x00181ad6,0x00000000,0x00000000,0x0024a000,0x00000000,0x45400388, +0x0000000b,0x00000000,0x00000000,0x10000000,0x01204000,0x80004280,0x00000001,0x805fa000, +0xc3fbef80,0x03523032,0x00040009,0x00000000,0x30026800,0x00000000,0xaa0021b2,0x000000d0, +0x00001c00,0x90209020,0x00000000,0x00015000,0x00000000,0x80000000,0x00040686,0x02302000, +0x00000400,0xc9000000,0x00000103,0x00000000,0x24000000,0x00000000,0x001ac000,0x00000000, +0x006c8000,0x008c6000,0x00000000,0x348c22c8,0x00006800,0x00100000,0x07000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x8ffbfffc,0x02804924,0x00000000,0x0a800000, +0xc0462e4c,0x00000000,0x00364000,0x00000000,0x00000000,0x902100f0,0x00000000,0x00000000, +0x05403000,0x80000000,0x00000286,0x00000000,0x00000000,0xc8000000,0x00000103,0x00000000, +0x14200000,0x00000000,0x0018c000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800f84, +0x00000003,0x001212d0,0x00000000,0x00000e00,0x0441e000,0x00000000,0x00000000,0x00000000, +0x3efbfffc,0x00c00124,0x02a00000,0x00080002,0x00000348,0x00000000,0x80164000,0x0000000c, +0x00000000,0x000260d0,0x00000000,0x00000100,0x00000000,0x80000000,0x00000207,0x00000000, +0x00000000,0x40000000,0x00000143,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000f84,0x00000800,0x0000000c,0x00000400,0x00000e00, +0x0521a000,0x80000000,0x00000007,0x00000000,0xd0ffffc0,0x00002900,0x00020000,0x0c800000, +0x30000830,0x80080000,0x00000000,0x00000000,0x00000000,0x000280f0,0x00000000,0x00011000, +0x00040000,0x80000000,0x00200686,0x0c000000,0x00000000,0x40000000,0x00000143,0x00000000, +0x00100640,0x00000000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x14000000,0x80000200,0x00000000,0x00000000,0x04c1a000,0x00004381,0x00000003,0x00000000, +0xc3ffffc0,0x04be4003,0x16200800,0x00100000,0x90000000,0x80000000,0x010020b2,0x00000000, +0x00001c00,0x90209020,0x00000000,0x00019000,0x00000004,0x80000000,0x00400706,0x02000000, +0x00000400,0x40000000,0x00000143,0x00000000,0x04000008,0xb0000000,0x00000000,0x00000000, +0x002c8002,0x00800000,0x00000000,0x489023c8,0x00006800,0xf2000000,0x07000260,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x00f7ff40,0x03c03c50,0x00026808,0x0e800000, +0xe0000000,0x00000000,0x02000000,0x00000000,0x00000000,0x9022a960,0x00000000,0x00000001, +0x00000124,0x80080000,0x4ac00286,0x12000000,0x00000000,0xc8000000,0x00000143,0x00000000, +0x00000663,0x00000000,0x00000000,0x00000000,0x00000000,0x00280000,0x00000000,0x3d400000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0421e000,0x40000000,0x00000003,0x805fa000, +0x43fbffc0,0x030c3823,0x00040808,0x08820000,0xe88e0000,0x00000000,0x02000000,0x00000000, +0x00000000,0x9022a0d0,0x00000000,0x04600000,0x00000800,0x80000000,0x00400306,0x00000000, +0x00000000,0xc8000000,0x00000143,0x00000000,0x00000660,0x00000000,0x00000000,0x00000000, +0x00000000,0x12082000,0x00000000,0x30800000,0x00000642,0x00120000,0x00000000,0x00080000, +0x0541a000,0x80000000,0x00000003,0x00000000,0x00fbffc0,0x02ca3003,0x14000000,0x0ac04000, +0x500e0000,0x00000000,0x00000000,0x00000000,0x00000000,0x902290d0,0x00000000,0x00000000, +0x00000024,0x80000000,0x00000287,0x0c000000,0x00000800,0xc8900000,0x00000143,0x00000000, +0x04000660,0x00000000,0x00000000,0x00000000,0x00000000,0x09082000,0x00000000,0x2c800000, +0x00000000,0x00120090,0x00000000,0x00000000,0x0521a000,0xc0000000,0x00000003,0x00000000, +0x0cfbffc0,0x028000c0,0x00000000,0x10000000,0x80000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x902260d0,0x00000000,0x00000000,0x00000900,0x80000000,0x00000287,0x10000000, +0x00001000,0xc0000000,0x00000103,0x00000000,0x34000660,0x00000000,0x00000000,0x00000000, +0x00000000,0x09000000,0x00000000,0x28800000,0x00000000,0x00000298,0x00000000,0x00000000, +0x04c1a000,0x00000000,0x00000000,0x00000000,0x8003ffc0,0x00002802,0x24002808,0x08801000, +0x08000020,0x00000000,0x00000000,0x00000000,0x00000000,0x000290d0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000286,0x08000000,0x00000800,0x40000000,0x00000143,0x00000000, +0x00060660,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000002,0xa0000008,0x00000000,0x00000000,0x0521a000,0x40000000,0x00000001,0x00000000, +0x0afbffc0,0x000000a0,0x40000003,0x00600000,0x18004808,0x00000000,0x80000000,0x00000100, +0x00000000,0x000260d0,0x00000000,0x0013d000,0x00000900,0x92000000,0x00000706,0x0c300000, +0x00002000,0x40000000,0x00000183,0x00000000,0x34000740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00004800,0x00000008,0x00000000,0x00000000, +0x04c1a000,0xc0000000,0x00000001,0x00000000,0x0003efc0,0x00000003,0x34004800,0x00200000, +0x08000008,0x00000000,0x00000000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00000800, +0x00000100,0x80080000,0x00000286,0x18000000,0x00004400,0x40000000,0x00000143,0x00000000, +0x24060660,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004808,0x00000000,0x00000000,0x00000000,0x0421a000,0xc0000000,0x00000000,0x00000000, +0x8003effe,0x00002c02,0x00006800,0x00000000,0x38000000,0x00000000,0x00000000,0x000000c0, +0x00000000,0x000210f0,0x00000000,0x01600c00,0x00003900,0x80000000,0x00000306,0x18300000, +0x00000400,0x40000000,0x00024183,0x00000000,0x00040020,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x003f1000,0x00006828,0x00100000,0x00000000,0x10000000, +0x0521a400,0x40000000,0x00000001,0x00000000,0x0003fffe,0x00003003,0x0400c802,0x00001000, +0x48006e40,0x00000000,0x1a000000,0x000000e1,0x00000000,0x002210d0,0x00000000,0x00000022, +0x00000224,0x80000000,0x00000286,0x1a304420,0x00002800,0x40000000,0x00000143,0x00000000, +0x03a40030,0x00000000,0x01400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004808,0x001001d0,0x00000000,0x00000000,0x0421a400,0xc0000000,0x00000002,0x00000000, +0x8003fffe,0x000b33f2,0x14010000,0x00000000,0x48000008,0x00000000,0x20000000,0x000000e1, +0x00000000,0x000110f0,0x00000000,0x00120000,0x00000800,0x92000000,0x00000286,0x04302400, +0x00000c00,0x40000000,0x00000143,0x00000000,0x00044800,0x00000000,0x01c00000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x03a0000e,0x0000000c,0x00000000,0x30000000, +0x0221e400,0xc0000000,0x00000002,0x00000000,0x8003fffe,0x00003002,0x34038001,0x00000002, +0x50000030,0x00000000,0x98000000,0x000000e0,0x00000000,0x000110f0,0x00000000,0x00000800, +0x00000000,0x80080000,0x00000286,0x08302400,0x00001400,0x40000000,0x00000143,0x00000000, +0x00060740,0x00000000,0x01440030,0x00000000,0x00000000,0x00000600,0x00000000,0x00000000, +0x0006000c,0x800000d0,0x00000000,0x10000000,0x0221e400,0x40000000,0x00000003,0x00000000, +0x0003fffe,0x00003003,0x43226c43,0x00000000,0x70004800,0x00000000,0x18010008,0x000000e1, +0x00000000,0x000110f0,0x00000000,0x00600000,0x00003000,0x81d00000,0x00000686,0x0c382434, +0x00001c00,0x40000080,0x00000143,0x00000000,0x0000002c,0x00000000,0x00064000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000fc4,0x0000000c,0xa000000c,0x00000000,0x10000000, +0x0221e400,0x80000000,0x00000003,0x00000000,0x3f03ffc0,0x00002803,0x0321000c,0x00000002, +0x78000002,0x00000000,0x18010000,0x000000e1,0x00000000,0x000110f0,0x00000000,0x00000000, +0x00000804,0x80030000,0x00000686,0x10382400,0x00003000,0x40000000,0x00000143,0x00000000, +0x34000000,0x00000000,0x000000d6,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x03a04800,0x86000000,0x00000000,0x00000000,0x0221e001,0xc0000000,0x00000003,0x00000000, +0x0003ffc0,0x00003003,0x24090770,0x00000000,0x8000480c,0x00000000,0x00000008,0x00000100, +0x00000000,0x000110f0,0x00000000,0x0001d000,0x00000000,0x80000000,0x00002286,0x12002000, +0x00003400,0x40000000,0x00000143,0x00000000,0x00060000,0x00000000,0x00000020,0x00000000, +0x00000000,0x000006e0,0x00000000,0x003f1000,0x00180000,0x86000000,0x00000000,0x00000000, +0x0221e000,0x80000000,0x00000004,0x00000000,0x0b03fffe,0x00002843,0xc0038743,0x0a800000, +0x80000008,0x00000000,0x00000008,0x000000c1,0x00000000,0x000220f0,0x00000000,0x0001dc00, +0x00002600,0x81d00000,0x00002286,0x04302020,0x00000000,0x40000400,0x00000143,0x00000000, +0x00000640,0x00000000,0x000000c0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80000000,0x00000000,0x00000000,0x04c1e400,0xc0000000,0x00000004,0x00000000, +0x0003fffe,0x003f3003,0x34030003,0x00080000,0x88006808,0x00000000,0x00000001,0x000000c1, +0x00000000,0x000210f0,0x00000000,0x00000c00,0x00003000,0x800c0000,0x00000686,0x10382400, +0x00001000,0x40000000,0x00000143,0x00000000,0x05a00008,0x50000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00000000,0x00000000,0x20000000, +0x0421e400,0x00000000,0x00000005,0x00000000,0x0303ffc0,0x00003003,0x00080000,0x00000002, +0x88000000,0x00000000,0x00001000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00600000, +0x00003000,0x80000000,0x4a800286,0x14382400,0x00000c00,0x40000000,0x00000143,0x00000000, +0x00060000,0x00000000,0x00310000,0x00000000,0x00000000,0x00000600,0x00000000,0x00000000, +0x0000680e,0x80000000,0x00000000,0x00000000,0x0221e000,0x40000000,0x00000005,0x00000000, +0x0003fffe,0x00003003,0x03220000,0x00000008,0xb0002820,0x00000000,0xa8010000,0x000000e0, +0x00000000,0x000210f0,0x00000000,0x0101d000,0x00000034,0x81d00000,0x00002286,0x20300000, +0x00003000,0x40000400,0x00000143,0x00000000,0x00200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000460,0x00000000,0x00000000,0x00006e43,0x00000000,0x00000000,0x00080000, +0x0221e400,0x80000000,0x00000007,0x00000000,0x0003ffc0,0x00003003,0x00000000,0x0c800000, +0xb8002818,0x00000000,0x80000000,0x00000000,0x00000000,0x000110f0,0x00000000,0x01800c00, +0x00000000,0x81dc0000,0x00000286,0x0c384400,0x00002c00,0x40000400,0x00000143,0x00000000, +0x00060000,0x50000000,0x00000000,0x00000000,0x00000000,0x00000460,0x00000000,0x00000000, +0x00000023,0x00000000,0x00000000,0x00000000,0x0421e000,0xc0000000,0x00000007,0x00000000, +0x0003ffc0,0x000030b3,0x64010002,0x0e80c000,0xc0000004,0x00000000,0x80001000,0x000000c0, +0x00000000,0x000260f0,0x00000000,0x00000002,0x00000200,0x81dc0000,0x00000286,0x1c304000, +0x00000400,0x40000400,0x00000143,0x00000000,0x00060740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x80000000,0x00000000,0x00000000, +0x0221e000,0x00000000,0x00000008,0x00000000,0x0003fffe,0x00003003,0x14020000,0x5000c000, +0xc8000000,0x00000000,0x28000000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00000000, +0x00000000,0x800c0000,0x00000686,0x0a302000,0x00001c00,0x40000000,0x00000143,0x00000000, +0x2418080c,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x0421e400,0x40000000,0x00000008,0x00000000, +0x00ffffc0,0x00003000,0x00048000,0x5ee2c000,0xd0000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x4a800286,0x16384400, +0x00003c00,0x40000000,0x00000143,0x00000000,0x00040740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000600,0x00000000,0x00000000,0x00180000,0x80000000,0x00000000,0x00000000, +0x0421e000,0x80000000,0x00000008,0x00000000,0x00ffffc0,0x038034c0,0x00046800,0x5ee20000, +0xd8000000,0x00000000,0x00000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000100,0x81d00000,0x00000686,0x22302000,0x00004800,0x48000080,0x00000143,0x00000000, +0x0000074c,0x00000000,0x00000000,0x00000000,0x00000000,0x12080000,0x00000000,0x388d2000, +0x00000740,0x00000000,0x00000000,0x00080000,0x0221e000,0xc0000000,0x00000008,0x00000000, +0x8bf7ff80,0x03823832,0x0000c804,0x00000000,0x00000270,0x00000000,0x02000000,0x00000000, +0x00000000,0x90229964,0x00000000,0x02000001,0x00000000,0x00000000,0x00000000,0x04000000, +0x00001000,0x08000000,0x00000000,0x00000000,0x01200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00400000,0x00000000,0x39400288,0x24004f41,0x00000090,0x00000000,0x08010000, +0x01204000,0x00000000,0x00000000,0x805fa000,0x8a03ffc0,0x000008c0,0x14000008,0x00000000, +0x00060020,0x00000000,0x00000000,0x00000000,0x00000000,0x0002a0d0,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xc9800000,0x00000103,0x00000000, +0x01b00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002000,0x00000000,0x00000000, +0x0010000b,0x001200d8,0x00000000,0x10000000,0x0541a000,0x00000000,0x00000000,0x00000000, +0x0003ef80,0x00000c20,0x36200000,0x00000000,0x00020000,0x00000000,0x01002000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x80000000,0x00000207,0x00000000, +0x00000000,0xc0000000,0x00000103,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x001023c8,0x00000000,0x0013000c,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0xcdffffc0,0x035030f2,0x24064800,0x00000000, +0x00002840,0x00000000,0x00000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000024,0x80000000,0x00000207,0x04000000,0x00000800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x348c22c8, +0x00004800,0x00000000,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x00000000, +0xa903ff80,0x0c96c84b,0x64040800,0x90080006,0x00000340,0x00400000,0x001640b2,0x0f83c000, +0x00001f00,0x9022a960,0x00000000,0xba000300,0x48000002,0x120802a2,0x18000400,0x480000d0, +0x04000000,0x10000000,0x000c0000,0x00000000,0x01b84838,0x00e99202,0x002e0112,0x00100000, +0x002c8164,0x00200a00,0x00000000,0xc9400b88,0x00040020,0x2a000000,0x07c01041,0x00010f80, +0xc1204001,0x00003983,0x00000000,0x805fa000,0x6f03ffc0,0x02febc05,0x00040004,0x9010c000, +0x00002830,0x00400000,0x001640b2,0x0f868000,0x00001f00,0x20200000,0x00000000,0x080bd800, +0x00088800,0x01920002,0x00002000,0x00000054,0x00000000,0x00000080,0x000c8000,0x00000000, +0x24300008,0x00a88192,0x002e0196,0x00800000,0xc82c8164,0x00000001,0x00000000,0xfc400000, +0x00002e40,0x00000051,0x07c002e0,0x00080f80,0x90000001,0x00004484,0x00000000,0x00000000, +0xdb03ffc0,0x094066fb,0xb7200800,0xd0500000,0x00004820,0x00400000,0x001640b2,0x0f80c000, +0x00001f00,0x00200000,0x00000000,0xa8120000,0x065030c3,0x00020000,0x1c800000,0x00200058, +0x20000000,0x00000000,0x000a0000,0x00000000,0x341c0000,0x00038008,0x00000138,0x00800000, +0x382c8164,0x00001001,0x00000000,0x00000000,0x37200020,0xe0000a06,0x07c010c0,0x00000f80, +0x00000001,0x00003c80,0x00000000,0x00000000,0x4203ffc0,0x0bfcbfbc,0x37366e48,0x9000b052, +0x20004820,0x00400000,0x000000b2,0x0003a000,0x00001f00,0x20200000,0x00000000,0xa2000606, +0x07408002,0x800002b0,0x20000686,0x00000000,0x20000000,0x40000080,0x00000183,0x00000000, +0x15b80000,0x00ac0000,0x002e0000,0x00900000,0x002c8000,0x000010e0,0x00000000,0x00000f84, +0x34184800,0xc0000b14,0x07c00ac0,0x00080000,0x00000801,0x40000000,0x00000000,0x00000000, +0xdf03ffc0,0x08febc0b,0xf41c2800,0xd0710106,0x68004964,0x00400000,0x00164000,0x00000000, +0x00000000,0x20200000,0x00000000,0xa2120302,0x06480042,0x92000002,0x12800706,0x000000d0, +0x00000000,0x40000400,0x000c0143,0x00000000,0x00006800,0x09001200,0x00000000,0x00800000, +0x00000000,0x00000a00,0x00000000,0x00000000,0x041c0008,0x00000a04,0x000000e0,0x00010f80, +0x00000000,0x80003803,0x00000002,0x00000000,0x2f03ffc0,0x087fbc07,0x07380818,0x90000000, +0x80004820,0x00400000,0x00000000,0x0004a0e0,0x00000000,0x24240000,0x00000000,0xa2000200, +0x680c0102,0x80080000,0x0b800286,0x004000b8,0x00000000,0x40000080,0x000c8103,0x00000000, +0x25b84800,0x00030002,0x00000000,0x00000000,0xc8004002,0x00000001,0x00000000,0x00000000, +0x37206810,0x30000b14,0x00000841,0x00080000,0x00000001,0x00000000,0x00000000,0x00000000, +0x0003f03e,0x0800bc00,0x34040800,0x00100010,0x10000000,0x00400000,0x00000000,0x00064000, +0x00000000,0x00200004,0x00000000,0x06e00000,0x00380034,0x80000000,0x13802286,0x00000000, +0x20000000,0x40000000,0x000a0143,0x00000000,0x373c0808,0x00000000,0x001400e0,0x00800000, +0x00000000,0x00000d00,0x00000000,0x00000f84,0x34180830,0x30000a04,0x00000e81,0x00080000, +0x00000c01,0xc0002800,0x00000000,0x00000000,0x0003f000,0x0afebc00,0x37382830,0xd0180046, +0x40000000,0x00400000,0x00a12001,0x0004a060,0x00000000,0x20200004,0x00000000,0x24020000, +0x06400056,0x80000000,0x00002286,0x000044c0,0x00000000,0x40000400,0x0000c183,0x00000000, +0x0018680c,0x00001200,0x00160042,0x00800000,0xf0004000,0x00000000,0x00000000,0xfc400000, +0x341c6800,0x72000a04,0x00000ec0,0x00080000,0x00000000,0x40000000,0x00000002,0x00000000, +0x50fbffc0,0x0a4000be,0x02b84c40,0x00180008,0x70006824,0x00400000,0x00010009,0x0001a000, +0x00000000,0x00200004,0x00000000,0x1a1b9001,0x00080624,0x81900000,0x12002286,0x100000a0, +0x20000000,0x00028480,0x00000000,0x00000000,0x000c000c,0x05000002,0x00000000,0x00800000, +0xb0000000,0x00000200,0x00000000,0x00391000,0x3418680c,0x00000b94,0x00000ae0,0x00000000, +0x0321e001,0x00000000,0x00000000,0x00000000,0x8e03ff80,0x000000d4,0x24010018,0x0e800006, +0x78014800,0x00400000,0x00000000,0x0004c000,0x00000000,0x14240000,0x00000000,0xb6000300, +0x00000026,0x81980320,0x33800286,0x00400058,0x24000000,0x00828480,0x00000000,0x00000000, +0x00a86800,0x000201d0,0x001800c0,0x00800000,0x00000000,0x00000600,0x00000000,0x00000000, +0x34186e70,0x20010bd4,0x000006c1,0x00080000,0x38000001,0x00001401,0x00000000,0x00000000, +0x1503ff80,0x00000130,0x80044808,0x0ef8c010,0x38002b70,0x00400000,0x001640b2,0x0f800060, +0x00001f00,0x00000000,0x00000000,0xb69a0e00,0x00000626,0x93d80010,0x10000706,0x00404040, +0x00000000,0x49000080,0x000a0183,0x00000000,0x05a0680c,0x00000190,0x001800c0,0x00800000, +0x002c8164,0x00000000,0x00000000,0x00000f84,0x00186c74,0x00012a06,0x07c00600,0x10080f80, +0x38000801,0x40001381,0x00000001,0x00000000,0x1703ef80,0x003e0160,0xf4000d58,0x98f80100, +0x58000054,0x28480000,0x181640b2,0x0f8400e1,0x00001f00,0x20200004,0x00000000,0xb69a0f00, +0x00000126,0x9a0c1400,0x00000306,0x04000054,0x00000000,0xc9000000,0x000a8143,0x00000000, +0x2400077c,0x00c80200,0x001800c0,0x00000000,0x002c8164,0x00040400,0x00000000,0xf8781000, +0x26206e72,0x0e012004,0x07c01081,0x25090f80,0x3c21e0a1,0x40000001,0x00000002,0x00000000, +0x9a03ff80,0x002fbdef,0x07b84d50,0x0a9c0000,0x60018000,0x08480000,0x001640b2,0x0f8000c1, +0x00000000,0x002110f0,0x00000000,0xb69b9306,0x4f400027,0x9b133410,0x18002706,0x004040c0, +0x00008c00,0xc9000080,0x00000143,0x00000000,0x05bc054c,0x000413db,0x001800c0,0x50900000, +0x00000164,0x00040401,0x00000000,0xf8400000,0x00106832,0x00120000,0x07c00000,0x00000f80, +0x39000801,0x40004381,0x00000001,0x00000000,0xe503ef80,0x000002af,0x26268660,0x50380726, +0x18010378,0x00000000,0x801640b2,0x0f860100,0x00001f00,0x142610f0,0x00000000,0x101a0f06, +0x682c2700,0x9a0c2400,0x28000287,0x3c304020,0x04004800,0xc9000080,0x00000143,0x00000000, +0xc120081c,0x0dc81a00,0x00300160,0x00000000,0x402c8164,0x00080001,0x00000000,0xf0400000, +0x34006830,0x00000a90,0x07c00000,0x20010f80,0xc421e000,0xc0004383,0x00000005,0x00000000, +0xe203ef80,0x0e0001d0,0x36ac2818,0x00180046,0x88010800,0x00080000,0x001640b2,0x0f8000a0, +0x00001f00,0x000210f0,0x00000000,0x383a0b00,0x08003117,0x9a031732,0x00000286,0x18182080, +0x04003800,0xcc000000,0x000c6143,0x00000000,0xb418281c,0x01e99310,0x00300170,0x00100000, +0x002c8164,0x00100e00,0x00000000,0x00000000,0x17382e70,0x2c121208,0x07c00001,0x20010f80, +0x8421e000,0x40004383,0x00000004,0x00000000,0x2803ef80,0x0f800120,0x03a66d50,0x0aa05107, +0xe801c860,0x00000000,0x001640b2,0x0f820100,0x00001f00,0x00200004,0x00000000,0x1b1b1f04, +0xa8008434,0x9a030000,0x00002287,0x382000a0,0x00000000,0xc8000080,0x000c0143,0x00000000, +0x05a9a81c,0x05001a0c,0x00300160,0x00000000,0x002c8164,0x00101000,0x00000000,0xec7a1000, +0x03a06800,0x80160204,0x07c00a00,0x20000f80,0xc421e000,0x80004383,0x00000002,0x00000000, +0x2c000f80,0x00000260,0x66a24d74,0xd03802c2,0xc0c04808,0x00080000,0x801640b2,0x0f8200ad, +0x00001f00,0x00040004,0x00000000,0x033a0326,0x0f700004,0x9a0f1400,0x00000687,0x00400000, +0x00001f00,0xc9000080,0x0000c143,0x00000000,0x3418281c,0x00021a03,0x00180160,0x00100000, +0x402c8164,0x00040481,0x00000000,0xf8400e04,0x04106c70,0x80120a0c,0x07c00000,0x20010f80, +0xc0000800,0xc0004383,0x00000003,0x00000000,0x2303ff80,0x000002c0,0x03a70664,0x0060f056, +0x1001cb78,0x00000001,0x801640b2,0x0f8600ad,0x00001f00,0x002002c8,0x00000000,0x0a3b1326, +0x0f4c4024,0x8b180408,0x28000687,0x0c000060,0x04001f00,0xc9000400,0x000c2143,0x00000000, +0x34380e50,0x0100000c,0x00300160,0x00100000,0x402c8164,0x00040ca1,0x00000000,0xfc400000, +0x2408074c,0x8008c000,0x07c00000,0x00010f80,0xc421e000,0x00004383,0x00000008,0x00000000, +0x5f03e000,0x003ff98e,0x001a054c,0x100811c6,0x00014808,0x00080000,0x801640b2,0x0f800000, +0x00001f00,0x002002c8,0x00000000,0xa41b5308,0x074c38e6,0x32030000,0x00000421,0x00402000, +0x04000000,0xcb000400,0x00000143,0x00000000,0x00b80f4c,0x0dcd83d0,0x00300170,0x00100000, +0x402c8164,0x00000ca1,0x00000000,0x003f1000,0x34064f72,0xec010a04,0x07c00c00,0x20010f80, +0x80000000,0x40004384,0x00000005,0x00000000,0x0003ef80,0x0000fbc0,0x94000838,0xd0290002, +0x30004828,0x00080000,0x001640b2,0x0f800060,0x00001f00,0x000290f0,0x00000000,0xb0e00720, +0x480c2206,0x82070000,0x18002306,0x324000d4,0x04001000,0x1b000400,0x00000000,0x00000000, +0x34006830,0x05061208,0x00300170,0x00000000,0x002c8164,0x00000900,0x00000000,0x00391000, +0x00060830,0xec000a01,0x07c00000,0x00000f80,0x0421e000,0x00003b04,0x00000000,0x00000000, +0x24000f80,0x0ff80000,0x27a22810,0xd06900c9,0xa0004978,0x00000000,0x001640b2,0x0f800000, +0x00001f00,0x20200004,0x00000000,0x021a0c02,0x00021124,0x920b0000,0x30002287,0x000040a0, +0x00000000,0x14000400,0x00000000,0x00000000,0x3401803c,0x00c91202,0x00320190,0x00000000, +0x282c8164,0x00000c61,0x00000000,0x003f1000,0x03a06802,0x720c0151,0x07c00240,0x20080f80, +0x00000821,0x00004380,0x00000000,0x00000000,0xa1000f80,0x0020ebff,0x07b64d50,0xd0684001, +0x00014829,0x00400000,0x801640b2,0x00000100,0x00001f00,0x24048004,0x00000000,0x3063d306, +0x0f403003,0x2a0303b8,0x13802000,0x1a040080,0x20000000,0x1c000400,0x000c4000,0x00000000, +0x04064820,0x09010a00,0x00320180,0x00000000,0xa02c8000,0x000c1060,0x00000000,0x00000000, +0x3406480c,0x12000000,0x07c00400,0x20010f80,0x3d21e000,0x00000004,0x00000000,0x00000000, +0x6403ef80,0x0000f97f,0x00060574,0xd0680420,0x00000148,0x00080000,0x001640b2,0x0f800100, +0x00000000,0x042610f0,0x00000000,0x00000026,0x0440b054,0x01d80324,0x41002000,0x0fa860a0, +0x20002c00,0xc5000400,0x00000143,0x00000000,0x34ac0800,0x0d004000,0x00324170,0x00000000, +0x40000164,0x00000901,0x00000000,0x00000000,0x00066800,0xe80a0a01,0x07c00000,0x20080f80, +0x0501e000,0x40004384,0x00000008,0x00000000,0x9a03ef80,0x000001df,0x04000804,0xdae81206, +0x01018000,0x00080000,0x001640b2,0x0f800000,0x00001f00,0x000210f0,0x00000000,0xa4fa0300, +0x08000002,0x20031406,0x13802000,0x000000cc,0x04004000,0x10000400,0x000ca000,0x00000000, +0x01b86804,0x00ca1a0c,0x00324172,0x00000000,0xb82c8164,0x00000000,0x00000000,0x00000000, +0x14000810,0x30000001,0x07c00200,0x20080f80,0x80059001,0x00004003,0x00000000,0x00000000, +0x9e03ef80,0x0000fa7f,0x03a00d48,0xd07893c6,0x38014800,0x00400000,0x801640b2,0x0f810061, +0x00001f00,0x00200000,0x00000000,0x3881df00,0x08000077,0x9a000324,0x29802687,0x0f986040, +0x20001f00,0x00000000,0x00000000,0x00000000,0xc1b8074c,0x00000200,0x00320000,0x00000000, +0x582c8164,0x00040ec0,0x00000000,0xfc400f44,0x03b00570,0x30161a08,0x07c004e1,0x00080f80, +0x80000001,0x00001003,0x00000000,0x00000000,0x2d000000,0x0ec000f0,0xc3a62810,0xd0608146, +0x0041cb49,0x00400000,0x00164000,0x0f800001,0x00001f00,0x400422c8,0x00000000,0xa613dc10, +0x68300003,0x3a030000,0x14802000,0x00004000,0x20000000,0xc0000400,0x00080143,0x00000000, +0x00a8003c,0x09070000,0x001800e0,0x00100000,0x382c8164,0x009004c1,0x00000000,0xe0400000, +0x03200010,0x00000a04,0x00000001,0x20080f80,0x00459000,0x80001404,0x00000005,0x00000000, +0xb803ef80,0x000003ef,0x00000554,0x50088300,0xd800c808,0x00000000,0x00164001,0x0f838000, +0x00001f00,0x000660f0,0x00000000,0x00020328,0x0e701600,0x92032404,0x00000687,0x0f9c6000, +0x20006800,0xc0008480,0x00000143,0x00000000,0x1408000c,0x09040000,0x00000170,0x00000000, +0x402c8164,0x00001040,0x00000000,0xec7c1e04,0x00142830,0xce0e0a04,0x00000840,0x00080f80, +0xc541e000,0xc0000003,0x00000004,0x00000000,0x1d03e000,0x0e3ff800,0x34064804,0x90190200, +0x00018008,0x00400000,0x000000b2,0x0f81a080,0x00000000,0x000290f0,0x00000000,0x241a0838, +0x68040703,0x20003730,0x13802000,0x000000a0,0x04007c00,0x00000400,0x00000000,0x00000000, +0x0000680c,0x0dcc01d8,0x002c0174,0x00800000,0x40000164,0x00000001,0x00000000,0x00000000, +0x00066800,0x26161204,0x07c01001,0x00010000,0xc0059000,0x00001803,0x00000000,0x00000000, +0x1b000000,0x00000000,0x34062800,0xd00001a2,0x0001800c,0x00080000,0x000020b2,0x0f800000, +0x00000000,0x00000004,0x00000000,0x04020324,0x680c0024,0x2000033c,0x10002400,0x000000b8, +0x04000000,0x03000000,0x00000000,0x00000000,0x00000f6c,0x00018190,0x00280170,0x00900000, +0x00004164,0x00000841,0x00000000,0x003f1e04,0x3400680c,0x00000a0c,0x07c002e0,0x20080000, +0x80000000,0x00004c03,0x00000000,0x00000000,0x00000000,0x0029fc00,0x00000554,0x0ef84142, +0x00004820,0x00400000,0x000020b2,0x0f8200e0,0x00001f00,0x00008004,0x00000000,0x063b9312, +0x48380000,0x00003404,0x14800400,0x00400060,0x20000000,0x1b000400,0x00080000,0x00000000, +0x01b86830,0x09011a07,0x002f0190,0x00000000,0x782c8164,0x00000a01,0x00000000,0x00000000, +0x00000770,0xe0000a01,0x07c00420,0x00010000,0x80000001,0x00003c84,0x00000000,0x00000000, +0x00000000,0x0a80f000,0x001a0004,0xd01842c0,0x00016838,0x00400000,0x001640b2,0x0f83c000, +0x00001f00,0x00040004,0x00000000,0x10020302,0x68040734,0x01d00000,0x00000400,0x00000040, +0x20000000,0x10000400,0x00000000,0x00000000,0x00000800,0x0904000c,0x002e0194,0x00100000, +0xf82c8164,0x00000300,0x00000000,0x003c1fc4,0x00000030,0x200c0156,0x07c00e21,0x20080f80, +0x00000800,0x00003c00,0x00000000,0x00000000,0xc0000000,0x003f7009,0x74024d6c,0x10093002, +0x00002830,0x00400000,0x001640b2,0x00004060,0x00001f00,0x00000000,0x00000000,0x001a0800, +0x683418c0,0x21dc0000,0x12800400,0x0f9ae040,0x20000000,0x00000400,0x00000000,0x00000000, +0x0006683c,0x05058000,0x002a0190,0x00800000,0x402c8000,0x00000ca1,0x00000000,0x00000000, +0x34180740,0x00000a04,0x07c00500,0x01010f80,0x80000001,0x00004b81,0x00000000,0x00000000, +0x24000000,0x0ebb0000,0x57ba080c,0x10010048,0x00006820,0x00400000,0x001640b2,0x00004060, +0x00001f00,0x20240004,0x00000000,0x20000f20,0x07744083,0x020b0000,0x18000400,0x00000000, +0x04000000,0x00000400,0x00080000,0x00000000,0x2418683c,0x00c98008,0x002a4150,0x00800000, +0xe82c8002,0x00000000,0x00000000,0xec7e1000,0x0000681c,0x80000009,0x07c00a00,0x20080f80, +0xb8059000,0x00004c04,0x00000000,0x00000000,0x0c000000,0x0f3902ae,0x27a66804,0x1010c060, +0x00014800,0x00080000,0x801640b2,0x0f84006f,0x00001f00,0x00040004,0x00000000,0x041a0000, +0x04400800,0x20012400,0x13000400,0x0f986040,0x20001f00,0x1a000000,0x00000000,0x00000000, +0x3400000c,0x09030bd0,0x002a0156,0x00800000,0x802c8164,0x00000e00,0x00000000,0xe47f1f04, +0x04000f4c,0x00021a02,0x07c00840,0x00080f80,0x80000000,0x00004b84,0x00000000,0x00000000, +0x96000000,0x067f023f,0x440e0008,0x1a910002,0x00000060,0x00400000,0x801640b2,0x0f80000b, +0x00001f00,0x800402c8,0x00000000,0x201a0d10,0x074c0103,0x20002410,0x00000000,0x0f82e000, +0x04001f00,0x19000080,0x000c8000,0x00000000,0x34186e78,0x0d001203,0x00260120,0x00100000, +0xc02c8164,0x00000d00,0x00000000,0x00000000,0x2418680c,0x00100a05,0x07c00460,0x20080f80, +0x38459000,0x00004004,0x00000000,0x00000000,0x98000000,0x0000fa8f,0xc3a42800,0x50201102, +0x00014810,0x00400000,0x801640b2,0x0f832061,0x00001f00,0x002082c8,0x00000000,0x240a0d00, +0x04400803,0x20010010,0x1c000000,0x0f986000,0x20001f00,0x1c000400,0x0006c000,0x00000000, +0x3418683c,0x00000000,0x002e0174,0x00000000,0x002c8164,0x00000000,0x00000000,0x003f1e04, +0x00000440,0x20000155,0x07c004a1,0x00010f80,0x19059000,0x00004000,0x00000000,0x00000000, +0x18000000,0x0e0001d0,0x17a60550,0x003851c1,0x00010a48,0x00400000,0x001640b2,0x0f816000, +0x00001f00,0x002002c8,0x00000000,0x1c03d002,0x680c0024,0x1a012400,0x30002000,0x00000000, +0x00000000,0x10000000,0x000c0000,0x00000000,0x362e280c,0x00060000,0x002e0180,0x00800000, +0x002c8164,0x00000400,0x00000000,0x00000000,0x34020770,0x2a001351,0x07c004e1,0x00080f80, +0x38459000,0x00003804,0x00000000,0x00000000,0x00000000,0x0fc00180,0x03a60544,0x50180081, +0x00010000,0x00400000,0x001640b2,0x0f8000e0,0x00001f00,0x00040000,0x00000000,0x3041d306, +0x6c700037,0x1a030000,0x00002000,0x00400000,0x00000000,0x00000080,0x000ac000,0x00000000, +0x14006820,0x0d000000,0x002e4130,0x00800000,0x402c8164,0x00000201,0x00000000,0x00000fc4, +0x14060f4c,0x2a0e1202,0x07c00a01,0x00010f80,0x38000000,0x00004004,0x00000000,0x00000000, +0x2d000000,0x0000fd60,0x02206d74,0x00180040,0x0000000c,0x00080000,0x001640b2,0x0f810000, +0x00001f00,0x00200004,0x00000000,0x3c1a0302,0x07780037,0x20000000,0x40002000,0x003000d4, +0x04000000,0x07000080,0x000c0000,0x00000000,0x0410281c,0x05060008,0x00320178,0x00000000, +0x002c8164,0x00000000,0x00000000,0xe0400fc4,0x34000000,0x12021208,0x07c00a01,0x20010f80, +0x00000800,0x00004000,0x00000000,0x00000000,0x11000000,0x003fe000,0xc2a20550,0x00183346, +0x0000834c,0x00080000,0x001640b2,0x000000a0,0x00001f00,0x20200004,0x00000000,0x2401d300, +0x080008c3,0x3a0c0008,0x00002000,0x000800d0,0x04000000,0x19000000,0x00060000,0x00000000, +0x00186830,0x0dcc0110,0x00328116,0x00100000,0xa82c8000,0x00000000,0x00000000,0x003e1000, +0x03be0000,0x0c00015d,0x07c00001,0x00010f80,0x80000801,0x00004804,0x00000000,0x00000000, +0x40000000,0x0500f0fe,0x36ae2824,0xd0390100,0x00004828,0x00080000,0x001640b2,0x0f800000, +0x00001f00,0x00040004,0x00000000,0x24611404,0x0f4c4603,0x3a030000,0x30002000,0x00400020, +0x20000000,0x14000000,0x000a0000,0x00000000,0x34062810,0x0d060000,0x00328112,0x00000000, +0x002c8164,0x00000601,0x00000000,0xe07f1f04,0x00060020,0x24001208,0x07c00001,0x00000f80, +0x80000801,0x00004384,0x00000000,0x00000000,0x00000000,0x0fbf03a0,0x36380d50,0x5c980812, +0x00014808,0x00000000,0x001640b2,0x0f800060,0x00001f00,0x20200000,0x00000000,0x10015116, +0x2f4c0254,0x21dc0000,0x20002000,0x004000b8,0x04000000,0x10000080,0x000c0000,0x00000000, +0x24062810,0x00c90000,0x00324170,0x00000000,0xc02c8164,0x00000400,0x00000000,0x00000fc4, +0x34006e6c,0x2a001208,0x07c00001,0x20010f80,0xc0000800,0x00003803,0x00000000,0x00000000, +0x40000000,0x0e3f018b,0x24062e74,0xd0200008,0x00004820,0x00000000,0x001640b2,0x0f8000e0, +0x00001f00,0x20200004,0x00000000,0x007a0308,0x080800c0,0x00000400,0x30002000,0x00180000, +0x04000000,0x00000080,0x000c0000,0x00000000,0x00000810,0x0dcf1a04,0x00240170,0x00000000, +0x002c8164,0x00001040,0x00000000,0x00381fc4,0x02280030,0x32001202,0x07c00000,0x00010f80, +0x00000801,0x00003c00,0x00000000,0x00000000,0xa6000000,0x003fecde,0x03b26824,0xd0583010, +0x00004808,0x00000000,0x003640b2,0x00000000,0x00001f00,0x20200004,0x00000000,0x18020006, +0x28100024,0x01d303b8,0x1b002000,0x00000080,0x04000000,0x00000400,0x00006000,0x00000000, +0x00000800,0x00cc000b,0x00320170,0x00000000,0x002c8000,0x000010c0,0x00000000,0x00000e44, +0x00002800,0x0e060a01,0x07c00001,0x00010f80,0x00000800,0x00004802,0x00000000,0x00000000, +0x3a000000,0x003801f6,0x14060000,0xdcf83158,0x00018000,0x00000000,0x001640b2,0x0002c000, +0x00001f00,0x00200000,0x00000000,0x10120308,0x2f5c8124,0x2a020000,0x0a002000,0x000000c0, +0x00000000,0x10000400,0x000a6000,0x00000000,0x00202804,0x00c90200,0x00270010,0x00000000, +0x802c8002,0x00000e00,0x00000000,0xfc400000,0x02b00740,0x0e000000,0x07c00001,0x20080f80, +0x38000000,0x00000000,0x00000000,0x00000000,0x11000000,0x0e4000d0,0xc3b02800,0xd078b800, +0x00006830,0x00000000,0x001640b2,0x0f800000,0x00001f00,0x00200000,0x00000000,0x0001d124, +0x2c508000,0x1a030000,0x00002000,0x00200080,0x04000000,0x00000080,0x0008c000,0x00000000, +0x0002080c,0x09011b58,0x00270196,0x00800000,0x002c8164,0x00001040,0x00000000,0x00000000, +0x17ae0000,0x20000a04,0x07c00201,0x00080f80,0x00000001,0x00003800,0x00000000,0x00000000, +0x14000000,0x0000f800,0x40040550,0x101882c0,0x00008000,0x00080000,0x001640b2,0x0f810000, +0x00001f00,0x00200000,0x00000000,0x001a0c00,0x054440c0,0x03dc3418,0x23002000,0x00000000, +0x00000000,0x00000400,0x00000000,0x00000000,0x34000800,0x00008003,0x00270172,0x00000000, +0x402c8364,0x00000f00,0x00000000,0xe4400e04,0x140e000c,0x0e000a01,0x07c00001,0x20000f80, +0x80000800,0x00004803,0x00000000,0x00000000,0x2d000000,0x0038fc00,0xc0064d44,0xd048f100, +0x00004808,0x00000000,0x001640b2,0x0f86a060,0x00001f00,0x20208004,0x00000000,0x0801d302, +0x2f5c0080,0x00000018,0x1c002000,0x000000ac,0x04000000,0x00000400,0x00000000,0x00000000, +0x34060800,0x01008110,0x002a0196,0x00100000,0xa82c8164,0x00000000,0x00000000,0xfc400000, +0x24000740,0x00000a07,0x07c00000,0x00080f80,0x80000000,0x00003c84,0x00000000,0x00000000, +0xe0000000,0x0000027f,0x03a02824,0x90780600,0x0000000c,0x00000000,0x001640b2,0x0f800000, +0x00001f00,0x00000004,0x00000000,0x04000e30,0x683006c0,0x020003a0,0x00000000,0x000000c0, +0x20000000,0x00000000,0x000c0000,0x00000000,0x34060800,0x00ed8000,0x00224116,0x00800000, +0x582c8164,0x00000001,0x00000000,0x003f1000,0x00000460,0x20000003,0x07c00821,0x00080f80, +0x80000001,0x00004384,0x00000000,0x00000000,0xfc000000,0x003f02ce,0xc7a62e50,0x0000db00, +0x0001826c,0x00400000,0x001640b2,0x0f850060,0x00001f00,0x20200000,0x00000000,0x201a0232, +0x28100603,0x00000400,0x00000400,0x00000000,0x20000000,0x00000000,0x00000000,0x00000000, +0x341e0000,0x0dcf0000,0x00224100,0x00000000,0x002c8164,0x00000ac0,0x00000000,0x00000000, +0x03a04800,0x000e0003,0x07c004e0,0x00000f80,0xc8000001,0x00003803,0x00000000,0x00000000, +0x0a000000,0x002e0000,0x74060574,0x10000250,0x00000000,0x00400000,0x001640b2,0x0f820000, +0x00001f00,0x24040004,0x00000000,0xa02a0302,0x08300203,0x23dd2416,0x4a800000,0x00000000, +0x00000000,0x08000400,0x00000000,0x00000000,0x34260804,0x00070001,0x00224118,0x00100000, +0xc02c8164,0x00000000,0x00000000,0xe8400000,0x00000010,0x20000a07,0x07c00001,0x00000f80, +0x48000000,0x00003800,0x00000000,0x00000000,0x00000000,0x00390000,0x47a66e64,0x0e88d152, +0x00000000,0x00000000,0x001640b2,0x0f82c0a0,0x00001f00,0x00000004,0x00000000,0x06200000, +0x2f500204,0x000c0004,0x00000400,0x00000000,0x04000000,0x17000000,0x000c2000,0x00000000, +0x14180800,0x0dc81a00,0x0022c180,0x00100000,0x002c8164,0x000010c0,0x00000000,0x00000000, +0x00100440,0x00160004,0x07c002c0,0x00080f80,0xb0000000,0x00000003,0x00000000,0x00000000, +0x00000000,0x0ba50000,0xc4080540,0xd018c202,0x00002820,0x00400000,0x001640b2,0x0f800000, +0x00000000,0x00200004,0x00000000,0x24000006,0x6c4c0637,0x3b1003a0,0x4a800000,0x004000c0, +0x04000000,0x10000404,0x00000000,0x00000000,0x34102804,0x0dcd83d3,0x00328000,0x00800000, +0xc0000164,0x00000a01,0x00000000,0x003f1000,0x0400000c,0x00000192,0x07c00000,0x00000f80, +0xc0000000,0x00001804,0x00000000,0x00000000,0x6e000000,0x0c224c04,0x34062f5c,0xd0603010, +0x0001480c,0x00000000,0x00164000,0x0f86a000,0x00000000,0x80040000,0x00000000,0x00000208, +0x480c0240,0x1a030320,0x1c000000,0x00000000,0x20000000,0x09000080,0x00000000,0x00000000, +0x34060810,0x00ee0000,0x002e00c0,0x00000000,0xc0004164,0x00000401,0x00000000,0xf8400e04, +0x00060000,0x2e001a53,0x00000001,0x00080f80,0xc8000801,0x00000003,0x00000000,0x00000000, +0xcaffffc0,0x0c78c11b,0x34064818,0x0018f010,0x0000682c,0x00000000,0x00164001,0x0f820000, +0x00000000,0x90209020,0x00000000,0x0001d006,0x00000640,0x1a030000,0x18002000,0x240000b0, +0x04009000,0x10000080,0x00000000,0x00000000,0x01b8680c,0x00001a03,0x00224114,0x00800000, +0x40000164,0x09000000,0x00000000,0xc4b02bc8,0x34000760,0xe0000add,0x00000100,0x00080f80, +0xc1204000,0x00003c83,0x00000000,0x00000000,0x80e7febc,0x07007002,0x0000000c,0x00000000, +0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x90229964,0x00000000,0x01000001, +0x00000000,0x80000000,0x00000207,0xfc000000,0x000020ff,0xc0000400,0x00000143,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00200000,0x00000000,0x71400000, +0x00000003,0x00000000,0x00000000,0x00000000,0x0421e401,0xc0000000,0x00001fff,0x805fa000, +0x4bffffc0,0x028084b8,0x00002800,0x00000000,0x000a0000,0x00000000,0x00000000,0x00000000, +0x00000000,0x90200000,0x00000000,0x00000000,0x00000034,0x80000000,0x00000206,0x00186034, +0x00000000,0x46000000,0x00000103,0x00000000,0x34100000,0x50000000,0x00000000,0x00000000, +0x00000000,0x120406c0,0x00000000,0x28800000,0x17280440,0x00092000,0x00000000,0x28010000, +0x0541a100,0x00000000,0x00000000,0x00000000,0xd0ebffbd,0x044044f2,0x36200000,0x08800000, +0x00000000,0x00000000,0x22003000,0x000000e1,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00001300,0x80000000,0x00000206,0x08382400,0x00000000,0xc0000000,0x00000143,0x00000000, +0x00000440,0xb0000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x454002c8, +0x00000000,0x00000004,0x00000000,0x00000000,0x01204000,0xc0000000,0x00001fff,0x805fa000, +0x00fbff40,0x02803900,0x04006800,0x08800000,0x008a0000,0x00000000,0x00001000,0x00000000, +0x00000000,0x902110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x00000206,0xfc000000, +0x000000ff,0x40000000,0x00000103,0x00000000,0x00000000,0x00000000,0x00001200,0x00000000, +0x00000000,0x02000000,0x00000000,0x28800000,0x00006800,0x00100001,0x00000000,0x00000000, +0x0221e000,0x00000000,0x00000000,0x00000000,0x10fffffb,0x03803503,0x00018003,0x00000000, +0xe8000000,0x80000003,0x02000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000800,0x80000000,0x00000287,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x00000540,0x00000000,0x00201600,0x00000000,0x00000000,0x02086000,0x00000000,0x388d2308, +0x0000280c,0x00001200,0x00000000,0x00000000,0x01204400,0x00000000,0x68000000,0x00000007, +0x40ebff40,0x03803804,0x02260000,0x00180000,0x00000830,0x00000000,0x00001000,0x0e000000, +0x00041c00,0x90229960,0x00000000,0x00000031,0x000c0000,0x800003a0,0x00000286,0x00000000, +0x80000800,0x08000010,0x00000000,0x00000000,0xc0000000,0x00000000,0x08000000,0x00000000, +0x006c8164,0x0024a000,0x00000000,0x39400000,0x00000000,0x000000d0,0x00000000,0x04200000, +0x0501a000,0x00000000,0x00000000,0x805fa000,0x10fbff3b,0x028044b0,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x9022a0d0,0x00000000,0x000a0000, +0x00000000,0x800002a8,0x00000286,0x00000000,0x24000000,0xc8b00020,0x00000143,0x00000000, +0x14000540,0x00000000,0x00c00040,0x00000000,0x00000000,0x00906000,0x00000000,0x28800408, +0x00000000,0x00000002,0x00000500,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x0003ef00,0x00003404,0x34000000,0x00000102,0x00000000,0x0047fff8,0x00000001,0x00034000, +0xfffe0000,0x00000003,0x00000000,0xa0000100,0x00000003,0x00000000,0x00142400,0x00000000, +0x24000000,0xc8000014,0x00000103,0x00000000,0x00080544,0x00000000,0x001a0160,0x00000000, +0x00000000,0x00000000,0x00000000,0x000f2000,0x00000000,0x00001200,0x00000000,0x10000000, +0x00000000,0x00000000,0x00000000,0x00000000,0xc0ffffc0,0x034f3002,0x04060000,0x08800006, +0x00020800,0x80000000,0x003641b2,0x00000000,0x00000000,0x90209020,0x00000000,0x01800000, +0x08000000,0x00000008,0x28000000,0x02020000,0x00000400,0x10000000,0x00000000,0x00000000, +0x00000000,0x00000110,0x00000000,0x00800000,0xc0000000,0x00800000,0x00000000,0x348c22c8, +0x00000000,0x00000000,0x07000000,0x00000e00,0x39204000,0x00001380,0x00000000,0x00000000, +0x00eff000,0x02c02c00,0x14060000,0x00000006,0x78800800,0x00000000,0x02000000,0x00000000, +0x00000000,0x9022996c,0x00000000,0x00015001,0x00000000,0x81100000,0x00142687,0x00382400, +0x00001f00,0x49028480,0x00000183,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00480600,0x00000000,0x2d400000,0x02a80000,0x80100000,0x00000000,0x20000000, +0x000000a1,0xc0000000,0x00000003,0x805fa000,0x0003ff80,0x00002800,0xc0020000,0x00000000, +0x08860800,0x00000000,0x02000000,0x00000000,0x00000000,0x000290d0,0x00000000,0x00015400, +0x00002000,0x81500000,0x00142687,0x06000000,0x00000c00,0xc8028480,0x00000143,0x00000000, +0x00000000,0x00000000,0x000012c0,0x00000000,0x00000000,0x00082000,0x00000000,0x00000000, +0x00080000,0x00120000,0x00000000,0x00000000,0x0221e000,0x40000000,0x00000001,0x00000000, +0x8003fffd,0x000000a2,0xc0010540,0x0000c000,0x38006800,0x00000000,0x22000509,0x00000100, +0x00000000,0x000260d0,0x00000000,0x00200402,0x00002040,0x80040000,0x00000287,0x1a000000, +0x00002400,0xc8000000,0x00000143,0x00000000,0x14000000,0x00000000,0x00040000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00002800,0x00000000,0x00000000,0x00000000, +0x0521a400,0xc0000000,0x00000002,0x00000000,0x0a03dfc0,0x00000000,0x03202801,0x1000c000, +0x08000030,0x00000000,0x20a12000,0x00000100,0x00000000,0x000110f0,0x00000000,0x00000002, +0x00000004,0x80000000,0x00000286,0x22382420,0x00003400,0x40000000,0x00000143,0x00000000, +0x14082800,0x00000000,0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00002804,0x00000000,0x00000000,0x00000000,0x04c1a000,0x40000000,0x00000001,0x00000000, +0x00ffdf3e,0x02800000,0x03a30000,0x50000006,0x38400000,0x00000000,0x00a12000,0x00000000, +0x00000000,0x902110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x00000306,0x12000020, +0x00004400,0x40000000,0x00000143,0x00000000,0x00082801,0x00000000,0x00000000,0x00000000, +0x00000000,0x12000600,0x00000000,0x28800000,0x03200004,0x80100000,0x00000000,0x20000000, +0x0221e4a1,0xc0000000,0x00000002,0x00000000,0x03b7fe31,0x02822840,0x43a00803,0x00000000, +0x004b4810,0x00000000,0x00003000,0x00000000,0x00000000,0x9022a960,0x00000000,0x00000001, +0x00002000,0x00000000,0x00040607,0x00300000,0x00000000,0x00000000,0x00000000,0x00000000, +0x363c0000,0x50000000,0x00200000,0x00000000,0x00000000,0x00200000,0x00000000,0x29400000, +0x0000080c,0x00107a03,0x00000000,0x00000000,0x04418400,0x00000000,0x28000000,0x805fa006, +0x80e3ff00,0x058b58c2,0x00006808,0x00000000,0x000a0000,0x00000000,0x00001000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000001,0x00000000,0x40000000,0x00000287,0x01000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x24080000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400294,0x00006802,0x00120094,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x805fa000,0xcdebff80,0x0580598f,0x34040000,0x00000000, +0x00000000,0x00000000,0x00000060,0x00000000,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00000024,0x00000000,0x00042400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x08000000,0x00000000,0x00000000,0x002006c0,0x00000000,0x59400000, +0x00000740,0x00000000,0x00000000,0x04200000,0x01030800,0x00000000,0x00000000,0x805fa000, +0x00000fc0,0x00000000,0x00060000,0x00000000,0x00006820,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x04000000,0x00000000,0x41100000,0x28000206,0x00000000, +0x00000000,0x08080e80,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000388,0x34000030,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x038c0000,0x40002800,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x00000000, +0x00000200,0x00000000,0x00000000,0x00000000,0x00000000,0x49000000,0x00000103,0x00000000, +0x00000540,0x00000000,0x00128000,0x00000000,0x00000000,0x00216000,0x00000000,0xe0400000, +0x00180000,0x00000000,0x00000000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000, +0x8003fffb,0x00382d02,0x36a00004,0x00000000,0x00000000,0x00000000,0x00010000,0x00000000, +0x00000000,0x607c9020,0x00000000,0x00000000,0x00000800,0x00000000,0x00000000,0x01000000, +0x00000200,0xa0000000,0x00000143,0x00000000,0x14080000,0x00000000,0x00000184,0x00000000, +0x00000000,0x00400000,0x00000000,0xe04b2288,0x00000000,0x80000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x0cc7ff32,0x058c5950,0x001c6800,0x90004009, +0x00006a70,0x00000000,0xa81650b2,0x0000010c,0x00000000,0x9022a964,0x00000000,0x07000201, +0x00000134,0x80020000,0x00000206,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x15ba0470,0x10000000,0x00000001,0x00000000,0x00000000,0x00200460,0x00000000,0x59400fc4, +0x0000680c,0x8a001202,0x07000000,0x00000e00,0x0201e400,0x00000000,0x48000000,0x805fa006, +0xb8fffff5,0x028008a0,0x76206d6c,0x50204006,0x000a081c,0x00000000,0x00001000,0x00000000, +0x00000000,0x902100f0,0x00000000,0x0021d000,0x00002104,0x81d00000,0x00002286,0x02434400, +0x00000000,0x45880480,0x00000143,0x00000000,0x04086810,0x00000000,0x002e0180,0x00000000, +0x00000000,0x00806000,0x00000000,0x28800000,0x14000803,0x000900d4,0x00000000,0x00000000, +0x0521a000,0x40000000,0x00000000,0x00000000,0x80e3ff00,0x058b58c2,0x00006808,0x00000000, +0x000a0000,0x00000000,0x00001000,0x00000000,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00000000,0x40000000,0x00000287,0x01000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x24080000,0x00000000,0x00000000,0x00000000,0x00000000,0x00200000,0x00000000,0x59400294, +0x00006802,0x00120094,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x805fa000, +0x00dbff3d,0x05805950,0x00006800,0x00000000,0x08404800,0x00000000,0x00001000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000001,0x00002000,0x80000000,0x00000286,0x00000000, +0x00000000,0x40000000,0x00000103,0x00000000,0x24000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400000,0x00000000,0x00150000,0x00000000,0x00000000, +0x00000400,0x00000000,0x00000000,0x805fa000,0x80ff7fc0,0x02802800,0x14082803,0x0a800000, +0x000a0020,0x00000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x00000000, +0x00000100,0x80000000,0x00000207,0x00000000,0x00000000,0x01800000,0x00000000,0x00000000, +0x00100744,0x50000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800000, +0x00006808,0x00120000,0x00000000,0x00000000,0x0521a000,0x00000000,0x00000000,0x00000000, +0x00cffcc0,0x05805950,0x040e0548,0x0ce80002,0x0001c82c,0x00000000,0x00002000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000b07,0x800c2004,0x8a0c0004,0x00000286,0x00000000, +0x00000000,0x44800000,0x00000103,0x00000000,0x05b00808,0x0d009208,0x00140000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400000,0x00080030,0x00000000,0x00000000,0x10010000, +0x0401e000,0x00000000,0x00000000,0x805fa000,0x0cdbffc0,0x000008b6,0x14000000,0x503000c0, +0x00c22800,0x00000000,0x000c0000,0x000000c0,0x00000000,0x00000000,0x00000000,0x00120000, +0x68003100,0x00043400,0x21800000,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00006800,0x00060008,0x000000d4,0x00000000,0x30000000,0x00000001,0x00000000,0x003c1000, +0x00006800,0xe4179a00,0x00000500,0x00000000,0x00000000,0x00003c80,0x00000000,0x00000000, +0x3cffef40,0x028028b0,0x662a6810,0x0aa03050,0x00000b60,0x00480000,0x000000b2,0x00000000, +0x00000000,0x902210d0,0x00000000,0x0063d006,0x08000214,0x82000320,0x48002207,0x00342000, +0x20000400,0x00000000,0x00000000,0x00000000,0x00002e50,0x09001a00,0x00300000,0x00000000, +0x00180000,0x00800000,0x00000000,0x28800000,0x24002c50,0x00000004,0x07000000,0x01090000, +0x00000000,0x00000000,0x00000000,0x00000000,0xc0d3fef6,0x058b595e,0x00066e44,0x00604008, +0x00000140,0x00000000,0x28001000,0x000000d1,0x00000000,0x9022a964,0x00000000,0x00000401, +0x00002000,0x80000000,0x00000207,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00000f40,0x50c82000,0x000000c0,0x00000000,0x00000000,0x00200000,0x00000000,0x59400f04, +0x00006804,0x00000000,0x00000000,0x00000000,0x38000400,0x00000001,0xc8000000,0x805fa006, +0x8cfffff7,0x028008a0,0x0400480e,0x10000000,0x010a6808,0x00000000,0x000010b2,0x0e000000, +0x00000000,0x902100f0,0x00000000,0x00120002,0x00000100,0x80000000,0x00000286,0x02000000, +0x00000000,0x04800000,0x00000000,0x00000000,0x34180010,0x50000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x28800000,0x00006830,0x00112050,0x07000000,0x00000000, +0x0521a400,0x00000000,0x00000000,0x00000000,0xd2dfff80,0x060f6123,0x84000800,0x00000000, +0x008a4800,0x00000000,0x02001000,0x00000000,0x00000000,0x90229964,0x00000000,0x00000001, +0x00000000,0x80000000,0x00000206,0x10000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x34180000,0x50000000,0x00000000,0x00000000,0x00000000,0x00286000,0x00000000,0x614003c8, +0x00004810,0x0012120c,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x805fa000, +0x00fffff9,0x04c04404,0x14000000,0x0a800000,0x00060020,0x00000000,0x00001000,0x00000000, +0x00000000,0x90209020,0x00000000,0x00000000,0x00000200,0x80000000,0x00000287,0x10000000, +0x00004800,0xc8000000,0x00000143,0x00000000,0x34180540,0x00000000,0x00001600,0x00000000, +0x00000000,0x09002000,0x00000000,0x4c912408,0x00002800,0x00100098,0x00000000,0x00000000, +0x01204400,0x00000000,0x28000000,0x00000007,0x92ebff80,0x03c03c06,0x47b80f44,0x00000306, +0x4000000c,0x00000001,0x000001b2,0x00020000,0x00001c00,0x90229964,0x00000000,0x001a0031, +0x00000700,0x81100400,0x18002306,0x10030000,0x04001000,0x40000080,0x00000143,0x00000000, +0x34040000,0x00000150,0x001b00d6,0x00800000,0xb86c8000,0x00200a80,0x00000000,0x3d400000, +0x17a06810,0x001212d2,0x07000400,0x10000000,0x0521a001,0x00000000,0x00000003,0x805fa000, +0x0efbefba,0x068044a0,0x04082800,0x00000001,0x20026c40,0x00080001,0x003641b2,0x00000000, +0x00000000,0x902260d0,0x00000000,0x00120800,0x280000c4,0x9a000000,0x00000286,0x7a000000, +0x2000c400,0x40000400,0x00000183,0x00000000,0x24180020,0x00000001,0x00260030,0x00100000, +0xa8000002,0x04000600,0x00000000,0x68800f44,0x00002800,0x00120000,0x07000000,0x00010e00, +0x8481a000,0xc0001184,0x0000000d,0x00000000,0xbdfbfffb,0x04406806,0x03300d64,0x00081008, +0xc8010030,0x00000001,0x003641b2,0x00060000,0x00001c00,0x902290d0,0x00000000,0x001a0c02, +0x00040800,0x811d0000,0x20000286,0x14000000,0x20002c00,0x40000080,0x00000183,0x00000000, +0x14104804,0x00000000,0x001a80d8,0x00000000,0xf86c8002,0x04000000,0x00000000,0x44be1e84, +0x00080010,0x40000008,0x070008a0,0x00000e00,0x2d21a000,0x00000002,0x0000000a,0x00000000, +0x40fbffc0,0x06404404,0x14000640,0xd8800003,0x20012800,0x00400000,0x003641b2,0x00066000, +0x00000000,0x902290d0,0x00000000,0x12035202,0x00002000,0x82000000,0x48000686,0x0c000000, +0x20001400,0x40080000,0x00000183,0x00000000,0x03284d48,0x008a0150,0x000000d4,0x00800000, +0x00000010,0x10000000,0x00000000,0x64bd1000,0x24040770,0xd2000390,0x07000000,0x00010e00, +0x0521a000,0x40001404,0x0000000d,0x00000000,0x9afbffc0,0x04ce0114,0x00020660,0x00580306, +0x68006804,0x00000000,0x000001b2,0x0e020000,0x00001c00,0x902260d0,0x00000000,0x000a0400, +0x002000d4,0x9a000000,0x00002286,0x120000a0,0x00001c00,0x40080000,0x00000143,0x00000000, +0x17a06804,0x10000a01,0x000c00d9,0x00800000,0xf06c8164,0x10000c00,0x00000000,0x4c800000, +0x14040800,0x0e001208,0x070006e1,0x00010000,0x04c1a000,0x80000000,0x00000003,0x00000000, +0xfdfbfffe,0x03804fe4,0x00000800,0x08801040,0x00002803,0x00400000,0x000030b2,0x0006a000, +0x00000000,0x902290d0,0x00000000,0x081b9d02,0x4d400000,0x80070220,0x1b802286,0x480000a0, +0x20009800,0x40000080,0x00000143,0x00000000,0x262c0030,0x10a80194,0x001a80c5,0x00100000, +0x00000000,0x10000b00,0x00000000,0x38800000,0x001a0000,0x700000de,0x07000000,0x20000000, +0xc521a000,0x40000003,0x00000000,0x00000000,0x93fbfffe,0x04803802,0x00000770,0x9a80c0c6, +0x10008004,0x00000000,0x283651b2,0x0e000060,0x00000000,0x902290d0,0x00000000,0x00000006, +0x00080800,0x83d00000,0x20002306,0x44000070,0x0000dc00,0x40000400,0x00000183,0x00000000, +0x00066d60,0x05008150,0x00260112,0x00800000,0x00000364,0x10000000,0x00000000,0x48be1e44, +0x14002800,0x8000000e,0x07000200,0x20080e00,0x04c1a000,0xc0003804,0x00000003,0x00000000, +0x80fbefc0,0x02900184,0x04020020,0xd8a05000,0x70002f40,0x80080001,0x283641b2,0x0e000061, +0x00001c00,0x902110f0,0x00000000,0x20215800,0x00040037,0x8a082400,0x13800686,0x54000000, +0x00000000,0x40000000,0x00000143,0x00000000,0x26242834,0x05008002,0x00260000,0x00000000, +0xc02c8164,0x10001001,0x00000000,0x28800000,0x02200004,0x72001200,0x07000000,0x00010e00, +0x0521a001,0x00000000,0x0000000b,0x00000000,0x8003ffc0,0x00002802,0x00004800,0x50600000, +0x78000444,0x80000001,0x00364000,0x0003c000,0xfffe0000,0x000110f3,0x00000000,0x18620106, +0x07403014,0x82000220,0x00002286,0x6a300a00,0xa8000000,0x40000090,0x00000183,0x00000000, +0x34040544,0x00020001,0x001a8060,0x00000000,0x00000000,0x00001000,0x00000000,0x003f1e04, +0x00002800,0x241000d0,0x00000401,0x00080e00,0xc521a000,0x80004003,0x0000000a,0x00000000, +0x9103ffc0,0x0000e4ef,0x02a00648,0x1ec08308,0x00000548,0x00080000,0x00364001,0x0e03c000, +0x00000000,0x000260d0,0x00000000,0x00015000,0x280000f4,0x800d0000,0x13802206,0x60300a80, +0x0000e400,0x40000080,0x00080143,0x00000000,0x36be2f44,0x00000000,0x00000060,0x00800000, +0x00004364,0x00000000,0x00000000,0x00000e44,0x00000804,0x0000000c,0x00000400,0x10000e00, +0x3a21a000,0x80001381,0x00000008,0x00000000,0xb803ffc0,0x0e404bf3,0x02a80808,0x1aa00000, +0xe8004830,0x00080001,0x18000001,0x0e0400e0,0x00001c00,0x000690d0,0x00000000,0xb8600000, +0x08100003,0x80000000,0x00000286,0x5e3000b0,0x0000b800,0x40000000,0x00000143,0x00000000, +0x001e0544,0x00000150,0x00020170,0x00800000,0xc02c8364,0x00000c01,0x00000000,0xf4400000, +0x02200020,0x00000000,0x00000000,0x20080000,0x4221a000,0xc0004200,0x0000000e,0x00000000, +0x80ffffc0,0x0000e936,0x00024800,0x0c801044,0x88010764,0x00000001,0x003640b2,0x0e03a000, +0x00021c00,0x000110d0,0x00000000,0x18000100,0x0540a234,0x81901628,0x00000306,0x58030000, +0x2000ec00,0x40000090,0x00000183,0x00000000,0x34a80644,0x09000000,0x00040020,0x00800000, +0x006c8364,0x00000c00,0x00000000,0x00000000,0x00004800,0x52001a08,0x07000400,0x00000e00, +0xc421a001,0xc0000003,0x00000000,0x00000000,0x4affffc0,0x0514400f,0x44004808,0x00680800, +0x30018800,0x00080001,0x003641b2,0x0e046000,0x00000000,0x90209020,0x00000000,0xa8000030, +0x000008c2,0x9a000002,0x00002286,0x66000054,0x0001fc00,0x40000080,0x00000143,0x00000000, +0x03a60008,0x05cc0000,0x00000030,0x00800000,0x80000364,0x00800601,0x00000000,0x50902000, +0x34082800,0xf0001a0c,0x07000000,0x00000e00,0x0481a000,0xc0000400,0x0000000c,0x00000000, +}; + +/* data */ +static unsigned long srp_fw_data[] = { +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x80050000,0x000a800f,0x001e801b,0x80110014,0x00368033, +0x8039003c,0x802d0028,0x00228027,0x00668063,0x8069006c,0x807d0078,0x00728077,0x80550050, +0x005a805f,0x004e804b,0x80410044,0x00c680c3,0x80c900cc,0x80dd00d8,0x00d280d7,0x80f500f0, +0x00fa80ff,0x00ee80eb,0x80e100e4,0x80a500a0,0x00aa80af,0x00be80bb,0x80b100b4,0x00968093, +0x8099009c,0x808d0088,0x00828087,0x01868183,0x8189018c,0x819d0198,0x01928197,0x81b501b0, +0x01ba81bf,0x01ae81ab,0x81a101a4,0x81e501e0,0x01ea81ef,0x01fe81fb,0x81f101f4,0x01d681d3, +0x81d901dc,0x81cd01c8,0x01c281c7,0x81450140,0x014a814f,0x015e815b,0x81510154,0x01768173, +0x8179017c,0x816d0168,0x01628167,0x01268123,0x8129012c,0x813d0138,0x01328137,0x81150110, +0x011a811f,0x010e810b,0x81010104,0x03068303,0x8309030c,0x831d0318,0x03128317,0x83350330, +0x033a833f,0x032e832b,0x83210324,0x83650360,0x036a836f,0x037e837b,0x83710374,0x03568353, +0x8359035c,0x834d0348,0x03428347,0x83c503c0,0x03ca83cf,0x03de83db,0x83d103d4,0x03f683f3, +0x83f903fc,0x83ed03e8,0x03e283e7,0x03a683a3,0x83a903ac,0x83bd03b8,0x03b283b7,0x83950390, +0x039a839f,0x038e838b,0x83810384,0x82850280,0x028a828f,0x029e829b,0x82910294,0x02b682b3, +0x82b902bc,0x82ad02a8,0x02a282a7,0x02e682e3,0x82e902ec,0x82fd02f8,0x02f282f7,0x82d502d0, +0x02da82df,0x02ce82cb,0x82c102c4,0x02468243,0x8249024c,0x825d0258,0x02528257,0x82750270, +0x027a827f,0x026e826b,0x82610264,0x82250220,0x022a822f,0x023e823b,0x82310234,0x02168213, +0x8219021c,0x820d0208,0x02028207,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00007d00,0x0000fa00,0x00017700,0x0001f400,0x00027100,0x0002ee00,0x00036b00, +0x0003e800,0x00046500,0x0004e200,0x00055f00,0x0005dc00,0x00065900,0x0006d600,0x00000000, +0x00007d00,0x0000bb80,0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580,0x0001f400, +0x00027100,0x0002ee00,0x00036b00,0x0003e800,0x0004e200,0x0005dc00,0x00000000,0x00007d00, +0x00009c40,0x0000bb80,0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580,0x0001f400, +0x00027100,0x0002ee00,0x00036b00,0x0003e800,0x0004e200,0x00000000,0x00007d00,0x0000bb80, +0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580,0x0001f400,0x00023280,0x00027100, +0x0002af80,0x0002ee00,0x00036b00,0x0003e800,0x00000000,0x00001f40,0x00003e80,0x00005dc0, +0x00007d00,0x00009c40,0x0000bb80,0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580, +0x0001f400,0x00023280,0x00027100,0x0000ac44,0x0000bb80,0x00007d00,0x00100200,0x00000002, +0x02000000,0x00020014,0x00000100,0x00180100,0x00000001,0x01000001,0x0001001a,0x00010001, +0x01040401,0x01000004,0x04010100,0x00040108,0x01010000,0x01020401,0x00010004,0x04010100, +0x01040101,0x01000000,0x01000101,0x00000001,0x01010100,0x00010100,0x01000000,0x01000101, +0x00000001,0x01010100,0x00010100,0x01000000,0x01000101,0x00000001,0x01010100,0x00010100, +0x01000000,0x01000101,0x00000001,0x01010100,0x00010100,0x01000000,0x010d0201,0x01000102, +0x02010101,0x0102010f,0x01010101,0x010b0201,0x00010102,0x02010101,0x01020107,0x01000101, +0x010e0201,0x01010002,0x02010101,0x0002010a,0x01010001,0x01090101,0x00000101,0x01010101, +0x01010109,0x01010000,0x01060101,0x01010001,0x01010100,0x0001010c,0x01010100,0x01050101, +0x01000101,0x01010100,0x01010103,0x01000001,0x010f0401,0x01010104,0x04010101,0x01040107, +0x01000101,0x010b0401,0x00010104,0x04010101,0x01040103,0x01000001,0x010d0401,0x01000104, +0x04010101,0x01040105,0x01000100,0x01090401,0x00000104,0x04010101,0x01040101,0x01000000, +0x010e0401,0x01010004,0x04010101,0x00040106,0x01000101,0x010a0401,0x00010004,0x04010101, +0x00040102,0x01000001,0x010c0401,0x01000004,0x04010101,0x00040104,0x01000100,0x01080401, +0x00000004,0x04010101,0x00040100,0x01000000,0x00000001,0x10311131,0x01210121,0x00110011, +0x00110011,0x11310830,0x01311031,0x00110011,0x00110011,0x20312231,0x21212121,0x12211221, +0x02210221,0x01310830,0x11211121,0x10211021,0x00210021,0x20312231,0x21212121,0x12211221, +0x02210221,0x11310840,0x01311031,0x00110011,0x00110011,0x23411810,0x13311331,0x30413141, +0x22410341,0x21312131,0x12311231,0x20312031,0x02310231,0x32113311,0x18101030,0x21411a10, +0x02411241,0x10311031,0x11211121,0x11211121,0x01310131,0x00310031,0x30313331,0x32213221, +0x23212321,0x03210321,0x13113111,0x20112211,0x20401040,0x11413020,0x10311031,0x01310131, +0x00110011,0x00110011,0x00110011,0x00110011,0x38103420,0x51413a10,0x3c101541,0x3e100541, +0x24414241,0x41314131,0x14311431,0x04310431,0x32414041,0x30412341,0x31313131,0x13311331, +0x03310331,0x22312231,0x21212121,0x21212121,0x12111211,0x02212021,0x54215521,0x35214521, +0x44115311,0x25115211,0x43115011,0x33113411,0x20401040,0x12412141,0x11211121,0x11211121, +0x10311031,0x01310131,0x00210021,0x00210021,0x38203030,0x51413c10,0x3e101541,0x42414010, +0x41412441,0x14311431,0x04414041,0x23413241,0x13413141,0x03413041,0x22212221,0x22212221, +0x20212021,0x20212021,0x02210221,0x02210221,0x45315531,0x54215421,0x35113511,0x35113511, +0x44215321,0x52115211,0x50112511,0x34114311,0x33110511,0x20301040,0x2c202820,0x21413010, +0x02411241,0x11311131,0x10311031,0x01310131,0x00310031,0x53413210,0x34103541,0x52414441, +0x51412541,0x15311531,0x43314331,0x34313431,0x40410541,0x24314231,0x04313331,0x41214121, +0x14211421,0x23213221,0x31113111,0x13111311,0x03213021,0x20112211,0x54115511,0x50114511, +0x20401040,0x11413020,0x10311031,0x01310131,0x00110011,0x00110011,0x00110011,0x00110011, +0x3c203430,0x48104030,0x4e204a20,0x71415220,0x56101741,0x5c205820,0x16416141,0x60100641, +0x64106210,0x14414141,0x32410441,0x30412341,0x31313131,0x13311331,0x03310331,0x22312231, +0x12212121,0x02212021,0x76317731,0x75316731,0x66315731,0x74217421,0x65214721,0x73215621, +0x37213721,0x64216421,0x45315531,0x36213621,0x27117211,0x70214621,0x07110711,0x26112611, +0x53215421,0x60116011,0x44213521,0x62116311,0x25215221,0x51115111,0x15111511,0x34214321, +0x05115011,0x24114211,0x40113311,0x20401040,0x40303040,0x48102141,0x11311131,0x10311031, +0x01310131,0x00210021,0x00210021,0x4e304a20,0x5a105620,0x72415c20,0x60102741,0x17311731, +0x07417141,0x36416341,0x62100641,0x51416410,0x26312631,0x60416241,0x61316131,0x16311631, +0x43411541,0x66100541,0x24414241,0x14414141,0x04414041,0x32313231,0x23312331,0x31213121, +0x31213121,0x13211321,0x13211321,0x03313031,0x22212221,0x12111211,0x12111211,0x02112011, +0x76217721,0x57216721,0x66216621,0x74217421,0x47214721,0x55317531,0x56216521,0x73117311, +0x64113711,0x45215421,0x35215321,0x70114611,0x52114411,0x50112511,0x33113411,0x20401040, +0x40203040,0x4c104430,0x12412141,0x00414e10,0x11311131,0x10311031,0x01310131,0x54105020, +0x58105610,0x73416541,0x72415a10,0x64412741,0x71414641,0x5c101741,0x36416341,0x45415441, +0x5e104441,0x62316231,0x26312631,0x16311631,0x06416141,0x35415341,0x25415241,0x51315131, +0x15311531,0x43314331,0x34313431,0x40410541,0x42314231,0x24312431,0x41314131,0x14213321, +0x23213221,0x30310431,0x03210321,0x31113111,0x31113111,0x22111311,0x02112011,0x76217721, +0x67116711,0x57117511,0x74116611,0x56114711,0x55113711,0x07117011,0x50116011,0x20404040, +0x31314141,0x11111111,0x11111111,0x40404040,0x30304040,0x30303030,0x10302010,0x20202020, +0x10101041,0x41411020,0x41101010,0x41413131,0x31314141,0x31313131,0x31313131,0x21212121, +0x30404040,0x20302020,0x20202010,0x41412020,0x10101041,0x41411041,0x10101010,0x41411010, +0x41414110,0x41101041,0x31314110,0x41414141,0x41414141,0x31313131,0x31313131,0x31314141, +0x41413131,0x41413131,0x31314141,0x41413131,0x41413131,0x41413131,0x41413131,0x21212121, +0x21212121,0x31313131,0x31313131,0x21212121,0x21212121,0x21213131,0x21213131,0x31313131, +0x21212121,0x21213131,0x31312121,0x31313131,0x21211111,0x21212121,0x11113131,0x11111111, +0x11112121,0x21211111,0x21212121,0x21212121,0x11111111,0x21211111,0x11111111,0x11111111, +0x41301111,0x41414141,0x41414141,0x31311041,0x41413131,0x31313131,0x31313131,0x31313131, +0x31313131,0x31313131,0x31314141,0x21214141,0x21212121,0x31313131,0x21212121,0x21212121, +0x21212121,0x31312121,0x11112121,0x11112121,0x11112121,0x11112121,0x11112121,0x11112121, +0x21211111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, +0x21213131,0x11111111,0x00001111,0x40404040,0x20303040,0x31311010,0x31314141,0x40404040, +0x40303040,0x30303030,0x20303020,0x20202020,0x20202020,0x20101010,0x10201010,0x10411010, +0x10101010,0x41414141,0x10101010,0x41414141,0x41104141,0x41414141,0x41104141,0x41413131, +0x31313131,0x31313131,0x31314141,0x31313131,0x31312121,0x21212121,0x21213131,0x11112121, +0x11111111,0x10411010,0x10411010,0x41414141,0x41414141,0x41414141,0x41414141,0x41414141, +0x10414141,0x31313131,0x41414141,0x31313131,0x31313131,0x31313131,0x31314141,0x31313131, +0x31313131,0x31313131,0x41413131,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131, +0x31313131,0x31313131,0x31313131,0x41413131,0x31313131,0x31313131,0x31312121,0x31313131, +0x21212121,0x21213131,0x21212121,0x31312121,0x21212121,0x21212121,0x31312121,0x21212121, +0x21212121,0x31312121,0x21211111,0x21212121,0x21212121,0x11112121,0x21212121,0x21211111, +0x21211111,0x21212121,0x11112121,0x11111111,0x21211111,0x11111111,0x11111111,0x11112121, +0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, +0x11111111,0x11111111,0x20404040,0x31314141,0x11111111,0x11111111,0x41203030,0x41401020, +0x40414110,0x40404040,0x30303040,0x30303030,0x20102020,0x10411020,0x41101010,0x41411041, +0x31313131,0x31314141,0x21212121,0x31313131,0x31313131,0x31312121,0x21213131,0x21212121, +0x11112121,0x11111111,0x11111111,0x21211111,0x30402121,0x11113030,0x10202020,0x20102020, +0x41202020,0x10101010,0x41101010,0x41101010,0x10414110,0x41413131,0x41414141,0x31311041, +0x41414141,0x41413131,0x41414141,0x31314141,0x31314141,0x31313131,0x41413131,0x41414141, +0x31314141,0x31314141,0x31314141,0x31314141,0x31314141,0x21212121,0x31312121,0x31313131, +0x21212121,0x21213131,0x31312121,0x31313131,0x21213131,0x21213131,0x21212121,0x21213131, +0x31312121,0x21212121,0x21213131,0x11111111,0x21211111,0x21212121,0x11111111,0x11112121, +0x11112121,0x11111111,0x11111111,0x10411111,0x31313131,0x21214141,0x31312121,0x21213131, +0x31312121,0x21212121,0x31313131,0x31312121,0x11112121,0x11111111,0x21212121,0x21212121, +0x11112121,0x21212121,0x21211111,0x11111111,0x21212121,0x11111111,0x11112121,0x11112121, +0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x00001111,0x41404040, +0x40404040,0x20304040,0x41414141,0x41414141,0x41414141,0x41413131,0x31313131,0x31314141, +0x31313131,0x31313131,0x31313131,0x31313131,0x31313131,0x41413131,0x30303030,0x30303040, +0x20202020,0x20202020,0x20203020,0x30203020,0x10202010,0x10101020,0x10101010,0x10101010, +0x10101010,0x10201010,0x41104120,0x41414141,0x41414141,0x41414141,0x41414110,0x10414141, +0x41413131,0x31313131,0x31313131,0x41413131,0x31313131,0x21212121,0x21212121,0x21213131, +0x11111111,0x21211111,0x11111111,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131, +0x31313131,0x31313131,0x31313131,0x31313131,0x31314141,0x21212121,0x21213131,0x21212121, +0x31312121,0x21212121,0x21212121,0x21213131,0x21212121,0x21212121,0x21212121,0x21212121, +0x21212121,0x21212121,0x21212121,0x21212121,0x21212121,0x21212121,0x21213131,0x21212121, +0x21212121,0x21212121,0x21213131,0x21213131,0x21211111,0x21212121,0x21213131,0x21211111, +0x21211111,0x11112121,0x11112121,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, +0x11111111,0x11111111,0x11111111,0x11111111,0x11112121,0x21211111,0x11111111,0x00001111, +0x00200010,0x00400030,0x00100011,0x00010001,0x00000000,0x00000000,0x00000000,0x00000000, +0x00540044,0x00740064,0x00940084,0x00ac00a4,0x00bc00b4,0x00cc00c4,0x00d600d4,0x00e200da, +0x00e800e4,0x00f000ec,0x00f40018,0x00f800f6,0x00fe00fa,0x00150051,0x01020100,0x00410104, +0x00140014,0x00040040,0x00230032,0x00310031,0x00130013,0x00300030,0x00030003,0x00220022, +0x00120021,0x00020020,0x01160106,0x01360126,0x0142013e,0x014e0146,0x01540152,0x015c0158, +0x01640160,0x001f00f1,0x0168000f,0x016c016a,0x016e002e,0x001e00e1,0x01720170,0x01760174, +0x017a0178,0x00d3006c,0x00d2017c,0x00d1002d,0x017e007b,0x003c0180,0x00b40182,0x001d001d, +0x000d00d0,0x008a00a8,0x004c00c4,0x006b00b6,0x00c300c3,0x00c200c2,0x002c002c,0x00b500b5, +0x0098005b,0x00c100c1,0x001c001c,0x00c00089,0x000c000c,0x00a6004b,0x0097006a,0x00b300b3, +0x003b003b,0x00a50088,0x00b200b2,0x0096005a,0x004a004a,0x00780087,0x00490049,0x00670077, +0x002b002b,0x002b002b,0x00b100b1,0x001b001b,0x000b00b0,0x00a40069,0x003a00a3,0x00590095, +0x00a200a2,0x002a002a,0x00a100a1,0x001a001a,0x008600a0,0x000a000a,0x00940068,0x00390039, +0x00850093,0x00760058,0x00920092,0x00290029,0x00570075,0x00830083,0x00380038,0x00740066, +0x00650047,0x00370056,0x00190091,0x00090090,0x00480084,0x00270027,0x00460064,0x00820082, +0x00820082,0x00810028,0x00720073,0x00710071,0x00170017,0x00700055,0x00630007,0x00540036, +0x00620045,0x00530026,0x00080080,0x00160061,0x00060060,0x00440035,0x00520052,0x00500025, +0x00340043,0x00420005,0x00330024,0x00ff0184,0x00fd00fe,0x00fc00ee,0x00fb00ed,0x00ec00bf, +0x018c00cd,0x00ce00ce,0x00dd00dd,0x00dc00af,0x00eb00eb,0x00be00be,0x00f900f9,0x009f009f, +0x00ae00ae,0x00db00db,0x00bd00bd,0x00f800f8,0x008f008f,0x00cc00cc,0x00e900ea,0x00e800e8, +0x00e700f7,0x007f007f,0x007f007f,0x00ad00ad,0x00cb00da,0x006f00bc,0x00f600f6,0x00f5008e, +0x009d00d9,0x007e005f,0x00bb00ca,0x00f400f4,0x004f004f,0x006e00ac,0x003f003f,0x00f300f3, +0x008d00d8,0x002f00f2,0x00c900e6,0x00f000f0,0x00e5009c,0x00ba00ba,0x007d00d7,0x00e400e4, +0x006d008c,0x00e300e3,0x009b009b,0x00aa00b9,0x005e00ab,0x00c8004e,0x003e00d6,0x00e000e2, +0x00d5000e,0x00c7005d,0x00d4007c,0x008b00b8,0x00a9004d,0x00c6009a,0x00b7003d,0x005c00c5, +0x00a70099,0x0079007a,0x00cf00ef,0x00df00df,0x00de00de,0x00de00de,0x009e00fa,0x00200010, +0x00400030,0x00600050,0x00700068,0x00760074,0x00110011,0x00010010,0x00000000,0x00880078, +0x00a80098,0x00c800b8,0x00d800d0,0x00f000e8,0x010000f8,0x010c0108,0x011c0114,0x01240120, +0x012c0128,0x01340130,0x013c0138,0x01420140,0x01460144,0x014c014a,0x0152014e,0x01560154, +0x01580019,0x015c015a,0x0160015e,0x00280082,0x00180081,0x01640162,0x01680166,0x00270072, +0x00710046,0x00170055,0x0063016a,0x00540036,0x00620045,0x00610026,0x0053016c,0x00160016, +0x00440035,0x00520052,0x00250025,0x00510051,0x00150015,0x00050050,0x00430043,0x00420034, +0x00330024,0x00140014,0x00400041,0x00320032,0x00230023,0x00300004,0x00310031,0x00030013, +0x00220022,0x00120021,0x00020020,0x0170016e,0x017200ee,0x01760174,0x017800bf,0x00fa00dd, +0x00eb00af,0x00dc00be,0x00f900cd,0x00ae009f,0x00bd00db,0x008f00f8,0x00e900cc,0x00f7009e, +0x00da007f,0x00cb00ad,0x017a00f6,0x00bc00bc,0x006f006f,0x008e00e8,0x00d900f5,0x005f005f, +0x00e700e7,0x007e007e,0x00ca00ca,0x00ac00ac,0x00bb00bb,0x00d8009d,0x00f400f4,0x004f004f, +0x00f300f3,0x003f003f,0x008d008d,0x006e006e,0x00f200f2,0x002f002f,0x000f00e6,0x00f100f1, +0x001f001f,0x00c900c9,0x009c009c,0x00ba00e5,0x005e00ab,0x007d00d7,0x004e00e4,0x008c00c8, +0x00d600e3,0x003e006d,0x009b00b9,0x00e200e2,0x00aa00aa,0x002e002e,0x00e100e1,0x001e001e, +0x000e00e0,0x00d500d5,0x005d005d,0x007c00c7,0x00b800d4,0x004d004d,0x00a9008b,0x00c6009a, +0x00d3006c,0x003d003d,0x002d002d,0x00d000d2,0x00d100d1,0x00b700b7,0x007b007b,0x001d001d, +0x000d00c5,0x005c005c,0x00a800a8,0x00c4008a,0x00b6004c,0x006b006b,0x00c00099,0x00c300c3, +0x003c003c,0x00a700a7,0x007a007a,0x006a006a,0x00b0000c,0x002c002c,0x00b500c2,0x00c1005b, +0x00890098,0x00b4001c,0x00a6004b,0x009700b3,0x003b003b,0x00880079,0x00a500b2,0x002b002b, +0x00b1005a,0x001b001b,0x0096000b,0x00a40069,0x0087004a,0x00a30078,0x003a003a,0x00590095, +0x002a00a2,0x001a00a1,0x000a00a0,0x00860086,0x00940068,0x00930049,0x00390039,0x00900077, +0x00580085,0x00760092,0x00290067,0x00090091,0x00480084,0x00570075,0x00380083,0x00740066, +0x00800047,0x00650008,0x00730056,0x00640037,0x00070070,0x00060060,0x00fe00ff,0x00fd00ef, +0x00fc00df,0x00ed00cf,0x00fb00de,0x00ce00ec,0x00f000ea,0x00200010,0x00400030,0x00100011, +0x00010001,0x00000000,0x00000000,0x00000000,0x00000000,0x004c0044,0x00ff0054,0x005c0058, +0x002f005e,0x00f1006e,0x0070001f,0x00900080,0x00b000a0,0x00d000c0,0x00e000d8,0x00f000e8, +0x010000f8,0x010c0108,0x01120110,0x011a0116,0x011c0015,0x0120011e,0x00410122,0x01240014, +0x00230032,0x00310031,0x00130013,0x00030030,0x00220022,0x00120021,0x00020020,0x00ef00fe, +0x00df00fd,0x00cf00fc,0x00bf00fb,0x00fa00fa,0x00f900af,0x008f009f,0x00f800f8,0x007f00f7, +0x006f00f6,0x005f00f5,0x00f400f4,0x003f004f,0x000f000f,0x000f000f,0x000f000f,0x000f000f, +0x00f300f3,0x00f300f3,0x01360126,0x0146013e,0x00f000f2,0x0152014e,0x015a0156,0x0160015c, +0x01660164,0x016e016a,0x003e0172,0x01780176,0x017c017a,0x0180017e,0x00d00182,0x01860184, +0x00c30188,0x00c1018a,0x018c000c,0x002e002e,0x00e100e2,0x00d2003d,0x001d002d,0x018e00b3, +0x00d100d1,0x00b6004c,0x007a003c,0x00c200c2,0x005b002c,0x00c0001c,0x004b00b4,0x006a00a6, +0x003b003b,0x005a00a5,0x00b200b2,0x002b002b,0x00b100b1,0x001b001b,0x000b00b0,0x00690096, +0x004a00a4,0x00780087,0x003a003a,0x009500a3,0x00a200a2,0x00860059,0x001a001a,0x00770068, +0x00490049,0x00750094,0x00760076,0x002a002a,0x002a002a,0x00a100a1,0x000a00a0,0x00390093, +0x00580085,0x00920092,0x00290029,0x00900067,0x00910091,0x00190019,0x00840009,0x00570048, +0x00380083,0x00820066,0x00280028,0x00470074,0x00810081,0x00180018,0x00080008,0x00650080, +0x00730073,0x00370037,0x00640056,0x00720072,0x00270027,0x00550046,0x00700070,0x00710071, +0x00710071,0x00170017,0x00630007,0x00540036,0x00620045,0x00610026,0x00160016,0x00060060, +0x00350035,0x00440053,0x00250052,0x00500051,0x00340043,0x00420005,0x00330024,0x00040040, +0x019000ec,0x00ed00ed,0x009e009e,0x009d00ae,0x00ee00ee,0x00ee00ee,0x00de00de,0x00be00be, +0x00eb00eb,0x00dc00dc,0x00bd00cd,0x00ea00ea,0x00cc00cc,0x00ad00da,0x00ca00e7,0x00ac00ac, +0x00d7009c,0x00e500e5,0x00db00db,0x00db00db,0x00e900e9,0x00bc00cb,0x008e00e8,0x007e00d9, +0x00d800bb,0x00e6008d,0x00c9006e,0x00ab00ba,0x007d005e,0x00e400e4,0x00c8004e,0x00e3008c, +0x00d600d6,0x00b9006d,0x00aa009b,0x001e001e,0x004d004d,0x009a008b,0x00b700b7,0x000d007b, +0x000e00e0,0x005d00d5,0x007c00c7,0x00b800d4,0x00c600a9,0x00d3006c,0x005c00c5,0x008a00a8, +0x00c40099,0x00a7006b,0x009800b5,0x00970089,0x00880079,0x00dd00ce,0x00200010,0x00ff0030, +0x00500040,0x00700060,0x00900080,0x00a800a0,0x00100011,0x00000001,0x00ef00fe,0x00df00fd, +0x00cf00fc,0x00bf00fb,0x00af00af,0x00f900fa,0x009f009f,0x008f008f,0x00f700f8,0x007f007f, +0x00f600f6,0x006f006f,0x00f500f5,0x005f005f,0x00f400f4,0x004f004f,0x00f300f3,0x003f003f, +0x00f200f2,0x002f002f,0x001f001f,0x000f00f1,0x00b400ac,0x00c400bc,0x00dc00cc,0x00ec00e4, +0x00f800f4,0x010000fc,0x01080104,0x0110010c,0x01180114,0x01240120,0x012c0128,0x01380134, +0x01420140,0x014a0146,0x0150014c,0x01540152,0x01580156,0x015c015a,0x0160015e,0x01640162, +0x01680166,0x016c016a,0x0170016e,0x01760172,0x00370178,0x0027017c,0x00460064,0x00170055, +0x00360063,0x00450054,0x00260062,0x00160061,0x0053017e,0x00440035,0x00250052,0x01800051, +0x00150015,0x00340043,0x00420042,0x00240024,0x00330033,0x00410041,0x00140014,0x00040040, +0x00320032,0x00230023,0x00310031,0x00310031,0x00130013,0x00130013,0x00030030,0x00220022, +0x00210021,0x00210021,0x00120012,0x00020020,0x00f000f0,0x00f000f0,0x00ed00ee,0x00ec00de, +0x00dd00ce,0x00be00eb,0x00cd00dc,0x00ae00ea,0x00bd00db,0x00e900cc,0x00da009e,0x00cb00ad, +0x00e800bc,0x00d9008e,0x00e7009d,0x00ca007e,0x00ac00ac,0x00bb00bb,0x00d800d8,0x008d008d, +0x000e00e0,0x00d000d0,0x006e006e,0x006e006e,0x00c900e6,0x009c009c,0x00e500e5,0x00ab00ab, +0x005e005e,0x00d700ba,0x007d007d,0x004e004e,0x00c800c8,0x008c008c,0x00e200e4,0x00e300e3, +0x006d00d6,0x00b9003e,0x00aa009b,0x00e1002e,0x00d5001e,0x00c7005d,0x00d4007c,0x008b00b8, +0x00a9004d,0x00c6009a,0x00d3006c,0x00d2003d,0x00d1002d,0x007b00b7,0x00c5001d,0x00a8005c, +0x0099008a,0x004c00c4,0x00b600b6,0x006b006b,0x00c0000d,0x00c300c3,0x00a7003c,0x00c2007a, +0x00b5002c,0x00c1005b,0x00890098,0x00b4001c,0x00b0000c,0x00b300b3,0x00a0000b,0x00a100a1, +0x004b004b,0x006a00a6,0x00970097,0x00790079,0x0090000a,0x00090009,0x0088003b,0x00a500b2, +0x002b002b,0x00b1005a,0x0096001b,0x004a0069,0x008700a4,0x00780078,0x003a00a3,0x00590095, +0x002a00a2,0x0086001a,0x00770068,0x00490094,0x00390093,0x00580085,0x00760092,0x00290067, +0x00190091,0x00480084,0x00570075,0x00380083,0x00820066,0x00810028,0x00470074,0x00180018, +0x00080080,0x00560065,0x00710071,0x00070070,0x00720073,0x00060060,0x00050050,0x00018710, +0x00018714,0x00018724,0x00018744,0x00018710,0x00018764,0x00018798,0x000187d0,0x00018850, +0x000188d4,0x00018940,0x00018a0c,0x00018adc,0x00018b9c,0x00018710,0x00018d2c,0x00018ea8, +0x00018ea8,0x00018ea8,0x00018ea8,0x00018ea8,0x00018ea8,0x00018ea8,0x00018ea8,0x0001903c, +0x0001903c,0x0001903c,0x0001903c,0x0001903c,0x0001903c,0x0001903c,0x0001903c,0x00000000, +0x00000000,0x00000000,0x00000000,0x04030201,0x0d0a0806,0x07060504,0x0d0b0908,0x03030300, +0x04040300,0x04040404,0x04000404,0x04040404,0x04040404,0x04040404,0x04040404,0x000191c0, +0x00000000,0x000194dc,0x000197d4,0x000197d4,0x000197d4,0x000197d4,0x000197d4,0x000197d4, +0x000197d4,0x000197d4,0x00019af8,0x00019af8,0x00019af8,0x00019af8,0x00019af8,0x00019af8, +0x00019af8,0x00019af8,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xfffe3000,0x000d5000,0xffe35000,0x007f5000,0xfebdf000, +0x019ae000,0xf6d8f000,0x1251e000,0x09271000,0x019ae000,0x01421000,0x007f5000,0x001cb000, +0x000d5000,0x0001d000,0x00000000,0xfffe3000,0x000d5000,0xffe35000,0x007f5000,0xfebdf000, +0x019ae000,0xf6d8f000,0x1251e000,0x09271000,0x019ae000,0x01421000,0x007f5000,0x001cb000, +0x000d5000,0x0001d000,0xfffff000,0xfffe1000,0x000da000,0xffdf9000,0x007d0000,0xfea73000, +0x01747000,0xf6658000,0x124f0000,0x08b38000,0x01bde000,0x012b4000,0x0080f000,0x00191000, +0x000d0000,0x0001a000,0xfffff000,0xfffe1000,0x000da000,0xffdf9000,0x007d0000,0xfea73000, +0x01747000,0xf6658000,0x124f0000,0x08b38000,0x01bde000,0x012b4000,0x0080f000,0x00191000, +0x000d0000,0x0001a000,0xfffff000,0xfffdd000,0x000de000,0xffdbb000,0x007a0000,0xfe909000, +0x014a8000,0xf5f28000,0x12468000,0x083ff000,0x01dd8000,0x01149000,0x00820000,0x0015b000, +0x000ca000,0x00018000,0xfffff000,0xfffdd000,0x000de000,0xffdbb000,0x007a0000,0xfe909000, +0x014a8000,0xf5f28000,0x12468000,0x083ff000,0x01dd8000,0x01149000,0x00820000,0x0015b000, +0x000ca000,0x00018000,0xfffff000,0xfffda000,0x000e1000,0xffd7b000,0x00765000,0xfe7a3000, +0x011d1000,0xf5802000,0x12386000,0x07ccb000,0x01f9c000,0x00fdf000,0x00827000,0x00126000, +0x000c4000,0x00015000,0xfffff000,0xfffda000,0x000e1000,0xffd7b000,0x00765000,0xfe7a3000, +0x011d1000,0xf5802000,0x12386000,0x07ccb000,0x01f9c000,0x00fdf000,0x00827000,0x00126000, +0x000c4000,0x00015000,0xfffff000,0xfffd7000,0x000e3000,0xffd39000,0x0071e000,0xfe643000, +0x00ec0000,0xf50eb000,0x12249000,0x075a0000,0x0212c000,0x00e79000,0x00825000,0x000f4000, +0x000be000,0x00013000,0xfffff000,0xfffd7000,0x000e3000,0xffd39000,0x0071e000,0xfe643000, +0x00ec0000,0xf50eb000,0x12249000,0x075a0000,0x0212c000,0x00e79000,0x00825000,0x000f4000, +0x000be000,0x00013000,0xfffff000,0xfffd3000,0x000e4000,0xffcf5000,0x006cb000,0xfe4e9000, +0x00b77000,0xf49e7000,0x120b4000,0x06e81000,0x02288000,0x00d17000,0x0081b000,0x000c5000, +0x000b7000,0x00011000,0xfffff000,0xfffd3000,0x000e4000,0xffcf5000,0x006cb000,0xfe4e9000, +0x00b77000,0xf49e7000,0x120b4000,0x06e81000,0x02288000,0x00d17000,0x0081b000,0x000c5000, +0x000b7000,0x00011000,0xfffff000,0xfffcf000,0x000e4000,0xffcb0000,0x0066c000,0xfe399000, +0x007f5000,0xf42fa000,0x11ec7000,0x06772000,0x023b3000,0x00bbc000,0x00809000,0x00099000, +0x000b0000,0x00010000,0xfffff000,0xfffcf000,0x000e4000,0xffcb0000,0x0066c000,0xfe399000, +0x007f5000,0xf42fa000,0x11ec7000,0x06772000,0x023b3000,0x00bbc000,0x00809000,0x00099000, +0x000b0000,0x00010000,0xffffe000,0xfffcb000,0x000e3000,0xffc69000,0x005ff000,0xfe253000, +0x0043a000,0xf3c27000,0x11c83000,0x06076000,0x024ad000,0x00a67000,0x007f0000,0x0006f000, +0x000a9000,0x0000e000,0xffffe000,0xfffcb000,0x000e3000,0xffc69000,0x005ff000,0xfe253000, +0x0043a000,0xf3c27000,0x11c83000,0x06076000,0x024ad000,0x00a67000,0x007f0000,0x0006f000, +0x000a9000,0x0000e000,0xffffe000,0xfffc6000,0x000e0000,0xffc21000,0x00586000,0xfe11a000, +0x00046000,0xf3573000,0x119e9000,0x05991000,0x02578000,0x0091a000,0x007d1000,0x00048000, +0x000a1000,0x0000d000,0xffffe000,0xfffc6000,0x000e0000,0xffc21000,0x00586000,0xfe11a000, +0x00046000,0xf3573000,0x119e9000,0x05991000,0x02578000,0x0091a000,0x007d1000,0x00048000, +0x000a1000,0x0000d000,0xffffe000,0xfffc1000,0x000dd000,0xffbd8000,0x00500000,0xfdfef000, +0xffc1a000,0xf2ee2000,0x116fc000,0x052c5000,0x02616000,0x007d6000,0x007aa000,0x00024000, +0x0009a000,0x0000b000,0xffffe000,0xfffc1000,0x000dd000,0xffbd8000,0x00500000,0xfdfef000, +0xffc1a000,0xf2ee2000,0x116fc000,0x052c5000,0x02616000,0x007d6000,0x007aa000,0x00024000, +0x0009a000,0x0000b000,0xffffe000,0xfffbc000,0x000d7000,0xffb8f000,0x0046b000,0xfded5000, +0xff7b6000,0xf2876000,0x113be000,0x04c16000,0x02687000,0x0069c000,0x0077f000,0x00002000, +0x00093000,0x0000a000,0xffffe000,0xfffbc000,0x000d7000,0xffb8f000,0x0046b000,0xfded5000, +0xff7b6000,0xf2876000,0x113be000,0x04c16000,0x02687000,0x0069c000,0x0077f000,0x00002000, +0x00093000,0x0000a000,0xffffd000,0xfffb7000,0x000d0000,0xffb46000,0x003ca000,0xfddcd000, +0xff31c000,0xf2236000,0x1102f000,0x04587000,0x026cf000,0x0056c000,0x0074e000,0xfffe3000, +0x0008b000,0x00009000,0xffffd000,0xfffb7000,0x000d0000,0xffb46000,0x003ca000,0xfddcd000, +0xff31c000,0xf2236000,0x1102f000,0x04587000,0x026cf000,0x0056c000,0x0074e000,0xfffe3000, +0x0008b000,0x00009000,0xffffd000,0xfffb1000,0x000c8000,0xffafd000,0x0031a000,0xfdcda000, +0xfee4b000,0xf1c23000,0x10c54000,0x03f1b000,0x026ee000,0x00447000,0x00719000,0xfffc7000, +0x00084000,0x00008000,0xffffd000,0xfffb1000,0x000c8000,0xffafd000,0x0031a000,0xfdcda000, +0xfee4b000,0xf1c23000,0x10c54000,0x03f1b000,0x026ee000,0x00447000,0x00719000,0xfffc7000, +0x00084000,0x00008000,0xffffc000,0xfffab000,0x000bd000,0xffab4000,0x0025d000,0xfdbfd000, +0xfe946000,0xf1642000,0x1082d000,0x038d4000,0x026e7000,0x0032e000,0x006df000,0xfffad000, +0x0007d000,0x00007000,0xffffc000,0xfffab000,0x000bd000,0xffab4000,0x0025d000,0xfdbfd000, +0xfe946000,0xf1642000,0x1082d000,0x038d4000,0x026e7000,0x0032e000,0x006df000,0xfffad000, +0x0007d000,0x00007000,0xffffc000,0xfffa5000,0x000b1000,0xffa6c000,0x00192000,0xfdb38000, +0xfe40e000,0xf1097000,0x103be000,0x032b4000,0x026bc000,0x00221000,0x006a2000,0xfff96000, +0x00075000,0x00007000,0xffffc000,0xfffa5000,0x000b1000,0xffa6c000,0x00192000,0xfdb38000, +0xfe40e000,0xf1097000,0x103be000,0x032b4000,0x026bc000,0x00221000,0x006a2000,0xfff96000, +0x00075000,0x00007000,0xffffb000,0xfff9f000,0x000a3000,0xffa26000,0x000b9000,0xfda8f000, +0xfdea4000,0xf0b24000,0x0ff0a000,0x02cbf000,0x0266e000,0x00120000,0x00662000,0xfff81000, +0x0006f000,0x00006000,0xffffb000,0xfff9f000,0x000a3000,0xffa26000,0x000b9000,0xfda8f000, +0xfdea4000,0xf0b24000,0x0ff0a000,0x02cbf000,0x0266e000,0x00120000,0x00662000,0xfff81000, +0x0006f000,0x00006000,0xffffb000,0xfff98000,0x00092000,0xff9e1000,0xfffd3000,0xfda01000, +0xfd909000,0xf05ed000,0x0fa13000,0x026f7000,0x025ff000,0x0002d000,0x0061f000,0xfff6e000, +0x00068000,0x00005000,0xffffb000,0xfff98000,0x00092000,0xff9e1000,0xfffd3000,0xfda01000, +0xfd909000,0xf05ed000,0x0fa13000,0x026f7000,0x025ff000,0x0002d000,0x0061f000,0xfff6e000, +0x00068000,0x00005000,0x0d744fcd,0x0b504f33,0x09837f05,0x08000000,0x06ba27e6,0x05a8279a, +0x04c1bf83,0x04000000,0x035d13f3,0x02d413cd,0x0260dfc1,0x02000000,0x01ae89fa,0x016a09e6, +0x01306fe1,0x0b504f33,0x08000000,0x05a8279a,0x04000000,0x02d413cd,0x02000000,0x016a09e6, +0x01000000,0x00b504f3,0x00800000,0x005a827a,0x00400000,0x002d413d,0x00200000,0x0016a09e, +0x20000000,0x1965fea5,0x1428a2fa,0x10000000,0x0cb2ff53,0x0a14517d,0x08000000,0x06597fa9, +0x050a28be,0x04000000,0x032cbfd5,0x0285145f,0x02000000,0x01965fea,0x01428a30,0x01000000, +0x00cb2ff5,0x00a14518,0x00800000,0x006597fb,0x0050a28c,0x00400000,0x0032cbfd,0x00285146, +0x00200000,0x001965ff,0x001428a3,0x00100000,0x000cb2ff,0x000a1451,0x00080000,0x00065980, +0x00050a29,0x00040000,0x00032cc0,0x00028514,0x00020000,0x00019660,0x0001428a,0x00010000, +0x0000cb30,0x0000a145,0x00008000,0x00006598,0x000050a3,0x00004000,0x000032cc,0x00002851, +0x00002000,0x00001966,0x00001429,0x00001000,0x00000cb3,0x00000a14,0x00000800,0x00000659, +0x0000050a,0x00000400,0x0000032d,0x00000285,0x00000200,0x00000196,0x00000143,0x15555555, +0x12492492,0x11111111,0x10842108,0x10410410,0x10204081,0x10101010,0x10080402,0x10040100, +0x10020040,0x10010010,0x10008004,0x10004001,0x10002000,0x0c081e1b,0x0000001e,0x06070707, +0x06060606,0x03060606,0x03030303,0x03030303,0x00030303,0x00000000,0x07070000,0x06060607, +0x06060606,0x03030306,0x03030303,0x03030303,0x00000003,0x00000000,0x02020505,0x02020202, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05050000,0x02020202,0x02020202, +0x00000202,0x00000000,0x00000000,0x00000000,0x00000000,0x04040404,0x02020202,0x01020202, +0x01010101,0x01010101,0x01010101,0x01010101,0x00000101,0x03020002,0x01030303,0x03040204, +0x05040404,0x00100100,0x00000000,0x00000000,0x00000000,0x04030201,0x00001005,0x00000000, +0x01000000,0x05040302,0x09080706,0x0d0c0b0a,0x0301000e,0x07060504,0x0b0a0908,0x0f0e0d0c, +0x03020100,0x07060504,0x0b0a0908,0x00100d0c,0x06050402,0x0a090807,0x0e0d0c0b,0x0000100f, +0x00000003,0x00000002,0x00000005,0x15555555,0x08000000,0x00000005,0x00000003,0x00000007, +0x1999999a,0x08000000,0x00000007,0x00000000,0x00000003,0x12492492,0x04000000,0x00000009, +0x00000004,0x0000000a,0x1c71c71c,0x08000000,0x0000000f,0x00000000,0x00000004,0x11111111, +0x02000000,0x0000001f,0x00000000,0x00000005,0x10842108,0x01000000,0x0000003f,0x00000000, +0x00000006,0x10410410,0x00800000,0x0000007f,0x00000000,0x00000007,0x10204081,0x00400000, +0x000000ff,0x00000000,0x00000008,0x10101010,0x00200000,0x000001ff,0x00000000,0x00000009, +0x10080402,0x00100000,0x000003ff,0x00000000,0x0000000a,0x10040100,0x00080000,0x000007ff, +0x00000000,0x0000000b,0x10020040,0x00040000,0x00000fff,0x00000000,0x0000000c,0x10010010, +0x00020000,0x00001fff,0x00000000,0x0000000d,0x10008004,0x00010000,0x00003fff,0x00000000, +0x0000000e,0x10004001,0x00008000,0x00007fff,0x00000000,0x0000000f,0x10002000,0x00004000, +0x0000ffff,0x00000000,0x00000010,0x10001000,0x00002000,0x00000000,0x04000000,0x050a28be, +0x0453a5cd,0x06597fa9,0x04466275,0x05738c72,0x06b1fc81,0x04000000,0x04ae20d7,0x0562d694, +0x061dae96,0x06de47f4,0x07a44f7a,0x0437be65,0x049fc824,0x050a28be,0x0576c6f5,0x05e58c0b, +0x06566361,0x06c93a2e,0x073dff3e,0x07b4a2bc,0x04168b05,0x0453a5cd,0x04919b6a,0x04d065fb, +0x05100000,0x05506451,0x05918e15,0x05d378bb,0x06161ff3,0x06597fa9,0x069d9400,0x06e2594c, +0x0727cc11,0x076de8fc,0x07b4ace3,0x07fc14bf,0x04220ed7,0x04466275,0x046b03e7,0x048ff1e8, +0x04b52b3f,0x04daaec0,0x05007b49,0x05268fc6,0x054ceb2a,0x05738c72,0x059a72a5,0x05c19cd3, +0x05e90a12,0x0610b982,0x0638aa48,0x0660db91,0x06894c90,0x06b1fc81,0x06daeaa1,0x07041636, +0x072d7e8b,0x075722ef,0x078102b8,0x07ab1d3e,0x07d571e0,0x04000000,0x04156381,0x042ae32a, +0x04407eb1,0x045635cf,0x046c083e,0x0481f5bb,0x0497fe03,0x04ae20d7,0x04c45df6,0x04dab524, +0x04f12624,0x0507b0bc,0x051e54b1,0x053511cb,0x054be7d4,0x0562d694,0x0579ddd8,0x0590fd6c, +0x05a8351c,0x05bf84b8,0x05d6ec0e,0x05ee6aef,0x0606012b,0x061dae96,0x06357302,0x064d4e43, +0x0665402d,0x067d4896,0x06956753,0x06ad9c3d,0x06c5e72b,0x06de47f4,0x06f6be73,0x070f4a80, +0x0727ebf7,0x0740a2b2,0x07596e8d,0x07724f64,0x078b4514,0x07a44f7a,0x07bd6e75,0x07d6a1e2, +0x07efe9a1,0x0404a2c9,0x04115aca,0x041e1cc4,0x042ae8a7,0x0437be65,0x04449dee,0x04518733, +0x045e7a26,0x046b76b9,0x04787cdc,0x04858c83,0x0492a59f,0x049fc824,0x04acf402,0x04ba292e, +0x04c7679a,0x04d4af3a,0x04e20000,0x04ef59e0,0x04fcbcce,0x050a28be,0x05179da4,0x05251b73, +0x0532a220,0x054031a0,0x054dc9e7,0x055b6ae9,0x0569149c,0x0576c6f5,0x058481e9,0x0592456d, +0x05a01176,0x05ade5fa,0x05bbc2ef,0x05c9a84a,0x05d79601,0x05e58c0b,0x05f38a5d,0x060190ee, +0x060f9fb3,0x061db6a5,0x062bd5b8,0x0639fce4,0x06482c1f,0x06566361,0x0664a2a0,0x0672e9d4, +0x068138f3,0x068f8ff5,0x069deed1,0x06ac557f,0x06bac3f6,0x06c93a2e,0x06d7b81f,0x06e63dc0, +0x06f4cb09,0x07035ff3,0x0711fc75,0x0720a087,0x072f4c22,0x073dff3e,0x074cb9d3,0x075b7bdb, +0x076a454c,0x07791620,0x0787ee50,0x0796cdd4,0x07a5b4a5,0x07b4a2bc,0x07c39812,0x07d294a0, +0x07e1985f,0x07f0a348,0x07ffb554,0x0407673f,0x040ef75e,0x04168b05,0x041e2230,0x0425bcdd, +0x042d5b07,0x0434fcad,0x043ca1c9,0x04444a5a,0x044bf65d,0x0453a5cd,0x045b58a9,0x04630eed, +0x046ac896,0x047285a2,0x047a460c,0x048209d3,0x0489d0f4,0x04919b6a,0x04996935,0x04a13a50, +0x04a90eba,0x04b0e66e,0x04b8c16c,0x04c09faf,0x04c88135,0x04d065fb,0x04d84dff,0x04e0393e, +0x04e827b6,0x04f01963,0x04f80e44,0x05000655,0x05080195,0x05100000,0x05180194,0x0520064f, +0x05280e2d,0x0530192e,0x0538274e,0x0540388a,0x05484ce2,0x05506451,0x05587ed5,0x05609c6e, +0x0568bd17,0x0570e0cf,0x05790793,0x05813162,0x05895e39,0x05918e15,0x0599c0f4,0x05a1f6d5, +0x05aa2fb5,0x05b26b92,0x05baaa69,0x05c2ec39,0x05cb3100,0x05d378bb,0x05dbc368,0x05e41105, +0x05ec6190,0x05f4b507,0x05fd0b68,0x060564b1,0x060dc0e0,0x06161ff3,0x061e81e8,0x0626e6bc, +0x062f4e6f,0x0637b8fd,0x06402666,0x064896a7,0x065109be,0x06597fa9,0x0661f867,0x066a73f5, +0x0672f252,0x067b737c,0x0683f771,0x068c7e2f,0x069507b5,0x069d9400,0x06a6230f,0x06aeb4e0, +0x06b74971,0x06bfe0c0,0x06c87acc,0x06d11794,0x06d9b714,0x06e2594c,0x06eafe3a,0x06f3a5dc, +0x06fc5030,0x0704fd35,0x070dacea,0x07165f4b,0x071f1459,0x0727cc11,0x07308671,0x07394378, +0x07420325,0x074ac575,0x07538a67,0x075c51fa,0x07651c2c,0x076de8fc,0x0776b867,0x077f8a6d, +0x07885f0b,0x07913641,0x079a100c,0x07a2ec6c,0x07abcb5f,0x07b4ace3,0x07bd90f6,0x07c67798, +0x07cf60c7,0x07d84c81,0x07e13ac5,0x07ea2b92,0x07f31ee6,0x07fc14bf,0x0402868e,0x040703ff, +0x040b82b0,0x041002a1,0x041483d1,0x04190640,0x041d89ed,0x04220ed7,0x042694fe,0x042b1c60, +0x042fa4fe,0x04342ed7,0x0438b9e9,0x043d4635,0x0441d3b9,0x04466275,0x044af269,0x044f8393, +0x045415f3,0x0458a989,0x045d3e53,0x0461d451,0x04666b83,0x046b03e7,0x046f9d7e,0x04743847, +0x0478d440,0x047d716a,0x04820fc3,0x0486af4c,0x048b5003,0x048ff1e8,0x049494fb,0x0499393a, +0x049ddea5,0x04a2853c,0x04a72cfe,0x04abd5ea,0x04b08000,0x04b52b3f,0x04b9d7a7,0x04be8537, +0x04c333ee,0x04c7e3cc,0x04cc94d1,0x04d146fb,0x04d5fa4b,0x04daaec0,0x04df6458,0x04e41b14, +0x04e8d2f3,0x04ed8bf5,0x04f24618,0x04f7015d,0x04fbbdc3,0x05007b49,0x050539ef,0x0509f9b4, +0x050eba98,0x05137c9a,0x05183fba,0x051d03f7,0x0521c950,0x05268fc6,0x052b5757,0x05302003, +0x0534e9ca,0x0539b4ab,0x053e80a6,0x05434db9,0x05481be5,0x054ceb2a,0x0551bb85,0x05568cf8, +0x055b5f81,0x05603321,0x056507d6,0x0569dda0,0x056eb47f,0x05738c72,0x05786578,0x057d3f92, +0x05821abf,0x0586f6fd,0x058bd44e,0x0590b2b0,0x05959222,0x059a72a5,0x059f5438,0x05a436da, +0x05a91a8c,0x05adff4c,0x05b2e51a,0x05b7cbf5,0x05bcb3de,0x05c19cd3,0x05c686d5,0x05cb71e2, +0x05d05dfb,0x05d54b1f,0x05da394d,0x05df2885,0x05e418c7,0x05e90a12,0x05edfc66,0x05f2efc2, +0x05f7e426,0x05fcd992,0x0601d004,0x0606c77d,0x060bbffd,0x0610b982,0x0615b40c,0x061aaf9c, +0x061fac2f,0x0624a9c7,0x0629a863,0x062ea802,0x0633a8a3,0x0638aa48,0x063dacee,0x0642b096, +0x0647b53f,0x064cbae9,0x0651c193,0x0656c93d,0x065bd1e7,0x0660db91,0x0665e639,0x066af1df, +0x066ffe84,0x06750c26,0x067a1ac6,0x067f2a62,0x06843afb,0x06894c90,0x068e5f21,0x069372ae, +0x06988735,0x069d9cb7,0x06a2b333,0x06a7caa9,0x06ace318,0x06b1fc81,0x06b716e2,0x06bc323b, +0x06c14e8d,0x06c66bd6,0x06cb8a17,0x06d0a94e,0x06d5c97c,0x06daeaa1,0x06e00cbb,0x06e52fca, +0x06ea53cf,0x06ef78c8,0x06f49eb6,0x06f9c597,0x06feed6d,0x07041636,0x07093ff2,0x070e6aa0, +0x07139641,0x0718c2d3,0x071df058,0x07231ecd,0x07284e34,0x072d7e8b,0x0732afd2,0x0737e209, +0x073d1530,0x07424946,0x07477e4b,0x074cb43e,0x0751eb20,0x075722ef,0x075c5bac,0x07619557, +0x0766cfee,0x076c0b72,0x077147e2,0x0776853e,0x077bc385,0x078102b8,0x078642d6,0x078b83de, +0x0790c5d1,0x079608ae,0x079b4c74,0x07a09124,0x07a5d6bd,0x07ab1d3e,0x07b064a8,0x07b5acfb, +0x07baf635,0x07c04056,0x07c58b5f,0x07cad74e,0x07d02424,0x07d571e0,0x07dac083,0x07e0100a, +0x07e56078,0x07eab1ca,0x07f00401,0x07f5571d,0x07faab1c,0x04000000,0x0402aae3,0x04055638, +0x040801ff,0x040aae37,0x040d5ae0,0x041007fa,0x0412b586,0x04156381,0x041811ee,0x041ac0cb, +0x041d7018,0x04201fd5,0x0422d003,0x042580a0,0x042831ad,0x042ae32a,0x042d9516,0x04304772, +0x0432fa3d,0x0435ad76,0x0438611f,0x043b1536,0x043dc9bc,0x04407eb1,0x04433414,0x0445e9e5, +0x0448a024,0x044b56d1,0x044e0dec,0x0450c575,0x04537d6b,0x045635cf,0x0458ee9f,0x045ba7dd, +0x045e6188,0x04611ba0,0x0463d625,0x04669116,0x04694c74,0x046c083e,0x046ec474,0x04718116, +0x04743e25,0x0476fb9f,0x0479b984,0x047c77d6,0x047f3693,0x0481f5bb,0x0484b54e,0x0487754c, +0x048a35b6,0x048cf68a,0x048fb7c8,0x04927972,0x04953b85,0x0497fe03,0x049ac0eb,0x049d843e, +0x04a047fa,0x04a30c20,0x04a5d0af,0x04a895a8,0x04ab5b0b,0x04ae20d7,0x04b0e70c,0x04b3adaa, +0x04b674b1,0x04b93c21,0x04bc03fa,0x04becc3b,0x04c194e4,0x04c45df6,0x04c72771,0x04c9f153, +0x04ccbb9d,0x04cf864f,0x04d25169,0x04d51ceb,0x04d7e8d4,0x04dab524,0x04dd81dc,0x04e04efb, +0x04e31c81,0x04e5ea6e,0x04e8b8c2,0x04eb877c,0x04ee569d,0x04f12624,0x04f3f612,0x04f6c666, +0x04f99721,0x04fc6841,0x04ff39c7,0x05020bb3,0x0504de05,0x0507b0bc,0x050a83d8,0x050d575b, +0x05102b42,0x0512ff8e,0x0515d440,0x0518a956,0x051b7ed1,0x051e54b1,0x05212af5,0x0524019e, +0x0526d8ab,0x0529b01d,0x052c87f2,0x052f602c,0x053238ca,0x053511cb,0x0537eb30,0x053ac4f9, +0x053d9f25,0x054079b5,0x054354a8,0x05462ffe,0x05490bb7,0x054be7d4,0x054ec453,0x0551a134, +0x05547e79,0x05575c20,0x055a3a2a,0x055d1896,0x055ff764,0x0562d694,0x0565b627,0x0568961b, +0x056b7671,0x056e5729,0x05713843,0x057419be,0x0576fb9a,0x0579ddd8,0x057cc077,0x057fa378, +0x058286d9,0x05856a9b,0x05884ebe,0x058b3342,0x058e1827,0x0590fd6c,0x0593e311,0x0596c917, +0x0599af7d,0x059c9643,0x059f7d6a,0x05a264f0,0x05a54cd6,0x05a8351c,0x05ab1dc2,0x05ae06c7, +0x05b0f02b,0x05b3d9f0,0x05b6c413,0x05b9ae95,0x05bc9977,0x05bf84b8,0x05c27057,0x05c55c56, +0x05c848b3,0x05cb356e,0x05ce2289,0x05d11001,0x05d3fdd8,0x05d6ec0e,0x05d9daa1,0x05dcc993, +0x05dfb8e2,0x05e2a890,0x05e5989b,0x05e88904,0x05eb79cb,0x05ee6aef,0x05f15c70,0x05f44e4f, +0x05f7408b,0x05fa3324,0x05fd261b,0x0600196e,0x06030d1e,0x0606012b,0x0608f595,0x060bea5c, +0x060edf7f,0x0611d4fe,0x0614cada,0x0617c112,0x061ab7a6,0x061dae96,0x0620a5e3,0x06239d8b, +0x0626958f,0x06298def,0x062c86aa,0x062f7fc1,0x06327934,0x06357302,0x06386d2b,0x063b67b0, +0x063e6290,0x06415dcb,0x06445960,0x06475551,0x064a519c,0x064d4e43,0x06504b44,0x0653489f, +0x06564655,0x06594465,0x065c42d0,0x065f4195,0x066240b4,0x0665402d,0x06684000,0x066b402d, +0x066e40b3,0x06714194,0x067442ce,0x06774462,0x067a464f,0x067d4896,0x06804b36,0x06834e2f, +0x06865181,0x0689552c,0x068c5931,0x068f5d8e,0x06926245,0x06956753,0x06986cbb,0x069b727b, +0x069e7894,0x06a17f05,0x06a485cf,0x06a78cf1,0x06aa946b,0x06ad9c3d,0x06b0a468,0x06b3acea, +0x06b6b5c4,0x06b9bef6,0x06bcc880,0x06bfd261,0x06c2dc9a,0x06c5e72b,0x06c8f213,0x06cbfd52, +0x06cf08e9,0x06d214d7,0x06d5211c,0x06d82db8,0x06db3aaa,0x06de47f4,0x06e15595,0x06e4638d, +0x06e771db,0x06ea807f,0x06ed8f7b,0x06f09ecc,0x06f3ae75,0x06f6be73,0x06f9cec8,0x06fcdf72, +0x06fff073,0x070301ca,0x07061377,0x0709257a,0x070c37d2,0x070f4a80,0x07125d84,0x071570de, +0x0718848d,0x071b9891,0x071eaceb,0x0721c19a,0x0724d69e,0x0727ebf7,0x072b01a6,0x072e17a9, +0x07312e01,0x073444ae,0x07375bb0,0x073a7307,0x073d8ab2,0x0740a2b2,0x0743bb06,0x0746d3af, +0x0749ecac,0x074d05fe,0x07501fa3,0x0753399d,0x075653eb,0x07596e8d,0x075c8983,0x075fa4cc, +0x0762c06a,0x0765dc5b,0x0768f8a0,0x076c1538,0x076f3224,0x07724f64,0x07756cf7,0x07788add, +0x077ba916,0x077ec7a3,0x0781e683,0x078505b5,0x0788253b,0x078b4514,0x078e653f,0x079185be, +0x0794a68f,0x0797c7b2,0x079ae929,0x079e0af1,0x07a12d0c,0x07a44f7a,0x07a7723a,0x07aa954c, +0x07adb8b0,0x07b0dc67,0x07b4006f,0x07b724ca,0x07ba4976,0x07bd6e75,0x07c093c5,0x07c3b967, +0x07c6df5a,0x07ca059f,0x07cd2c36,0x07d0531e,0x07d37a57,0x07d6a1e2,0x07d9c9be,0x07dcf1ec, +0x07e01a6a,0x07e3433a,0x07e66c5a,0x07e995cc,0x07ecbf8e,0x07efe9a1,0x07f31405,0x07f63eba, +0x07f969c0,0x07fc9516,0x07ffc0bc,0x04017659,0x04030c7d,0x0404a2c9,0x0406393d,0x0407cfd9, +0x0409669d,0x040afd89,0x040c949e,0x040e2bda,0x040fc33e,0x04115aca,0x0412f27e,0x04148a5a, +0x0416225d,0x0417ba89,0x041952dc,0x041aeb57,0x041c83fa,0x041e1cc4,0x041fb5b6,0x04214ed0, +0x0422e811,0x04248179,0x04261b0a,0x0427b4c2,0x04294ea1,0x042ae8a7,0x042c82d6,0x042e1d2b, +0x042fb7a8,0x0431524c,0x0432ed17,0x0434880a,0x04362324,0x0437be65,0x043959cd,0x043af55d, +0x043c9113,0x043e2cf1,0x043fc8f6,0x04416522,0x04430174,0x04449dee,0x04463a8f,0x0447d756, +0x04497445,0x044b115a,0x044cae96,0x044e4bf9,0x044fe983,0x04518733,0x0453250a,0x0454c308, +0x0456612d,0x0457ff78,0x04599dea,0x045b3c82,0x045cdb41,0x045e7a26,0x04601932,0x0461b864, +0x046357bd,0x0464f73c,0x046696e2,0x046836ae,0x0469d6a0,0x046b76b9,0x046d16f7,0x046eb75c, +0x047057e8,0x0471f899,0x04739971,0x04753a6f,0x0476db92,0x04787cdc,0x047a1e4c,0x047bbfe2, +0x047d619e,0x047f0380,0x0480a588,0x048247b6,0x0483ea0a,0x04858c83,0x04872f22,0x0488d1e8, +0x048a74d3,0x048c17e3,0x048dbb1a,0x048f5e76,0x049101f8,0x0492a59f,0x0494496c,0x0495ed5f, +0x04979177,0x049935b5,0x049ada19,0x049c7ea1,0x049e2350,0x049fc824,0x04a16d1d,0x04a3123b, +0x04a4b77f,0x04a65ce8,0x04a80277,0x04a9a82b,0x04ab4e04,0x04acf402,0x04ae9a26,0x04b0406e, +0x04b1e6dc,0x04b38d6f,0x04b53427,0x04b6db05,0x04b88207,0x04ba292e,0x04bbd07a,0x04bd77ec, +0x04bf1f82,0x04c0c73d,0x04c26f1d,0x04c41722,0x04c5bf4c,0x04c7679a,0x04c9100d,0x04cab8a6, +0x04cc6163,0x04ce0a44,0x04cfb34b,0x04d15c76,0x04d305c5,0x04d4af3a,0x04d658d2,0x04d80290, +0x04d9ac72,0x04db5679,0x04dd00a4,0x04deaaf3,0x04e05567,0x04e20000,0x04e3aabd,0x04e5559e, +0x04e700a3,0x04e8abcd,0x04ea571c,0x04ec028e,0x04edae25,0x04ef59e0,0x04f105bf,0x04f2b1c3, +0x04f45dea,0x04f60a36,0x04f7b6a6,0x04f9633a,0x04fb0ff2,0x04fcbcce,0x04fe69ce,0x050016f3, +0x0501c43b,0x050371a7,0x05051f37,0x0506cceb,0x05087ac2,0x050a28be,0x050bd6de,0x050d8521, +0x04030200,0x05050504,0x06060606,0x07070606,0x07070707,0x08070707,0x08080808,0x08080808, +0x08080808,0x09080808,0x09090909,0x09090909,0x09090909,0x09090909,0x09090909,0x09090909, +0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a, +0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b, +0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b, +0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0c0c0b0b,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0d0d0d0c,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0f0f0e0e, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x000f0f0f,0x01000000,0x03000200,0x01010003,0x03010201,0x02020102,0x01030302,0x03030203, +0x03040204,0x05050506,0x09090909,0x09090906,0x03070506,0x060c0909,0x060c0906,0x00000a0b, +0x00001212,0x0000120f,0x00070707,0x000c0c0c,0x000c0f06,0x03060606,0x0609090c,0x06090c06, +0x00050808,0x00090c0f,0x00091206,0x04040404,0x06060404,0x0c0a0806,0x1c161210,0x362e2822, +0x0000c036,0x04040404,0x06060404,0x0c0a0808,0x1c181410,0x36322a22,0x00009e4c,0x04040404, +0x06060404,0x100c0a08,0x261e1814,0x5444382e,0x00001a66,0x04040404,0x04040404,0x04040404, +0x06060606,0x0a0a0606,0x0c0c0c0a,0x100e0e0e,0x14141010,0x1a1a1a14,0x00424242,0x04040404, +0x04040404,0x04040404,0x08060606,0x0a0a0808,0x0c0c0c0a,0x120e0e0e,0x16161212,0x1e1e1e16, +0x00383838,0x04040404,0x04040404,0x04040404,0x08060606,0x0c0c0808,0x1010100c,0x1a141414, +0x22221a1a,0x2a2a2a22,0x000c0c0c,0x04040404,0x06060404,0x06040404,0x06060606,0x0a0a0a06, +0x0e0c0c0c,0x10100e0e,0x14141410,0x421a1a1a,0x00004242,0x04040404,0x06060404,0x06040404, +0x08080606,0x0a0a0a08,0x0e0c0c0c,0x12120e0e,0x16161612,0x381e1e1e,0x00003838,0x04040404, +0x06060404,0x06040404,0x08080606,0x0c0c0c08,0x14101010,0x1a1a1414,0x2222221a,0x0c2a2a2a, +0x00000c0c,0x06060606,0x0a080606,0x12100e0c,0x26201a16,0x463e362e,0x0000244c,0x06060606, +0x0a080606,0x14100e0c,0x26201c18,0x443c342e,0x0000363a,0x04040404,0x04040404,0x06060604, +0x0a080808,0x0c0c0a0a,0x0e0e0e0c,0x18121212,0x20201818,0x2c2c2c20,0x000c0c0c,0x04040404, +0x04040404,0x06060604,0x08060606,0x0a0a0808,0x0e0e0e0a,0x1a121212,0x20201a1a,0x2a2a2a20, +0x00121212,0x04040404,0x04040404,0x06060604,0x0a080808,0x0c0c0a0a,0x0e0e0e0c,0x18121212, +0x1e1e1818,0x2828281e,0x00121212,0x06060606,0x06060606,0x08080806,0x0c0a0a0a,0x0e0e0c0c, +0x1212120e,0x20181818,0x2c2c2020,0x0c0c0c2c,0x06060606,0x06060606,0x06060606,0x0a080808, +0x0e0e0a0a,0x1212120e,0x201a1a1a,0x2a2a2020,0x1212122a,0x06060606,0x06060606,0x08080806, +0x0c0a0a0a,0x0e0e0c0c,0x1212120e,0x1e181818,0x28281e1e,0x12121228,0x0c0c0c0c,0x14100c0c, +0x28201c18,0x4c403830,0x0202025a,0x00000202,0x08080808,0x08080808,0x0c0c0c08,0x14101010, +0x18181414,0x1c1c1c18,0x02242424,0x02020202,0x02020202,0x001a1a1a,0x040c0c0c,0x08080404, +0x0c0c0c08,0x14101010,0x18181414,0x1c1c1c18,0x02242424,0x02020202,0x02020202,0x001a1a1a, +0x00024a0c,0x00024a54,0x00024acc,0x00024a24,0x00024a7c,0x00024af4,0x00024a3c,0x00024aa4, +0x00024b1c,0x00024b44,0x00024b74,0x00024bec,0x00024b5c,0x00024b9c,0x00024c10,0x00024b5c, +0x00024bc4,0x00024c34,0x00024b5c,0x00024bc4,0x00024c34,0x00024b5c,0x00024bc4,0x00024c34, +0x00024c58,0x00024c70,0x00024c98,0x00000000,0x00000000,0x01000000,0x02010101,0x03030302, +0x00000002,0x09837f05,0x0b504f33,0x0d744fcd,0x10000000,0x1306fe0a,0x16a09e66,0x1ae89f99, +0x0db84a81,0x0e1b9d7f,0x0f31adcf,0x0fbba815,0x0feda417,0x0ffc8fc8,0x0fff964c,0x0ffff8d3, +0xf7c4a019,0xf873c92e,0xfafc67ec,0xfd16e22f,0xfe7c9fc6,0xff583479,0xffc5d7b9,0xfff0d84c, +0x09bd7ca0,0xf137ca18,0xfde95d5e,0x0fdcf549,0xf9e08756,0xf34e6cba,0xf34e6cba,0x061f78aa, +0x0fdcf549,0x0216a2a2,0xf137ca18,0xf6428360,0x061f78aa,0xf137ca18,0x0ec835e8,0xf9e08756, +0xf9e08756,0x0ec835e8,0xf137ca18,0xf9e08756,0x061f78aa,0x0ec835e8,0x0ec835e8,0x061f78aa, +0x0216a2a2,0xf9e08756,0x09bd7ca0,0xf34e6cba,0x0ec835e8,0xf0230ab7,0xf0230ab7,0xf137ca18, +0xf34e6cba,0xf6428360,0xf9e08756,0xfde95d5e,0x00b2aa3e,0x0216a2a2,0x03768962,0x04cfb0e2, +0x061f78aa,0x07635284,0x0898c779,0x09bd7ca0,0x0acf37ad,0x0bcbe352,0x0cb19346,0x0d7e8807, +0x0e313245,0x0ec835e8,0x0f426cb5,0x0f9ee890,0x0fdcf549,0x0ffc19fd,0x0ffc19fd,0x0fdcf549, +0x0f9ee890,0x0f426cb5,0x0ec835e8,0x0e313245,0x0d7e8807,0x0cb19346,0x0bcbe352,0x0acf37ad, +0x09bd7ca0,0x0898c779,0x07635284,0x061f78aa,0x04cfb0e2,0x03768962,0x0216a2a2,0x00b2aa3e, +0x0216a2a2,0x061f78aa,0x09bd7ca0,0x0cb19346,0x0ec835e8,0x0fdcf549,0x0fdcf549,0x0ec835e8, +0x0cb19346,0x09bd7ca0,0x061f78aa,0x0216a2a2,0x00000000,0x0361962f,0x05db3d74,0x08000000, +0x0a24c28c,0x0c9e69d1,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000002,0x00000040,0x00001980, +0x000019a4,0x000019c8,0x000019ec,0x00000000, +}; +#endif diff --git a/sound/soc/samsung/srp_alp/srp_alp_ioctl.h b/sound/soc/samsung/srp_alp/srp_alp_ioctl.h new file mode 100644 index 0000000..89ac617 --- /dev/null +++ b/sound/soc/samsung/srp_alp/srp_alp_ioctl.h @@ -0,0 +1,14 @@ +#ifndef __SRP_ALP_IOCTL_H +#define __SRP_ALP_IOCTL_H + +#define SRP_INIT (0x10000) +#define SRP_DEINIT (0x10001) +#define SRP_GET_MMAP_SIZE (0x10002) +#define SRP_FLUSH (0x20002) +#define SRP_SEND_EOS (0x20005) +#define SRP_GET_IBUF_INFO (0x20007) +#define SRP_GET_OBUF_INFO (0x20008) +#define SRP_STOP_EOS_STATE (0x30007) +#define SRP_GET_DEC_INFO (0x30008) + +#endif /* __SRP_ALP_IOCTL_H */ diff --git a/sound/soc/samsung/srp_alp/srp_alp_reg.h b/sound/soc/samsung/srp_alp/srp_alp_reg.h new file mode 100644 index 0000000..56f8d1b --- /dev/null +++ b/sound/soc/samsung/srp_alp/srp_alp_reg.h @@ -0,0 +1,161 @@ +/* sound/soc/samsung/srp_reg.h + * + * Audio RP Registers for Samsung Exynos4 + * + * Copyright (c) 2010 Samsung Electronics + * http://www.samsungsemi.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#ifndef _SRP_ALP_REG_H_ +#define _SRP_ALP_REG_H_ + +#define SRP_IRAM_BASE (0x02020000) +#define SRP_DMEM_BASE (0x03000000) +#define SRP_ASSCLK_BASE (0x03810000) +#define SRP_COMMBOX_BASE (0x03820000) + +/* Commbox Offset */ +#define SRP_CONT (0x0000) +#define SRP_CFGR (0x0004) +#define SRP_INTERRUPT (0x0008) +#define SRP_PENDING (0x000C) +#define SRP_INTERRUPT_CODE (0x0010) +#define SRP_POWER_MODE (0x0014) +#define SRP_ERROR_CODE (0x0018) +#define SRP_ARM_INTERRUPT_CODE (0x001C) +#define SRP_SUSPENDED_IP (0x0020) +#define SRP_SUSPENDED_SP (0x0024) +#define SRP_FRAME_INDEX (0x0028) +#define SRP_PCM_BUFF_SIZE (0x002C) +#define SRP_PCM_BUFF0 (0x0030) +#define SRP_PCM_BUFF1 (0x0034) +#define SRP_READ_BITSTREAM_SIZE (0x0038) + +#define SRP_LOAD_CGA_SA_ADDR (0x0100) +#define SRP_BITSTREAM_BUFF_DRAM_ADDR1 (0x0104) +#define SRP_BITSTREAM_SIZE (0x0108) +#define SRP_BITSTREAM_BUFF_DRAM_ADDR0 (0x010C) +#define SRP_CODE_START_ADDR (0x0110) +#define SRP_PCM_DUMP_ADDR (0x0114) +#define SRP_DATA_START_ADDR (0x0118) +#define SRP_BITSTREAM_BUFF_DRAM_SIZE (0x011C) +#define SRP_CONF_START_ADDR (0x0120) +#define SRP_GAIN_CTRL_FACTOR_L (0x0124) +#define SRP_UART_INFORMATION (0x0128) +#define SRP_GAIN_CTRL_FACTOR_R (0x012C) +#define SRP_INTREN (0x0180) +#define SRP_INTRMASK (0x0184) +#define SRP_INTRSRC (0x0188) +#define SRP_INTRIRQ (0x0308) + +/* + * SRP Configuration register + */ +#define SRP_CFGR_OUTPUT_PCM_8BIT (0x0 << 0) +#define SRP_CFGR_OUTPUT_PCM_16BIT (0x1 << 0) +#define SRP_CFGR_OUTPUT_PCM_24BIT (0x2 << 0) +#define SRP_CFGR_BOOT_INST_EXT_MEM (0x0 << 2) +#define SRP_CFGR_BOOT_INST_INT_CC (0x1 << 2) +#define SRP_CFGR_NOTUSE_ICACHE_MEM (0x0 << 3) +#define SRP_CFGR_USE_ICACHE_MEM (0x1 << 3) +#define SRP_CFGR_FLOW_CTRL_ON (0x1 << 4) +#define SRP_CFGR_FLOW_CTRL_OFF (0x0 << 4) +#define SRP_CFGR_USE_I2S_INTR (0x1 << 6) +#define SRP_CFGR_NOTUSE_I2S_INTR (0x0 << 6) + +/* + * SRP Pending control register + */ +#define SRP_RUN (0x0 << 0) +#define SRP_STALL (0x1 << 0) + +/* + * Interrupt Code & Information + */ + +/* for SRP_INTERRUPT_CODE */ +#define SRP_INTR_CODE_MASK (0x0FFF) + +#define SRP_INTR_CODE_PLAYDONE (0x0001 << 0) +#define SRP_INTR_CODE_ERROR (0x0001 << 1) +#define SRP_INTR_CODE_REQUEST (0x0001 << 2) +#define SRP_INTR_CODE_POLLINGWAIT (0x0001 << 9) +#define SRP_INTR_CODE_UART_OUTPUT (0x0001 << 10) +#define SRP_INTR_CODE_NOTIFY_OBUF (0x0001 << 11) + +#define SRP_INTR_CODE_REQUEST_MASK (0x0007 << 6) +#define SRP_INTR_CODE_NOTIFY_INFO (0x0007 << 6) +#define SRP_INTR_CODE_IBUF_REQUEST_ULP (0x0006 << 6) +#define SRP_INTR_CODE_IBUF_REQUEST (0x0005 << 6) +#define SRP_INTR_CODE_ULP (0x0004 << 6) +#define SRP_INTR_CODE_OBUF_FULL (0x0003 << 6) +#define SRP_INTR_CODE_PLAYEND (0x0002 << 6) +#define SRP_INTR_CODE_DRAM_REQUEST (0x0001 << 6) + +#define SRP_INTR_CODE_IBUF_MASK (0x0003 << 4) +#define SRP_INTR_CODE_IBUF0_EMPTY (0x0001 << 4) +#define SRP_INTR_CODE_IBUF1_EMPTY (0x0002 << 4) + +#define SRP_INTR_CODE_OBUF_MASK (0x0003 << 4) +#define SRP_INTR_CODE_OBUF0_FULL (0x0001 << 4) +#define SRP_INTR_CODE_OBUF1_FULL (0x0002 << 4) + +/* for SRP_INFORMATION */ +#define SRP_INTR_INFO_MASK (0xFFFF) + +/* for SRP_ARM_INTERRUPT_CODE */ +#define SRP_ARM_INTR_CODE_MASK (0x007F) +/* ARM to RP */ +#define SRP_ARM_INTR_CODE_SA_ON (0x0001 << 0) +#define SRP_ARM_INTR_CODE_PAUSE_REQ (0x0001 << 1) +#define SRP_ARM_INTR_CODE_PAUSE_STA (0x0001 << 2) +#define SRP_ARM_INTR_CODE_ULP_ATYPE (0x0000 << 3) +#define SRP_ARM_INTR_CODE_ULP_BTYPE (0x0001 << 3) +#define SRP_ARM_INTR_CODE_ULP_CTYPE (0x0002 << 3) +/* RP to ARM */ +#define SRP_ARM_INTR_CODE_CHINF_MASK (0x0003) +#define SRP_ARM_INTR_CODE_CHINF_SHIFT (5) +#define SRP_ARM_INTR_CODE_SRINF_MASK (0xFFFF) +#define SRP_ARM_INTR_CODE_SRINF_SHIFT (14) + +/* ARM to RP */ +#define SRP_ARM_INTR_CODE_PCM_DUMP_ON (0x0001 << 7) +/* RP to ARM */ +#define SRP_ARM_INTR_CODE_FRAME_MASK (0x0007 << 8) +#define SRP_ARM_INTR_CODE_FRAME_NULL (0x0000 << 8) +#define SRP_ARM_INTR_CODE_FRAME_576 (0x0001 << 8) +#define SRP_ARM_INTR_CODE_FRAME_1152 (0x0002 << 8) +#define SRP_ARM_INTR_CODE_FRAME_384 (0x0003 << 8) +#define SRP_ARM_INTR_CODE_FRAME_1024 (0x0004 << 8) +/* ARM to RP */ +#define SRP_ARM_INTR_CODE_FORCE_MONO (0x0001 << 11) +#define SRP_ARM_INTR_CODE_AM_FILTER_LOAD (0x0001 << 12) +#define SRP_ARM_INTR_CODE_SUPPORT_MONO (0x0001 << 13) + +/* For Suspend/Resume */ +#define SRP_POWER_MODE_MASK (0xFFFF) +#define SRP_POWER_MODE_TRIGGER (0x1) +#define SRP_SW_RESET_TRIGGER (0x1 << 2) +#define SRP_SUSPENED_CHECKED (0x1 << 1) +#define SRP_SW_RESET_DONE (0x1 << 3) +/* INTREN */ +#define SRP_INTR_EN (0x1) +#define SRP_INTR_DI (0x0) +/* INTRMASK */ +#define SRP_INTR_MASK (0x7F) +#define SRP_ARM_INTR_MASK (0x1 << 6) +#define SRP_DMA_INTR_MASK (0x1 << 5) +#define SRP_TMR_INTR_MASK (0x1F << 0) +/* INTRSRC */ +#define SRP_INTRSRC_MASK (0x7F) +#define SRP_ARM_INTR_SRC (0x1 << 6) +#define SRP_DMA_INTR_SRC (0x1 << 5) +#define SRP_TMR_INTR_SRC (0x1F << 0) +/* INTRIRQ */ +#define SRP_INTRIRQ_MASK (0xFFFF << 0) +#define SRP_INTRIRQ_CONF (0x100 << 0) +#endif diff --git a/sound/soc/samsung/srp_ulp/Kconfig b/sound/soc/samsung/srp_ulp/Kconfig new file mode 100644 index 0000000..a8e9a54 --- /dev/null +++ b/sound/soc/samsung/srp_ulp/Kconfig @@ -0,0 +1,5 @@ +config SND_SAMSUNG_RP + depends on ARCH_EXYNOS4 + bool "ULP Audio support" + help + Say Y if you want to support ULP audio. diff --git a/sound/soc/samsung/srp_ulp/Makefile b/sound/soc/samsung/srp_ulp/Makefile new file mode 100644 index 0000000..eeb8bba --- /dev/null +++ b/sound/soc/samsung/srp_ulp/Makefile @@ -0,0 +1,4 @@ +# SRP(Samsung Reconfigurable Processor) Solution Support +obj-$(CONFIG_SND_SAMSUNG_RP) += srp.o +obj-$(CONFIG_SND_SAMSUNG_RP) += srp_fw.o + diff --git a/sound/soc/samsung/srp_ulp/srp.c b/sound/soc/samsung/srp_ulp/srp.c new file mode 100644 index 0000000..78f2df2 --- /dev/null +++ b/sound/soc/samsung/srp_ulp/srp.c @@ -0,0 +1,2061 @@ +/* sound/soc/samsung/srp.c + * + * SRP Audio driver for Samsung Exynos4 + * + * Copyright (c) 2010 Samsung Electronics + * http://www.samsungsemi.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#include <linux/errno.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/slab.h> +#include <linux/input.h> +#include <linux/init.h> +#include <linux/serio.h> +#include <linux/time.h> +#include <linux/platform_device.h> +#include <linux/miscdevice.h> +#include <linux/clk.h> +#include <linux/mutex.h> +#include <linux/vmalloc.h> +#include <linux/delay.h> +#include <linux/sched.h> +#include <linux/dma-mapping.h> +#include <linux/io.h> +#include <linux/irq.h> +#include <linux/uaccess.h> + +#ifdef CONFIG_HAS_EARLYSUSPEND +#include <linux/earlysuspend.h> +#endif + +#if defined(CONFIG_S5P_MEM_CMA) +#include <linux/cma.h> +#elif defined(CONFIG_S5P_MEM_BOOTMEM) +#include <mach/media.h> +#include <plat/media.h> +#endif + +#include <mach/hardware.h> +#include <mach/irqs.h> +#include <plat/cpu.h> + +#include "../audss.h" +#include "../idma.h" +#include "../srp-types.h" +#include "srp_reg.h" +#include "srp_fw.h" +#include "srp_ioctl.h" + +#define _USE_START_WITH_BUF0_ /* Start SRP after IBUF0 fill */ +#define _USE_AUTO_PAUSE_ /* Pause SRP, when two IBUF are empty */ +#define _USE_PCM_DUMP_ /* PCM snoop for Android */ +#define _USE_EOS_TIMEOUT_ /* Timeout option for EOS */ + +#if (defined CONFIG_ARCH_EXYNOS4) + #define _IMEM_MAX_ (64 * 1024) /* 64KBytes */ + #define _DMEM_MAX_ (128 * 1024) /* 128KBytes */ + #define _IBUF_SIZE_ (128 * 1024) /* 128KBytes in DRAM */ + #define _WBUF_SIZE_ (_IBUF_SIZE_ * 6) /* in DRAM */ + #define _SBUF_SIZE_ (_IBUF_SIZE_ * 6) /* in DRAM */ + #define _FWBUF_SIZE_ (4 * 1024) /* 4KBytes in F/W */ + +#ifdef CONFIG_CPU_EXYNOS4210 /* Orion */ + #define _IRAM_SIZE_ (128 * 1024) /* Total size in IRAM */ + #define _IMEM_OFFSET_ (0x00400) /* 1KB offset ok */ + + #define _OBUF_SIZE_AB_ (0x04000) /* 9Frames */ + #define _OBUF0_OFFSET_AB_ (0x10000) + #define _OBUF1_OFFSET_AB_ (_OBUF0_OFFSET_AB_ + _OBUF_SIZE_AB_) + #define _OBUF_SIZE_C_ (4608 * 2) /* 2Frames */ + #define _OBUF0_OFFSET_C_ (0x19800) + #define _OBUF1_OFFSET_C_ (0x1CC00) +#else /* Pegasus */ + #define _IRAM_SIZE_ (256 * 1024) /* Total size in IRAM */ + #define _IMEM_OFFSET_ (0x20400) /* Dummy, not used */ + + #define _OBUF_SIZE_AB_ (0x04000) /* 9Frames */ + #define _OBUF0_OFFSET_AB_ (0x31000) + #define _OBUF1_OFFSET_AB_ (_OBUF_SIZE_AB_ + _OBUF0_OFFSET_AB_) + #define _OBUF_SIZE_C_ (4608 * 2) /* 2Frames */ + #define _OBUF0_OFFSET_C_ (0x39800) + #define _OBUF1_OFFSET_C_ (0x3CC00) +#endif + + #define _VLIW_SIZE_ (128 * 1024) /* 128KBytes */ + #define _DATA_SIZE_ (128 * 1024) /* 128KBytes */ + #define _CGA_SIZE_ (36 * 1024) /* 36KBytes */ + + #define _PCM_DUMP_SIZE_ (4 * 1024) /* 4KBytes */ + #define _AM_FILTER_SIZE_ (4 * 1024) /* 4KBytes */ + + /* Reserved memory on DRAM */ + #define _BASE_MEM_SIZE_ (CONFIG_AUDIO_SAMSUNG_MEMSIZE_SRP << 10) + #define _VLIW_SIZE_MAX_ (256 * 1024) + #define _CGA_SIZE_MAX_ (64 * 1024) + #define _DATA_SIZE_MAX_ (128 * 1024) +#else + #error CONFIG_ARCH not found +#endif + +#define _BITSTREAM_SIZE_MAX_ (0x7FFFFFFF) + +#ifdef _USE_FW_ENDIAN_CONVERT_ +#define ENDIAN_CHK_CONV(VAL) \ + (((VAL >> 24) & 0x000000FF) | \ + ((VAL >> 8) & 0x0000FF00) | \ + ((VAL << 8) & 0x00FF0000) | \ + ((VAL << 24) & 0xFF000000)) +#else +#define ENDIAN_CHK_CONV(VAL) (VAL) +#endif + +#define SRP_DEV_MINOR (250) +#define SRP_CTRL_DEV_MINOR (251) + +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG +#define s5pdbg(x...) printk(KERN_INFO "SRP: " x) +#else +#define s5pdbg(x...) +#endif + +struct srp_info { + void __iomem *iram; + void __iomem *sram; + void __iomem *commbox; + + void __iomem *iram_imem; + void __iomem *obuf0; + void __iomem *obuf1; + + void __iomem *dmem; + void __iomem *icache; + void __iomem *cmem; + void __iomem *special; + + int ibuf_next; /* IBUF index for next write */ + int ibuf_empty[2]; /* Empty flag of IBUF0/1 */ +#ifdef _USE_START_WITH_BUF0_ + int ibuf_req_skip; /* IBUF req can be skipped */ +#endif + unsigned long ibuf_fill_size[2]; /* Fill size */ + unsigned long ibuf_size; /* IBUF size byte */ + unsigned long frame_size; /* 1 frame size = 1152 or 576 */ + unsigned long frame_count; /* Decoded frame counter */ + unsigned long frame_count_base; + unsigned long channel; /* Mono = 1, Stereo = 2 */ + + int is_opened; /* Running status of SRP */ + int is_running; /* Open status of SRP */ + int block_mode; /* Block Mode */ + int decoding_started; /* Decoding started flag */ + int wait_for_eos; /* Wait for End-Of-Stream */ + int stop_after_eos; /* State for Stop-after-EOS */ + int pause_request; /* Pause request from ioctl */ + int auto_paused; /* Pause by IBUF underrun */ + int restart_after_resume; /* Restart req. after resume */ +#ifdef _USE_EOS_TIMEOUT_ + int timeout_eos_enabled; /* Timeout switch during EOS */ + struct timeval timeout_eos; /* Timeout at acctual EOS */ + unsigned long timeout_read_size; /* Last READ_BITSTREAM_SIZE */ +#endif + unsigned long error_info; /* Error Information */ + unsigned long gain; /* Gain */ + unsigned long gain_subl; /* Gain sub left */ + unsigned long gain_subr; /* Gain sub right */ + int dram_in_use; /* DRAM is accessed by SRP */ + int op_mode; /* Operation mode: typeA/B/C */ + int early_suspend_entered; /* Early suspend state */ +#ifdef CONFIG_HAS_EARLYSUSPEND + struct early_suspend early_suspend; +#endif + + unsigned char *fw_code_vliw; /* VLIW */ + unsigned char *fw_code_cga; /* CGA */ + unsigned char *fw_code_cga_sa; /* CGA for SoundAlive */ + unsigned char *fw_data; /* DATA */ + int alt_fw_loaded; /* Alt-Firmware State */ + + dma_addr_t fw_mem_base; /* Base memory for FW */ + unsigned long fw_mem_base_pa; /* Physical address of base */ + unsigned long fw_code_vliw_pa; /* Physical address of VLIW */ + unsigned long fw_code_cga_pa; /* Physical address of CGA */ + unsigned long fw_code_cga_sa_pa; /* Physical address of CGA_SA */ + unsigned long fw_data_pa; /* Physical address of DATA */ + unsigned long fw_code_vliw_size; /* Size of VLIW */ + unsigned long fw_code_cga_size; /* Size of CGA */ + unsigned long fw_code_cga_sa_size; /* Size of CGA for SoundAlive */ + unsigned long fw_data_size; /* Size of DATA */ + + unsigned char *ibuf0; /* IBUF0 in DRAM */ + unsigned char *ibuf1; /* IBUF1 in DRAM */ + unsigned long ibuf0_pa; /* Physical address */ + unsigned long ibuf1_pa; /* Physical address */ + unsigned long obuf0_pa; /* Physical address */ + unsigned long obuf1_pa; /* Physical address */ + unsigned long obuf_size; /* Current OBUF size */ + unsigned long vliw_rp; /* Current VLIW address */ + unsigned char *wbuf; /* WBUF in DRAM */ + unsigned long wbuf_pa; /* Physical address */ + unsigned long wbuf_pos; /* Write pointer */ + unsigned long wbuf_fill_size; /* Total size by user write() */ + unsigned char *sbuf; /* SBUF in DRAM */ + unsigned long sbuf_pa; /* Physical address */ + unsigned long sbuf_fill_size; /* Fill size */ + + unsigned char *pcm_dump; /* PCM dump buffer in DRAM */ + unsigned long pcm_dump_pa; /* Physical address */ + unsigned long pcm_dump_enabled; /* PCM dump switch */ + unsigned long pcm_dump_idle; /* PCM dump count from SRP */ + int pcm_dump_cnt; /* PCM dump open count */ + + unsigned long effect_enabled; /* Effect enable switch */ + unsigned long effect_def; /* Effect definition */ + unsigned long effect_eq_user; /* Effect EQ user */ + unsigned long effect_speaker; /* Effect Speaker mode */ + + unsigned long force_mono_enabled; /* Force MONO enable switch */ + + unsigned char *am_filter; /* AM filter setting in DRAM */ + unsigned long am_filter_pa; /* Physical address */ + unsigned long am_filter_loaded; /* AM filter switch */ + + unsigned long sb_tablet_mode; /* SB 0:Handphone, 1:Tablet */ + void (*audss_clk_enable)(bool enable); +}; + +static struct srp_info srp; + +static DEFINE_MUTEX(rp_mutex); + +DECLARE_WAIT_QUEUE_HEAD(WaitQueue_Write); +DECLARE_WAIT_QUEUE_HEAD(WaitQueue_EOS); + +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG +struct timeval time_irq, time_write; +static char rp_fw_name[4][16] = { + "VLIW", "CGA", "CGA-SA", "DATA" +}; + +static char rp_op_level_str[][10] = {"LPA", "AFTR"}; +#endif + +int srp_get_status(int cmd) +{ + return (cmd == IS_RUNNING) ? srp.is_running : srp.is_opened; +} + +int srp_get_op_level(void) +{ + int op_lvl; + + if (srp.is_running) { +#ifdef _USE_PCM_DUMP_ + if (srp.pcm_dump_enabled) + op_lvl = 1; + else +#endif + op_lvl = srp.dram_in_use ? 1 : 0; + } else { + op_lvl = 0; + } + +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG + s5pdbg("OP level [%s]\n", rp_op_level_str[op_lvl]); +#endif + return op_lvl; +} +EXPORT_SYMBOL(srp_get_op_level); + +static void srp_set_effect_apply(void) +{ + unsigned long arm_intr_code = readl(srp.commbox + + SRP_ARM_INTERRUPT_CODE); + + writel(srp.effect_def | srp.effect_speaker, + srp.commbox + SRP_EFFECT_DEF); + writel(srp.effect_eq_user, srp.commbox + SRP_EQ_USER_DEF); + + arm_intr_code &= ~SRP_ARM_INTR_CODE_SA_ON; + arm_intr_code |= srp.effect_enabled ? SRP_ARM_INTR_CODE_SA_ON : 0; + writel(arm_intr_code, srp.commbox + SRP_ARM_INTERRUPT_CODE); +} + +static void srp_effect_trigger(void) +{ + unsigned long arm_intr_code = readl(srp.commbox + + SRP_ARM_INTERRUPT_CODE); + + writel(srp.effect_def | srp.effect_speaker, + srp.commbox + SRP_EFFECT_DEF); + writel(srp.effect_eq_user, srp.commbox + SRP_EQ_USER_DEF); + + arm_intr_code &= ~SRP_ARM_INTR_CODE_SA_ON; + arm_intr_code |= srp.effect_enabled ? SRP_ARM_INTR_CODE_SA_ON : 0; + writel(arm_intr_code, srp.commbox + SRP_ARM_INTERRUPT_CODE); +} + +static void srp_set_gain_apply(void) +{ + writel((srp.gain * srp.gain_subl) / 100, + srp.commbox + SRP_GAIN_CTRL_FACTOR_L); + writel((srp.gain * srp.gain_subr) / 100, + srp.commbox + SRP_GAIN_CTRL_FACTOR_R); +} + +static void srp_set_force_mono_apply(void) +{ + unsigned long arm_intr_code = readl(srp.commbox + + SRP_ARM_INTERRUPT_CODE); + + arm_intr_code &= ~SRP_ARM_INTR_CODE_FORCE_MONO; + arm_intr_code |= srp.force_mono_enabled + ? SRP_ARM_INTR_CODE_FORCE_MONO : 0; + writel(arm_intr_code, srp.commbox + SRP_ARM_INTERRUPT_CODE); +} + +static void srp_commbox_init(void) +{ + unsigned int reg = 0x0; + + s5pdbg("Commbox initialized\n"); + + writel(reg, srp.commbox + SRP_INTERRUPT); + writel(reg, srp.commbox + SRP_ARM_INTERRUPT_CODE); + writel(SRP_STALL, srp.commbox + SRP_PENDING); + + writel(reg, srp.commbox + SRP_FRAME_INDEX); + writel(reg, srp.commbox + SRP_EFFECT_DEF); + writel(reg, srp.commbox + SRP_EQ_USER_DEF); + + writel(srp.ibuf0_pa, + srp.commbox + SRP_BITSTREAM_BUFF_DRAM_ADDR0); + writel(srp.ibuf1_pa, + srp.commbox + SRP_BITSTREAM_BUFF_DRAM_ADDR1); + + /* Output PCM control : 16bit */ + writel(SRP_CFGR_OUTPUT_PCM_16BIT, srp.commbox + SRP_CFGR); + /* Clear VLIW address */ + writel(reg, srp.special + 0x007C); + + writel(srp.fw_data_pa, srp.commbox + SRP_DATA_START_ADDR); + writel(srp.pcm_dump_pa, srp.commbox + SRP_PCM_DUMP_ADDR); + writel(srp.fw_code_cga_pa, srp.commbox + SRP_CONF_START_ADDR); + writel(srp.fw_code_cga_sa_pa, srp.commbox + SRP_LOAD_CGA_SA_ADDR); + writel(srp.am_filter_pa, srp.commbox + SRP_INFORMATION); + + srp_set_effect_apply(); + srp_set_gain_apply(); + srp_set_force_mono_apply(); +} + +static void srp_commbox_deinit(void) +{ + unsigned int reg = 0x0; + + s5pdbg("Commbox deinitialized\n"); + + /* Reset value */ + writel(SRP_STALL, srp.commbox + SRP_PENDING); + writel(reg, srp.commbox + SRP_INTERRUPT); + + /* Clear VLIW address */ + writel(reg, srp.special + 0x007C); +} + +static void srp_fw_download(void) +{ + unsigned long n; + unsigned long *pval; + unsigned int reg = 0x0; + +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG + struct timeval begin, end; + + do_gettimeofday(&begin); +#endif + + /* Fill ICACHE with first 64KB area : ARM access I$ */ + pval = (unsigned long *)srp.fw_code_vliw; + for (n = 0; n < 0x10000; n += 4, pval++) + writel(ENDIAN_CHK_CONV(*pval), srp.icache + n); + + reg = readl(srp.commbox + SRP_CFGR); + reg |= (SRP_CFGR_BOOT_INST_INT_CC | /* Fetchs instruction from I$ */ + SRP_CFGR_USE_ICACHE_MEM | /* SRP can access I$ */ + SRP_CFGR_FLOW_CTRL_ON); /* Flow control on */ + + /* SRP use i2s interrupt by wake-up source */ + if (srp.op_mode == SRP_ARM_INTR_CODE_ULP_BTYPE) + reg |= SRP_CFGR_USE_I2S_INTR; + else + reg |= SRP_CFGR_NOTUSE_I2S_INTR; + + writel(reg, srp.commbox + SRP_CFGR); + + /* Copy VLIW code to iRAM (Operation mode C) */ + if (srp.op_mode == SRP_ARM_INTR_CODE_ULP_CTYPE) { + pval = (unsigned long *)srp.fw_code_vliw; + for (n = 0; n < srp.fw_code_vliw_size; n += 4, pval++) + writel(ENDIAN_CHK_CONV(*pval), srp.iram_imem + n); + } + +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG + do_gettimeofday(&end); + + s5pdbg("Firmware Download Time : %lu.%06lu seconds.\n", + end.tv_sec - begin.tv_sec, end.tv_usec - begin.tv_usec); +#endif +} + +static void srp_set_default_fw(void) +{ + /* Initialize Commbox & default parameters */ + srp_commbox_init(); + + /* Download default Firmware */ + srp_fw_download(); +} + +static void srp_flush_ibuf(void) +{ + memset(srp.ibuf0, 0xFF, srp.ibuf_size); + memset(srp.ibuf1, 0xFF, srp.ibuf_size); + + /* Next IBUF is IBUF0 */ + srp.ibuf_next = 0; + srp.ibuf_empty[0] = 1; + srp.ibuf_empty[1] = 1; + srp.ibuf_fill_size[0] = 0; + srp.ibuf_fill_size[1] = 0; +#ifdef _USE_START_WITH_BUF0_ + srp.ibuf_req_skip = 1; +#endif + srp.wbuf_pos = 0; + srp.wbuf_fill_size = 0; +} + +static void srp_flush_obuf(void) +{ + int n; + + if (srp.obuf_size) { + for (n = 0; n < srp.obuf_size; n += 4) { + writel(0, srp.obuf0 + n); + writel(0, srp.obuf1 + n); + } + } +} + +static void srp_reset_frame_counter(void) +{ + srp.frame_count = 0; + srp.frame_count_base = 0; +} + +static unsigned long srp_get_frame_counter(void) +{ + unsigned long val; + + val = readl(srp.commbox + SRP_FRAME_INDEX); + srp.frame_count = srp.frame_count_base + val; + + return srp.frame_count; +} + +static void srp_check_stream_info(void) +{ + if (!srp.channel) { + srp.channel = readl(srp.commbox + + SRP_ARM_INTERRUPT_CODE); + srp.channel >>= SRP_ARM_INTR_CODE_CHINF_SHIFT; + srp.channel &= SRP_ARM_INTR_CODE_CHINF_MASK; + if (srp.channel) + s5pdbg("Channel = %lu\n", srp.channel); + } + + if (!srp.frame_size) { + switch (readl(srp.commbox + + SRP_ARM_INTERRUPT_CODE) + & SRP_ARM_INTR_CODE_FRAME_MASK) { + case SRP_ARM_INTR_CODE_FRAME_1152: + srp.frame_size = 1152; + break; + case SRP_ARM_INTR_CODE_FRAME_1024: + srp.frame_size = 1024; + break; + case SRP_ARM_INTR_CODE_FRAME_576: + srp.frame_size = 576; + break; + case SRP_ARM_INTR_CODE_FRAME_384: + srp.frame_size = 384; + break; + default: + srp.frame_size = 0; + break; + } + if (srp.frame_size) + s5pdbg("Frame size = %lu\n", srp.frame_size); + } +} + +static void srp_reset(void) +{ + unsigned int reg = 0x0; + + wake_up_interruptible(&WaitQueue_Write); + + writel(SRP_STALL, srp.commbox + SRP_PENDING); + + /* Operation mode (A/B/C) & PCM dump & AM filter load & SB tablet mode */ + writel((srp.pcm_dump_enabled ? SRP_ARM_INTR_CODE_PCM_DUMP_ON : 0) | + (srp.am_filter_loaded ? SRP_ARM_INTR_CODE_AM_FILTER_LOAD : 0) | + (srp.sb_tablet_mode ? SRP_ARM_INTR_CODE_SB_TABLET : 0) | + srp.op_mode, srp.commbox + SRP_ARM_INTERRUPT_CODE); + + writel(srp.vliw_rp, srp.commbox + SRP_CODE_START_ADDR); + writel(srp.obuf0_pa, srp.commbox + SRP_PCM_BUFF0); + writel(srp.obuf1_pa, srp.commbox + SRP_PCM_BUFF1); + writel(srp.obuf_size >> 2, srp.commbox + SRP_PCM_BUFF_SIZE); + + writel(reg, srp.commbox + SRP_FRAME_INDEX); + writel(reg, srp.commbox + SRP_READ_BITSTREAM_SIZE); + writel(srp.ibuf_size, srp.commbox + SRP_BITSTREAM_BUFF_DRAM_SIZE); + writel(_BITSTREAM_SIZE_MAX_, srp.commbox + SRP_BITSTREAM_SIZE); + srp_set_effect_apply(); + srp_set_force_mono_apply(); + + /* RESET */ + writel(reg, srp.commbox + SRP_CONT); + writel(reg, srp.commbox + SRP_INTERRUPT); + + /* VLIW address should be set after rp reset */ + writel(srp.vliw_rp, srp.special + 0x007C); + + /* Clear Error Info */ + srp.error_info = 0; + /* Store Total Count */ + srp.frame_count_base = srp.frame_count; + srp.wait_for_eos = 0; + srp.stop_after_eos = 0; + srp.pause_request = 0; + srp.auto_paused = 0; + srp.decoding_started = 0; + srp.dram_in_use = 0; + srp.pcm_dump_idle = 0; +#ifdef _USE_EOS_TIMEOUT_ + srp.timeout_eos_enabled = 0; + srp.timeout_read_size = _BITSTREAM_SIZE_MAX_; +#endif +} + +static void srp_pause(void) +{ + unsigned long arm_intr_code = readl(srp.commbox + SRP_ARM_INTERRUPT_CODE); + + arm_intr_code |= SRP_ARM_INTR_CODE_PAUSE_REQ; + writel(arm_intr_code, srp.commbox + SRP_ARM_INTERRUPT_CODE); +} + +static void srp_pause_request(void) +{ + int n; + unsigned long arm_intr_code = readl(srp.commbox + + SRP_ARM_INTERRUPT_CODE); + + s5pdbg("Pause requsted\n"); + if (!srp.is_running) { + s5pdbg("Pause ignored\n"); + return; + } + + arm_intr_code |= SRP_ARM_INTR_CODE_PAUSE_REQ; + writel(arm_intr_code, srp.commbox + SRP_ARM_INTERRUPT_CODE); + + for (n = 0; n < 100; n++) { + if (readl(srp.commbox + SRP_ARM_INTERRUPT_CODE) & + SRP_ARM_INTR_CODE_PAUSE_STA) + break; + msleep_interruptible(10); + } + srp.is_running = 0; + s5pdbg("Pause done\n"); +} + +static void srp_continue(void) +{ + unsigned long arm_intr_code = readl(srp.commbox + + SRP_ARM_INTERRUPT_CODE); + + arm_intr_code &= ~(SRP_ARM_INTR_CODE_PAUSE_REQ | + SRP_ARM_INTR_CODE_PAUSE_STA); + writel(arm_intr_code, srp.commbox + SRP_ARM_INTERRUPT_CODE); +} + +static void srp_stop(void) +{ + writel(SRP_STALL, srp.commbox + SRP_PENDING); + idma_stop(); + srp_flush_obuf(); + srp.pause_request = 0; +} + +#ifdef _USE_PCM_DUMP_ +static void srp_set_pcm_dump(int on) +{ + unsigned long arm_intr_code; + + if (srp.pcm_dump_enabled != on) { + s5pdbg("PCM Dump [%s]\n", on ? "ON" : "OFF"); + arm_intr_code = readl(srp.commbox + SRP_ARM_INTERRUPT_CODE); + + if (on) + arm_intr_code |= SRP_ARM_INTR_CODE_PCM_DUMP_ON; + else + arm_intr_code &= ~SRP_ARM_INTR_CODE_PCM_DUMP_ON; + + srp.pcm_dump_enabled = on; + writel(arm_intr_code, srp.commbox + SRP_ARM_INTERRUPT_CODE); + + /* Clear dump buffer */ + if (!srp.pcm_dump_enabled) + memset(srp.pcm_dump, 0, _PCM_DUMP_SIZE_); + } +} +#endif + +static void srp_init_op_mode(void) +{ + if (soc_is_exynos4210()) + srp.op_mode = SRP_ARM_INTR_CODE_ULP_CTYPE; + else + srp.op_mode = SRP_ARM_INTR_CODE_ULP_BTYPE; + + if (srp.op_mode == SRP_ARM_INTR_CODE_ULP_CTYPE) { + srp.vliw_rp = SRP_IRAM_BASE + _IMEM_OFFSET_; + srp.obuf0_pa = SRP_IRAM_BASE + _OBUF0_OFFSET_C_; + srp.obuf1_pa = SRP_IRAM_BASE + _OBUF1_OFFSET_C_; + srp.obuf0 = srp.iram + _OBUF0_OFFSET_C_; + srp.obuf1 = srp.iram + _OBUF1_OFFSET_C_; + srp.obuf_size = _OBUF_SIZE_C_; + } else { + srp.vliw_rp = srp.fw_code_vliw_pa; + srp.obuf0_pa = SRP_IRAM_BASE + _OBUF0_OFFSET_AB_; + srp.obuf1_pa = SRP_IRAM_BASE + _OBUF1_OFFSET_AB_; + srp.obuf0 = srp.iram + _OBUF0_OFFSET_AB_; + srp.obuf1 = srp.iram + _OBUF1_OFFSET_AB_; + srp.obuf_size = _OBUF_SIZE_AB_; + } +} + +#ifdef _USE_EOS_TIMEOUT_ +static void srp_setup_timeout_eos(void) +{ + unsigned long remaining_bytes; + unsigned long remaining_msec; + + srp.timeout_eos_enabled = 1; + srp.timeout_read_size = readl(srp.commbox + SRP_READ_BITSTREAM_SIZE); + + remaining_bytes = readl(srp.commbox + SRP_BITSTREAM_SIZE) + - srp.timeout_read_size; + + if (remaining_bytes > (srp.ibuf_size * 3)) + remaining_bytes = srp.ibuf_size * 3; + + remaining_bytes += _FWBUF_SIZE_; + + /* 32kbps at worst */ + remaining_msec = remaining_bytes * 1000 / 4096; + remaining_msec += (srp.obuf_size * 2) * 1000 / 44100 / 4; + + do_gettimeofday(&srp.timeout_eos); + srp.timeout_eos.tv_sec += remaining_msec / 1000; + srp.timeout_eos.tv_usec += (remaining_msec % 1000) * 1000; + if (srp.timeout_eos.tv_usec >= 1000000) { + srp.timeout_eos.tv_sec++; + srp.timeout_eos.tv_usec -= 1000000; + } +} + +static int srp_is_timeout_eos(void) +{ + struct timeval time_now; + + do_gettimeofday(&time_now); + if ((time_now.tv_sec > srp.timeout_eos.tv_sec) || + ((time_now.tv_sec == srp.timeout_eos.tv_sec) && + (time_now.tv_usec > srp.timeout_eos.tv_usec))) { + printk(KERN_INFO "EOS Timeout at %lu.%06lu seconds.\n", + time_now.tv_sec, time_now.tv_usec); + return 1; + } + + return 0; +} +#endif + +static void srp_fill_ibuf(void) +{ + unsigned long fill_size; + + if (!srp.wbuf_pos) /* wbuf empty? */ + return; + + if (srp.wbuf_pos >= srp.ibuf_size) { + fill_size = srp.ibuf_size; + srp.wbuf_pos -= fill_size; + } else { + fill_size = srp.wbuf_pos; + memset(&srp.wbuf[fill_size], 0xFF, srp.ibuf_size - fill_size); + srp.wbuf_pos = 0; + } + + if (srp.ibuf_next == 0) { + memcpy(srp.sbuf, srp.ibuf0, srp.ibuf_size); + memcpy(srp.ibuf0, srp.wbuf, srp.ibuf_size); + s5pdbg("Fill IBUF0 (%lu)\n", fill_size); + srp.ibuf_empty[0] = 0; + srp.ibuf_next = 1; + srp.sbuf_fill_size = srp.ibuf_fill_size[0]; + srp.ibuf_fill_size[0] = srp.ibuf_fill_size[1] + fill_size; + } else { + memcpy(srp.sbuf, srp.ibuf1, srp.ibuf_size); + memcpy(srp.ibuf1, srp.wbuf, srp.ibuf_size); + s5pdbg("Fill IBUF1 (%lu)\n", fill_size); + srp.ibuf_empty[1] = 0; + srp.ibuf_next = 0; + srp.sbuf_fill_size = srp.ibuf_fill_size[1]; + srp.ibuf_fill_size[1] = srp.ibuf_fill_size[0] + fill_size; + } + + if (srp.wbuf_pos) + memcpy(srp.wbuf, &srp.wbuf[srp.ibuf_size], srp.wbuf_pos); +} + +static void srp_set_stream_size(void) +{ + /* Leave stream size max, if data is available */ + if (srp.wbuf_pos) + return; + + writel(srp.wbuf_fill_size, srp.commbox + SRP_BITSTREAM_SIZE); + +#ifdef _USE_EOS_TIMEOUT_ + srp_setup_timeout_eos(); +#endif +} + +#ifdef _USE_POSTPROCESS_SKIP_TEST_ +struct timeval time_open, time_release; +#endif +static int srp_open(struct inode *inode, struct file *file) +{ + mutex_lock(&rp_mutex); + if (srp.is_opened) { + s5pdbg("srp_open() - SRP is already opened.\n"); + mutex_unlock(&rp_mutex); + return -1; + } +#ifdef _USE_POSTPROCESS_SKIP_TEST_ + do_gettimeofday(&time_open); +#endif + srp.is_opened = 1; + mutex_unlock(&rp_mutex); + + srp.audss_clk_enable(true); + + if (!(file->f_flags & O_NONBLOCK)) { + s5pdbg("srp_open() - Block Mode\n"); + srp.block_mode = 1; + } else { + s5pdbg("srp_open() - NonBlock Mode\n"); + srp.block_mode = 0; + } + + srp.channel = 0; + srp.frame_size = 0; + srp_reset_frame_counter(); + srp_set_default_fw(); + + return 0; +} + +static int srp_release(struct inode *inode, struct file *file) +{ + s5pdbg("srp_release()\n"); + + /* Still running? */ + if (srp.is_running) { + s5pdbg("Stop (release)\n"); + srp_stop(); + srp.is_running = 0; + srp.decoding_started = 0; + } + + /* Reset commbox */ + srp_commbox_deinit(); + srp.is_opened = 0; + +#ifdef _USE_POSTPROCESS_SKIP_TEST_ + do_gettimeofday(&time_release); + printk(KERN_INFO "SRP: Usage period : %lu.%06lu seconds.\n", + time_release.tv_sec - time_open.tv_sec, + time_release.tv_usec - time_open.tv_usec); +#endif + + return 0; +} + +static ssize_t srp_write(struct file *file, const char *buffer, + size_t size, loff_t *pos) +{ + unsigned long frame_idx; + + s5pdbg("srp_write(%d bytes)\n", size); + + mutex_lock(&rp_mutex); + if (srp.decoding_started && + (!srp.is_running || srp.auto_paused)) { + s5pdbg("Resume SRP\n"); + srp_flush_obuf(); + srp_continue(); + srp.is_running = 1; + srp.auto_paused = 0; + } + mutex_unlock(&rp_mutex); + + if (srp.wbuf_pos > srp.ibuf_size * 4) { + printk(KERN_ERR "SRP: wbuf_pos is full (0x%08lX), frame(0x%08X)\n", + srp.wbuf_pos, readl(srp.commbox + SRP_FRAME_INDEX)); + return 0; + } else if (size > srp.ibuf_size) { + printk(KERN_ERR "SRP: wr size error (0x%08X)\n", size); + return -EFAULT; + } else { + if (copy_from_user(&srp.wbuf[srp.wbuf_pos], buffer, size)) + return -EFAULT; + } + + srp.wbuf_pos += size; + srp.wbuf_fill_size += size; + if (srp.wbuf_pos < srp.ibuf_size) { + frame_idx = readl(srp.commbox + SRP_FRAME_INDEX); + while (!srp.early_suspend_entered && + srp.decoding_started && srp.is_running) { + if (readl(srp.commbox + SRP_READ_BITSTREAM_SIZE) + + srp.ibuf_size * 2 >= srp.wbuf_fill_size) + break; + if (readl(srp.commbox + SRP_FRAME_INDEX) + > frame_idx + 2) + break; + msleep_interruptible(2); + } + + return size; + } + + /* IBUF not available */ + if (!srp.ibuf_empty[srp.ibuf_next]) { + if (file->f_flags & O_NONBLOCK) + return -1; /* return Error at NonBlock mode */ + + /* Sleep until IBUF empty interrupt */ + s5pdbg("srp_write() enter to sleep until IBUF empty INT\n"); + interruptible_sleep_on_timeout(&WaitQueue_Write, HZ / 2); + s5pdbg("srp_write() wake up\n"); + /* not ready? */ + if (!srp.ibuf_empty[srp.ibuf_next]) + return size; + } + + mutex_lock(&rp_mutex); + srp_fill_ibuf(); + +#ifndef _USE_START_WITH_BUF0_ + if (!srp.ibuf_empty[0] && !srp.ibuf_empty[1]) { +#endif + if (!srp.decoding_started) { + s5pdbg("Start SRP decoding!!\n"); + writel(SRP_RUN, srp.commbox + SRP_PENDING); + srp.is_running = 1; + srp.decoding_started = 1; + srp.restart_after_resume = 0; + } +#ifndef _USE_START_WITH_BUF0_ + } +#endif + +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG + do_gettimeofday(&time_write); + s5pdbg("IRQ to write-func Time : %lu.%06lu seconds.\n", + time_write.tv_sec - time_irq.tv_sec, + time_write.tv_usec - time_irq.tv_usec); +#endif + mutex_unlock(&rp_mutex); + + /* SRP Decoding Error occurred? */ + if (srp.error_info) + return -1; + + return size; +} + +static long srp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned long val; + long ret_val = 0; + + s5pdbg("srp_ioctl(cmd:: %08X)\n", cmd); + + mutex_lock(&rp_mutex); + + switch (cmd) { + case SRP_INIT: + val = arg; + if ((val >= 4*1024) && (val <= _IBUF_SIZE_)) { + s5pdbg("Init, IBUF size [%ld], OBUF size [%ld]\n", + val, srp.obuf_size); + srp.ibuf_size = val; + srp_flush_ibuf(); + srp_reset(); + srp.is_running = 0; + } else { + s5pdbg("Init error, IBUF size [%ld]\n", val); + ret_val = -1; + } + break; + + case SRP_DEINIT: + s5pdbg("Deinit\n"); + writel(SRP_STALL, srp.commbox + SRP_PENDING); + srp.is_running = 0; + break; + + case SRP_PAUSE: + s5pdbg("Pause\n"); +#ifdef _USE_EOS_TIMEOUT_ + srp.timeout_eos_enabled = 0; +#endif + srp_pause_request(); + break; + + case SRP_STOP: + s5pdbg("Stop\n"); + srp_stop(); + srp.is_running = 0; + srp.decoding_started = 0; + break; + + case SRP_FLUSH: + /* Do not change srp.is_running state during flush */ + s5pdbg("Flush\n"); + srp_stop(); + srp_flush_ibuf(); + srp_set_default_fw(); + srp_reset(); + break; + + case SRP_SEND_EOS: + s5pdbg("Send EOS\n"); + /* No data? */ + if (srp.wbuf_fill_size == 0) { + srp.stop_after_eos = 1; + } else if (srp.wbuf_fill_size < srp.ibuf_size * 2) { + srp_fill_ibuf(); /* Fill IBUF0 */ +#ifdef _USE_START_WITH_BUF0_ + srp.ibuf_req_skip = 0; +#else + if (srp.ibuf_empty[srp.ibuf_next]) + srp_fill_ibuf(); /* Fill IBUF1 */ +#endif + srp_set_stream_size(); + s5pdbg("Start SRP decoding!!\n"); + writel(SRP_RUN, srp.commbox + SRP_PENDING); + srp.is_running = 1; + srp.wait_for_eos = 1; + srp.decoding_started = 1; + } else if (srp.ibuf_empty[srp.ibuf_next]) { + srp_fill_ibuf(); /* Last data */ + srp_set_stream_size(); + srp.wait_for_eos = 1; + } else { + srp.wait_for_eos = 1; + } +#ifdef _USE_EOS_TIMEOUT_ + printk(KERN_INFO "S5P_RP: Send EOS with timeout\n"); + srp_setup_timeout_eos(); +#endif + break; + + case SRP_RESUME_EOS: + s5pdbg("Resume after EOS pause\n"); + srp_flush_obuf(); + if (srp.restart_after_resume) { + srp_fill_ibuf(); /* Fill IBUF0 */ +#ifdef _USE_START_WITH_BUF0_ + srp.ibuf_req_skip = 0; +#else + srp_fill_ibuf(); /* Fill IBUF1 */ +#endif + srp_set_stream_size(); + s5pdbg("Restart RP decoding!!\n"); + writel(SRP_RUN, srp.commbox + SRP_PENDING); + srp.is_running = 1; + srp.wait_for_eos = 1; + srp.decoding_started = 1; + srp.restart_after_resume = 0; + } else { + srp_continue(); + srp.is_running = 1; + srp.auto_paused = 0; + } +#ifdef _USE_EOS_TIMEOUT_ + srp_setup_timeout_eos(); +#endif + break; + + case SRP_STOP_EOS_STATE: + val = srp.stop_after_eos; +#ifdef _USE_EOS_TIMEOUT_ + if (srp.wait_for_eos && srp.timeout_eos_enabled) { + if (srp_is_timeout_eos()) { + srp.stop_after_eos = 1; + val = 1; + } else if (readl(srp.commbox + SRP_READ_BITSTREAM_SIZE) + != srp.timeout_read_size) { + /* update timeout */ + srp_setup_timeout_eos(); + } + } +#endif + s5pdbg("SRP Stop [%s]\n", val == 1 ? "ON" : "OFF"); + if (val) { + printk(KERN_INFO "SRP: Stop at EOS [0x%08lX:0x%08X]\n", + srp.wbuf_fill_size, + readl(srp.commbox + SRP_READ_BITSTREAM_SIZE)); + } + ret_val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + break; + + case SRP_PENDING_STATE: + val = readl(srp.commbox + SRP_PENDING); + s5pdbg("SRP Pending [%s]\n", val == 1 ? "ON" : "OFF"); + ret_val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + break; + + case SRP_ERROR_STATE: + s5pdbg("Error Info [%08lX]\n", srp.error_info); + ret_val = copy_to_user((unsigned long *)arg, + &srp.error_info, sizeof(unsigned long)); + srp.error_info = 0; + break; + + case SRP_DECODED_FRAME_NO: + val = srp_get_frame_counter(); + s5pdbg("Decoded Frame No [%ld]\n", val); + ret_val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + break; + + case SRP_DECODED_ONE_FRAME_SIZE: + if (srp.frame_size) { + s5pdbg("One Frame Size [%lu]\n", srp.frame_size); + ret_val = copy_to_user((unsigned long *)arg, + &srp.frame_size, sizeof(unsigned long)); + } else { + s5pdbg("Frame not decoded yet...\n"); + } + break; + + case SRP_DECODED_FRAME_SIZE: + if (srp.frame_size) { + val = srp_get_frame_counter() * srp.frame_size; + s5pdbg("Decoded Frame Size [%lu]\n", val); + ret_val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + } else { + s5pdbg("Frame not decoded yet...\n"); + } + break; + + case SRP_CHANNEL_COUNT: + if (srp.channel) { + s5pdbg("Channel Count [%lu]\n", srp.channel); + ret_val = copy_to_user((unsigned long *)arg, + &srp.channel, sizeof(unsigned long)); + } + break; + + default: + ret_val = -ENOIOCTLCMD; + break; + } + + mutex_unlock(&rp_mutex); + + return ret_val; +} + +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG +static unsigned long elapsed_usec_old; +#endif +static irqreturn_t srp_irq(int irqno, void *dev_id) +{ + int wakeup_req = 0; + int wakeupEOS_req = 0; + int pendingoff_req = 0; + unsigned long irq_code = readl(srp.commbox + SRP_INTERRUPT_CODE); + unsigned long irq_info = readl(srp.commbox + SRP_INFORMATION); + unsigned long irq_code_req; +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG + unsigned long elapsed_usec; +#endif + unsigned long read_bytes; + + read_bytes = readl(srp.commbox + SRP_READ_BITSTREAM_SIZE); + + s5pdbg("IRQ: Code [%08lX], Pending [%s], SPE [%08X], Decoded [%08lX]\n", + irq_code, readl(srp.commbox + SRP_PENDING) ? "ON" : "OFF", + readl(srp.special + 0x007C), read_bytes); + irq_code &= SRP_INTR_CODE_MASK; + irq_info &= SRP_INTR_INFO_MASK; + + if (irq_code & SRP_INTR_CODE_REQUEST) { + irq_code_req = irq_code & SRP_INTR_CODE_REQUEST_MASK; + switch (irq_code_req) { + case SRP_INTR_CODE_NOTIFY_INFO: + srp_check_stream_info(); + break; + + case SRP_INTR_CODE_IBUF_REQUEST: + case SRP_INTR_CODE_IBUF_REQUEST_ULP: + if (irq_code_req == SRP_INTR_CODE_IBUF_REQUEST_ULP) + srp.dram_in_use = 0; + else + srp.dram_in_use = 1; + + srp_check_stream_info(); +#ifdef _USE_START_WITH_BUF0_ + /* Ignoring first req */ + if (srp.ibuf_req_skip) { + srp.ibuf_req_skip = 0; + break; + } +#endif + if ((irq_code & SRP_INTR_CODE_IBUF_MASK) == + SRP_INTR_CODE_IBUF0_EMPTY) + srp.ibuf_empty[0] = 1; + else + srp.ibuf_empty[1] = 1; + + if (srp.decoding_started) { + if (srp.ibuf_empty[0] && srp.ibuf_empty[1]) { + if (srp.wait_for_eos) { + s5pdbg("Stop at EOS (buffer empty)\n"); + srp.stop_after_eos = 1; + writel(SRP_INTR_CODE_POLLINGWAIT, + srp.commbox + SRP_INTERRUPT_CODE); + return IRQ_HANDLED; +#ifdef _USE_AUTO_PAUSE_ + } else if (srp.is_running) { + s5pdbg("Auto-Pause\n"); + srp_pause(); + srp.auto_paused = 1; +#endif + } + } else { + pendingoff_req = 1; + if (srp.wait_for_eos && srp.wbuf_pos) { + srp_fill_ibuf(); + srp_set_stream_size(); + } + } + } +#ifdef CONFIG_SND_SAMSUNG_RP_DEBUG + do_gettimeofday(&time_irq); + elapsed_usec = time_irq.tv_sec * 1000000 + + time_irq.tv_usec; + s5pdbg("IRQ: IBUF empty ------- Interval [%lu.%06lu]\n", + (elapsed_usec - elapsed_usec_old) / 1000000, + (elapsed_usec - elapsed_usec_old) % 1000000); + elapsed_usec_old = elapsed_usec; +#endif + if (srp.block_mode && !srp.stop_after_eos) + wakeup_req = 1; + break; + + case SRP_INTR_CODE_ULP: + srp.dram_in_use = 0; + srp_check_stream_info(); + break; + + case SRP_INTR_CODE_DRAM_REQUEST: + if (srp.op_mode == SRP_ARM_INTR_CODE_ULP_CTYPE) { + if (srp.block_mode && !srp.stop_after_eos) + wakeup_req = 1; + } + srp.dram_in_use = 1; + break; + + case SRP_INTR_CODE_PENDING_ULP: + srp.dram_in_use = 0; + srp_check_stream_info(); + break; + + default: + break; + } + } + + if (irq_code & SRP_INTR_CODE_NOTIFY_OBUF) { + if (!srp.obuf_size) { + srp.obuf_size = readl(srp.commbox + SRP_PCM_BUFF_SIZE); + srp.obuf0_pa = readl(srp.commbox + SRP_PCM_BUFF0); + srp.obuf1_pa = readl(srp.commbox + SRP_PCM_BUFF1); + srp.obuf0 = srp.sram + (srp.obuf0_pa & 0xffff); + srp.obuf1 = srp.sram + (srp.obuf1_pa & 0xffff); + + s5pdbg("IRQ: OBUF0[PA:0x%lx], OBUF1[PA:0x%lx]\n", + srp.obuf0_pa, srp.obuf1_pa); + s5pdbg("IRQ: OBUF0[VA:0x%p], OBUF1[VA:0x%p]\n", + srp.obuf0, srp.obuf1); + s5pdbg("IRQ: OBUF[SIZE:%ld]\n", srp.obuf_size); + } + } + + if (irq_code & (SRP_INTR_CODE_PLAYDONE | SRP_INTR_CODE_ERROR)) { + s5pdbg("IRQ: Stop at EOS\n"); + s5pdbg("Total decoded: %ld frames (SRP_read:%08X)\n", + srp_get_frame_counter(), + readl(srp.commbox + SRP_READ_BITSTREAM_SIZE)); + srp.stop_after_eos = 1; + writel(SRP_INTR_CODE_POLLINGWAIT, + srp.commbox + SRP_INTERRUPT_CODE); + + return IRQ_HANDLED; + } + + if (irq_code & SRP_INTR_CODE_UART_OUTPUT) { + printk(KERN_INFO "SRP: UART Code received [0x%08X]\n", + readl(srp.commbox + SRP_UART_INFORMATION)); + pendingoff_req = 1; + } + + writel(0x00000000, srp.commbox + SRP_INTERRUPT_CODE); + writel(0x00000000, srp.commbox + SRP_INTERRUPT); + + if (pendingoff_req) + writel(SRP_RUN, srp.commbox + SRP_PENDING); + + if (wakeup_req) + wake_up_interruptible(&WaitQueue_Write); + + if (wakeupEOS_req) + wake_up_interruptible(&WaitQueue_EOS); + + return IRQ_HANDLED; +} + +static long srp_ctrl_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + long ret_val = 0; + unsigned long val, index, size; + + switch (cmd) { + case SRP_CTRL_SET_GAIN: + s5pdbg("CTRL: Gain [0x%08lX]\n", arg); + srp.gain = arg; + + /* Change gain immediately */ + if (srp.is_opened) + srp_set_gain_apply(); + break; + + case SRP_CTRL_SET_GAIN_SUB_LR: + srp.gain_subl = arg >> 16; + if (srp.gain_subl > 100) + srp.gain_subl = 100; + + srp.gain_subr = arg & 0xFFFF; + if (srp.gain_subr > 100) + srp.gain_subr = 100; + + s5pdbg("CTRL: Gain sub [L:%03ld, R:%03ld]\n", + srp.gain_subl, srp.gain_subr); + + /* Change gain immediately */ + if (srp.is_opened) + srp_set_gain_apply(); + break; + + case SRP_CTRL_GET_PCM_1KFRAME: + s5pdbg("CTRL: Get PCM 1K Frame\n"); + ret_val = copy_to_user((unsigned long *)arg, + srp.pcm_dump, _PCM_DUMP_SIZE_); + break; + +#ifdef _USE_PCM_DUMP_ + case SRP_CTRL_PCM_DUMP_OP: + if (arg == 1 && srp.early_suspend_entered == 0) { + srp.pcm_dump_cnt++; + if (srp.pcm_dump_cnt == 1) + srp_set_pcm_dump(1); + } else { + srp.pcm_dump_cnt--; + if (srp.pcm_dump_cnt <= 0) { + srp.pcm_dump_cnt = 0; + srp_set_pcm_dump(0); + } + } + break; +#endif + + case SRP_CTRL_EFFECT_ENABLE: + arg &= 0x01; + s5pdbg("CTRL: Effect switch %s\n", arg ? "ON" : "OFF"); + if (srp.effect_enabled != arg) { + srp.effect_enabled = arg; + if (srp.is_running) + srp_effect_trigger(); + else if (srp.is_opened) + srp_set_effect_apply(); + } + break; + + case SRP_CTRL_EFFECT_DEF: + s5pdbg("CTRL: Effect define\n"); + /* Mask Speaker mode */ + srp.effect_def = arg & 0xFFFFFFFE; + if (srp.is_running) { + writel(srp.effect_def | srp.effect_speaker, + srp.commbox + SRP_EFFECT_DEF); + s5pdbg("Effect [%s], EFFECT_DEF = 0x%08lX, EQ_USR = 0x%08lX\n", + srp.effect_enabled ? "ON" : "OFF", + srp.effect_def | srp.effect_speaker, + srp.effect_eq_user); + } else if (srp.is_opened) { + srp_set_effect_apply(); + } + break; + + case SRP_CTRL_EFFECT_EQ_USR: + s5pdbg("CTRL: Effect EQ user\n"); + srp.effect_eq_user = arg; + if (srp.is_running) { + writel(srp.effect_eq_user, + srp.commbox + SRP_EQ_USER_DEF); + } else if (srp.is_opened) { + srp_set_effect_apply(); + } + break; + + case SRP_CTRL_EFFECT_SPEAKER: + arg &= 0x01; + s5pdbg("CTRL: Effect Speaker mode %s\n", arg ? "ON" : "OFF"); + if (srp.effect_speaker != arg) { + srp.effect_speaker = arg; + if (srp.is_running) + srp_effect_trigger(); + else if (srp.is_opened) + srp_set_effect_apply(); + } + break; + + case SRP_CTRL_FORCE_MONO: + arg &= 0x01; + s5pdbg("CTRL: Force Mono mode %s\n", arg ? "ON" : "OFF"); + if (srp.force_mono_enabled != arg) { + srp.force_mono_enabled = arg; + if (srp.is_opened) + srp_set_force_mono_apply(); + } + break; + + case SRP_CTRL_AMFILTER_LOAD: + srp.am_filter_loaded = 1; + s5pdbg("CTRL: AM Filter Loading\n"); + ret_val = copy_from_user(srp.am_filter, (void *)arg, 60); + break; + + case SRP_CTRL_SB_TABLET: + srp.sb_tablet_mode = arg; + s5pdbg("CTRL: SB Mode %s\n", arg ? "Tablet" : "Handphone"); + break; + + case SRP_CTRL_IS_OPENED: + val = (unsigned long)srp.is_opened; + s5pdbg("CTRL: SRP is [%s]\n", + val == 1 ? "Opened" : "Not Opened"); + ret_val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + break; + + case SRP_CTRL_IS_RUNNING: + val = (unsigned long)srp.is_running; + s5pdbg("CTRL: SRP is [%s]\n", val == 1 ? "Running" : "Pending"); + ret_val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + break; + + case SRP_CTRL_GET_OP_LEVEL: + val = (unsigned long)srp_get_op_level(); + s5pdbg("CTRL: SRP op-level [%s]\n", rp_op_level_str[val]); + ret_val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + break; + + case SRP_CTRL_IS_PCM_DUMP: + val = (unsigned long)srp.pcm_dump_enabled; + ret_val = copy_to_user((unsigned long *)arg, &val, + sizeof(unsigned long)); + break; + + case SRP_CTRL_IS_FORCE_MONO: + val = (unsigned long)srp.force_mono_enabled; + ret_val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + break; + + case SRP_CTRL_ALTFW_STATE: + /* Alt-Firmware State */ + val = srp.alt_fw_loaded; + s5pdbg("CTRL: Alt-Firmware %sLoaded\n", val ? "" : "Not "); + ret_val = copy_to_user((unsigned long *)arg, + &val, sizeof(unsigned long)); + break; + + /* Alt-Firmware Loading */ + case SRP_CTRL_ALTFW_LOAD: + srp.alt_fw_loaded = 1; + index = *(unsigned long *)(arg + (128 * 1024)); + size = *(unsigned long *)(arg + (129 * 1024)); + s5pdbg("CTRL: Alt-Firmware Loading: %s (%lu)\n", + rp_fw_name[index], size); + switch (index) { + case SRP_FW_VLIW: + srp.fw_code_vliw_size = size; + ret_val = copy_from_user(srp.fw_code_vliw, + (unsigned long *)arg, size); + break; + case SRP_FW_CGA: + srp.fw_code_cga_size = size; + ret_val = copy_from_user(srp.fw_code_cga, + (unsigned long *)arg, size); + break; + case SRP_FW_CGA_SA: + srp.fw_code_cga_sa_size = size; + ret_val = copy_from_user(srp.fw_code_cga_sa, + (unsigned long *)arg, size); + break; + case SRP_FW_DATA: + srp.fw_data_size = size; + ret_val = copy_from_user(srp.fw_data, + (unsigned long *)arg, size); + break; + default: + break; + } + break; + + default: + ret_val = -ENOIOCTLCMD; + break; + } + + return ret_val; +} + +static int srp_prepare_fw_buff(struct device *dev) +{ +#if defined(CONFIG_S5P_MEM_CMA) || defined(CONFIG_S5P_MEM_BOOTMEM) + unsigned long mem_paddr; + +#ifdef CONFIG_S5P_MEM_CMA + struct cma_info mem_info; + int err; + + err = cma_info(&mem_info, dev, 0); + if (err) { + s5pdbg("Failed to get cma info\n"); + return -ENOMEM; + } + s5pdbg("cma_info\n\tstart_addr : 0x%08X\n\tend_addr : 0x%08X" + "\n\ttotal_size : 0x%08X\n\tfree_size : 0x%08X\n", + mem_info.lower_bound, mem_info.upper_bound, + mem_info.total_size, mem_info.free_size); + s5pdbg("Allocate memory %dbytes from CMA\n", _BASE_MEM_SIZE_); + srp.fw_mem_base = cma_alloc(dev, "srp", _BASE_MEM_SIZE_, 0); +#else /* for CONFIG_S5P_MEM_BOOTMEM */ + s5pdbg("Allocate memory from BOOTMEM\n"); + srp.fw_mem_base = s5p_get_media_memory_bank(S5P_MDEV_SRP, 0); +#endif + srp.fw_mem_base_pa = (unsigned long)srp.fw_mem_base; + s5pdbg("fw_mem_base_pa = 0x%08lX\n", srp.fw_mem_base_pa); + mem_paddr = srp.fw_mem_base_pa; + + if (IS_ERR_VALUE(srp.fw_mem_base_pa)) + return -ENOMEM; + + srp.fw_code_vliw_pa = mem_paddr; + srp.fw_code_vliw = phys_to_virt(srp.fw_code_vliw_pa); + mem_paddr += _VLIW_SIZE_MAX_; + + srp.fw_code_cga_pa = mem_paddr; + srp.fw_code_cga = phys_to_virt(srp.fw_code_cga_pa); + mem_paddr += _CGA_SIZE_MAX_; + srp.fw_code_cga_sa_pa = mem_paddr; + srp.fw_code_cga_sa = phys_to_virt(srp.fw_code_cga_sa_pa); + mem_paddr += _CGA_SIZE_MAX_; + + srp.fw_data_pa = mem_paddr; + srp.fw_data = phys_to_virt(srp.fw_data_pa); + mem_paddr += _DATA_SIZE_MAX_; +#else /* No CMA or BOOTMEM? */ + + srp.fw_code_vliw = dma_alloc_writecombine(0, _VLIW_SIZE_, + (dma_addr_t *)&srp.fw_code_vliw_pa, + GFP_KERNEL); + srp.fw_code_cga = dma_alloc_writecombine(0, _CGA_SIZE_, + (dma_addr_t *)&srp.fw_code_cga_pa, + GFP_KERNEL); + srp.fw_code_cga_sa = dma_alloc_writecombine(0, _CGA_SIZE_, + (dma_addr_t *)&srp.fw_code_cga_sa_pa, + GFP_KERNEL); + srp.fw_data = dma_alloc_writecombine(0, _DATA_SIZE_, + (dma_addr_t *)&srp.fw_data_pa, + GFP_KERNEL); +#endif + + srp.fw_code_vliw_size = rp_fw_vliw_len; + srp.fw_code_cga_size = rp_fw_cga_len; + srp.fw_code_cga_sa_size = rp_fw_cga_sa_len; + srp.fw_data_size = rp_fw_data_len; + +#ifdef _USE_IBUF_ON_IRAM_ + srp.ibuf0 = srp.iram_imem + rp_fw_vliw_len; + srp.ibuf1 = srp.ibuf0 + _IBUF_SIZE_; + srp.ibuf0_pa = SRP_IRAM_BASE + _IMEM_OFFSET_ + rp_fw_vliw_len; + srp.ibuf1_pa = srp.ibuf0_pa + _IBUF_SIZE_; + + if ((_IMEM_OFFSET_ + rp_fw_vliw_len) + > (_IRAM_SIZE_ - (_IBUF_SIZE_ * 2))) { + s5pdbg(KERN_ERR "Cannot set ibuf address in iram\n"); + return -ENOMEM; + } +#else + srp.ibuf0 = dma_alloc_writecombine(0, _IBUF_SIZE_, + (dma_addr_t *)&srp.ibuf0_pa, GFP_KERNEL); + srp.ibuf1 = dma_alloc_writecombine(0, _IBUF_SIZE_, + (dma_addr_t *)&srp.ibuf1_pa, GFP_KERNEL); +#endif + srp.wbuf = dma_alloc_writecombine(0, _WBUF_SIZE_, + (dma_addr_t *)&srp.wbuf_pa, GFP_KERNEL); + srp.sbuf = dma_alloc_writecombine(0, _SBUF_SIZE_, + (dma_addr_t *)&srp.sbuf_pa, GFP_KERNEL); + srp.pcm_dump = dma_alloc_writecombine(0, _PCM_DUMP_SIZE_, + (dma_addr_t *)&srp.pcm_dump_pa, GFP_KERNEL); + srp.am_filter = dma_alloc_writecombine(0, _AM_FILTER_SIZE_, + (dma_addr_t *)&srp.am_filter_pa, GFP_KERNEL); + + srp.fw_code_vliw_size = rp_fw_vliw_len; + srp.fw_code_cga_size = rp_fw_cga_len; + srp.fw_code_cga_sa_size = rp_fw_cga_sa_len; + srp.fw_data_size = rp_fw_data_len; + + s5pdbg("VLIW, VA = 0x%08lX, PA = 0x%08lX\n", + (unsigned long)srp.fw_code_vliw, + srp.fw_code_vliw_pa); + s5pdbg("CGA, VA = 0x%08lX, PA = 0x%08lX\n", + (unsigned long)srp.fw_code_cga, + srp.fw_code_cga_pa); + s5pdbg("CGA_SA, VA = 0x%08lX, PA = 0x%08lX\n", + (unsigned long)srp.fw_code_cga_sa, + srp.fw_code_cga_sa_pa); + s5pdbg("DATA, VA = 0x%08lX, PA = 0x%08lX\n", + (unsigned long)srp.fw_data, + srp.fw_data_pa); + s5pdbg("DRAM IBUF0, VA = 0x%08lX, PA = 0x%08lX\n", + (unsigned long)srp.ibuf0, + srp.ibuf0_pa); + s5pdbg("DRAM IBUF1, VA = 0x%08lX, PA = 0x%08lX\n", + (unsigned long)srp.ibuf1, + srp.ibuf1_pa); + s5pdbg("PCM DUMP, VA = 0x%08lX, PA = 0x%08lX\n", + (unsigned long)srp.pcm_dump, + srp.pcm_dump_pa); + s5pdbg("AM FILTER, VA = 0x%08lX, PA = 0x%08lX\n", + (unsigned long)srp.am_filter, srp.am_filter_pa); + + /* Clear Firmware memory & IBUF */ + memset(srp.fw_code_vliw, 0, _VLIW_SIZE_); + memset(srp.fw_code_cga, 0, _CGA_SIZE_); + memset(srp.fw_code_cga_sa, 0, _CGA_SIZE_); + memset(srp.fw_data, 0, _DATA_SIZE_); + memset(srp.ibuf0, 0xFF, _IBUF_SIZE_); + memset(srp.ibuf1, 0xFF, _IBUF_SIZE_); + + /* Copy Firmware */ + memcpy(srp.fw_code_vliw, rp_fw_vliw, + srp.fw_code_vliw_size); + memcpy(srp.fw_code_cga, rp_fw_cga, + srp.fw_code_cga_size); + memcpy(srp.fw_code_cga_sa, rp_fw_cga_sa, + srp.fw_code_cga_sa_size); + memcpy(srp.fw_data, rp_fw_data, + srp.fw_data_size); + + /* Clear AM filter setting */ + memset(srp.am_filter, 0, _AM_FILTER_SIZE_); + + return 0; +} + +static int srp_remove_fw_buff(void) +{ +#if defined CONFIG_S5P_MEM_CMA +#elif defined CONFIG_S5P_MEM_BOOTMEM +#else /* No CMA or BOOTMEM? */ + dma_free_writecombine(0, _VLIW_SIZE_, srp.fw_code_vliw, + srp.fw_code_vliw_pa); + dma_free_writecombine(0, _CGA_SIZE_, srp.fw_code_cga, + srp.fw_code_cga_pa); + dma_free_writecombine(0, _CGA_SIZE_, srp.fw_code_cga_sa, + srp.fw_code_cga_sa_pa); + dma_free_writecombine(0, _DATA_SIZE_, srp.fw_data, + srp.fw_data_pa); +#endif +#ifdef _USE_IBUF_ON_IRAM_ + /* Nothing to do */ +#else + dma_free_writecombine(0, _IBUF_SIZE_, srp.ibuf0, srp.ibuf0_pa); + dma_free_writecombine(0, _IBUF_SIZE_, srp.ibuf1, srp.ibuf1_pa); +#endif + dma_free_writecombine(0, _WBUF_SIZE_, srp.wbuf, srp.wbuf_pa); + dma_free_writecombine(0, _SBUF_SIZE_, srp.sbuf, srp.sbuf_pa); + dma_free_writecombine(0, _AM_FILTER_SIZE_, + srp.am_filter, srp.am_filter_pa); + + srp.fw_code_vliw_pa = 0; + srp.fw_code_cga_pa = 0; + srp.fw_code_cga_sa_pa = 0; + srp.fw_data_pa = 0; + srp.ibuf0_pa = 0; + srp.ibuf1_pa = 0; + srp.wbuf_pa = 0; + srp.sbuf_pa = 0; + srp.am_filter_pa = 0; + + return 0; +} + +static const struct file_operations srp_fops = { + .owner = THIS_MODULE, + .write = srp_write, + .unlocked_ioctl = srp_ioctl, + .open = srp_open, + .release = srp_release, +}; + +static struct miscdevice srp_miscdev = { + .minor = SRP_DEV_MINOR, + .name = "srp", + .fops = &srp_fops, +}; + +static const struct file_operations srp_ctrl_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = srp_ctrl_ioctl, +}; + +static struct miscdevice srp_ctrl_miscdev = { + .minor = SRP_CTRL_DEV_MINOR, + .name = "srp_ctrl", + .fops = &srp_ctrl_fops, +}; + +#ifdef CONFIG_HAS_EARLYSUSPEND +void srp_early_suspend(struct early_suspend *h) +{ + s5pdbg("early_suspend\n"); + + srp.early_suspend_entered = 1; + if (srp.is_opened) { + if (srp.pcm_dump_cnt > 0) + srp_set_pcm_dump(0); + } +} + +void srp_late_resume(struct early_suspend *h) +{ + s5pdbg("late_resume\n"); + + srp.early_suspend_entered = 0; + + if (srp.is_opened) { + if (srp.pcm_dump_cnt > 0) + srp_set_pcm_dump(1); + } +} +#endif + +/* + * The functions for inserting/removing us as a module. + */ +static int __init srp_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + int ret; + + srp.iram = ioremap(SRP_IRAM_BASE, _IRAM_SIZE_); + if (srp.iram == NULL) { + printk(KERN_ERR "SRP: ioremap error for iram space\n"); + ret = -ENOMEM; + return ret; + } + + srp.sram = ioremap(SRP_SRAM_BASE, 0x40000); + if (srp.sram == NULL) { + printk(KERN_ERR "SRP: ioremap error for sram space\n"); + ret = -ENOMEM; + goto err1; + } + + srp.commbox = ioremap(SRP_COMMBOX_BASE, 0x0200); + if (srp.commbox == NULL) { + printk(KERN_ERR "SRP: ioremap error for sram space\n"); + ret = -ENOMEM; + goto err2; + } + + /* Hidden register */ + srp.special = ioremap(0x030F0000, 0x0100); + if (srp.special == NULL) { + printk(KERN_ERR "SRP: ioremap error for special register\n"); + ret = -ENOMEM; + goto err3; + } + + /* VLIW iRAM offset */ + srp.iram_imem = srp.iram + _IMEM_OFFSET_; + srp.dmem = srp.sram + SRP_DMEM; + srp.icache = srp.sram + SRP_ICACHE; + srp.cmem = srp.sram + SRP_CMEM; + + ret = request_irq(IRQ_AUDIO_SS, srp_irq, 0, "samsung-rp", pdev); + if (ret < 0) { + printk(KERN_ERR "SRP: Fail to claim SRP(AUDIO_SS) irq\n"); + goto err4; + } + + srp.early_suspend_entered = 0; +#ifdef CONFIG_HAS_EARLYSUSPEND + srp.early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN + 1; + srp.early_suspend.suspend = srp_early_suspend; + srp.early_suspend.resume = srp_late_resume; + register_early_suspend(&srp.early_suspend); +#endif + + /* Allocate Firmware buffer */ + ret = srp_prepare_fw_buff(dev); + if (ret < 0) { + printk(KERN_ERR "SRP: Fail to allocate memory\n"); + goto err5; + } + + /* Information for I2S driver */ + srp.is_opened = 0; + srp.is_running = 0; + /* Default C type (iRAM instruction)*/ + srp_init_op_mode(); + /* Set Default Gain to 1.0 */ + srp.gain = 1<<24; + srp.gain_subl = 100; + srp.gain_subr = 100; + + /* Operation level for idle framework */ + srp.dram_in_use = 0; + + srp.restart_after_resume = 0; + + /* PCM dump mode */ + srp.pcm_dump_enabled = 0; + srp.pcm_dump_cnt = 0; + + /* Set Sound Alive Off */ + srp.effect_def = 0; + srp.effect_eq_user = 0; + srp.effect_speaker = 1; + + /* Disable force mono */ + srp.force_mono_enabled = 0; + + /* Disable AM filter load */ + srp.am_filter_loaded = 0; + + /* Set SB Handphone mode (0:Handphone, 1:Tablet)*/ + srp.sb_tablet_mode = 0; + + /* Clear alternate Firmware */ + srp.alt_fw_loaded = 0; + + /* Clock control of Audio Subsystem */ + srp.audss_clk_enable = audss_clk_enable; + + ret = misc_register(&srp_miscdev); + if (ret) { + printk(KERN_ERR "SRP: Cannot register miscdev on minor=%d\n", + SRP_DEV_MINOR); + goto err6; + } + + ret = misc_register(&srp_ctrl_miscdev); + if (ret) { + printk(KERN_ERR "SRP: Cannot register miscdev on minor=%d\n", + SRP_CTRL_DEV_MINOR); + goto err7; + } + + printk(KERN_INFO "SRP: Driver successfully probed\n"); + + return 0; + +err7: + misc_deregister(&srp_miscdev); +err6: + srp_remove_fw_buff(); +err5: + free_irq(IRQ_AUDIO_SS, pdev); +err4: + iounmap(srp.special); +err3: + iounmap(srp.commbox); +err2: + iounmap(srp.sram); +err1: + iounmap(srp.iram); + + return ret; +} + +static int srp_remove(struct platform_device *pdev) +{ + s5pdbg("srp_remove() called !\n"); + + free_irq(IRQ_AUDIO_SS, pdev); + srp_remove_fw_buff(); + + misc_deregister(&srp_miscdev); + misc_deregister(&srp_ctrl_miscdev); + + iounmap(srp.special); + iounmap(srp.commbox); + iounmap(srp.sram); + iounmap(srp.iram); + + return 0; +} + +#ifdef CONFIG_PM + +static void srp_sbuf_fill(unsigned char *buf, unsigned long buf_size) +{ + memcpy(&srp.sbuf[srp.sbuf_fill_size], buf, buf_size); + srp.sbuf_fill_size += buf_size; + + s5pdbg("SBUF Fill (0x%08lX) Total = 0x%08lX\n", + buf_size, srp.sbuf_fill_size); +} + +static void srp_sbuf_fill_ibuf_frac(int ibuf_index) +{ + unsigned long frac; + + if (!srp.ibuf_fill_size[ibuf_index]) /* empty? */ + return; + + frac = srp.ibuf_fill_size[ibuf_index] % srp.ibuf_size; + if (ibuf_index) { + s5pdbg("Backup IBUF1\n"); + srp_sbuf_fill(srp.ibuf1, frac ? frac : srp.ibuf_size); + } else { + s5pdbg("Backup IBUF0\n"); + srp_sbuf_fill(srp.ibuf0, frac ? frac : srp.ibuf_size); + } +} + +static void srp_sbuf_fill_ibuf_skip_rp(int ibuf_index, + unsigned long rp_frac) +{ + unsigned long len; + + len = srp.ibuf_size - rp_frac; + if (ibuf_index) { + s5pdbg("Backup IBUF1\n"); + srp_sbuf_fill(&srp.ibuf1[rp_frac], len); + } else { + s5pdbg("Backup IBUF0\n"); + srp_sbuf_fill(&srp.ibuf0[rp_frac], len); + } +} + +static void srp_sbuf_fill_ibuf_frac_skip_rp(int ibuf_index, + unsigned long rp_frac) +{ + unsigned long frac, len; + + frac = srp.ibuf_fill_size[ibuf_index] % srp.ibuf_size; + len = frac ? frac - rp_frac : srp.ibuf_size - rp_frac; + if (ibuf_index) { + s5pdbg("Backup IBUF1\n"); + srp_sbuf_fill(&srp.ibuf1[rp_frac], len); + } else { + s5pdbg("Backup IBUF0\n"); + srp_sbuf_fill(&srp.ibuf0[rp_frac], len); + } +} + +static void srp_sbuf_fill_ibuf(void) +{ + unsigned long rp_read, rp_frac; + + rp_read = readl(srp.commbox + SRP_READ_BITSTREAM_SIZE); + rp_frac = rp_read % srp.ibuf_size; + + if (rp_read < srp.sbuf_fill_size) { /* SBUF */ + s5pdbg("Backup SBUF\n"); + srp.sbuf_fill_size = srp.ibuf_size - rp_frac; + memcpy(srp.sbuf, &srp.sbuf[rp_frac], srp.sbuf_fill_size); + + if (srp.ibuf_fill_size[0] < srp.ibuf_fill_size[1]) { + srp_sbuf_fill_ibuf_frac(0); + srp_sbuf_fill_ibuf_frac(1); + } else { + srp_sbuf_fill_ibuf_frac(1); + srp_sbuf_fill_ibuf_frac(0); + } + } else { + srp.sbuf_fill_size = 0; /* Clear sbuf */ + if (srp.ibuf_fill_size[0] < srp.ibuf_fill_size[1]) { + if (rp_read < srp.ibuf_fill_size[0]) { + srp_sbuf_fill_ibuf_skip_rp(0, rp_frac); + srp_sbuf_fill_ibuf_frac(1); + } else { /* Skip IBUF0 */ + srp_sbuf_fill_ibuf_frac_skip_rp(1, rp_frac); + } + } else { + if (rp_read < srp.ibuf_fill_size[1]) { + srp_sbuf_fill_ibuf_skip_rp(1, rp_frac); + srp_sbuf_fill_ibuf_frac(0); + } else { /* Skip IBUF1 */ + srp_sbuf_fill_ibuf_frac_skip_rp(0, rp_frac); + } + } + } +} + +static void srp_backup_sbuf(void) +{ + if (!srp.ibuf_fill_size[0] && !srp.ibuf_fill_size[1]) + srp.sbuf_fill_size = 0; /* Clear sbuf */ + else + srp_sbuf_fill_ibuf(); + + if (srp.wbuf_pos) { + s5pdbg("Backup WBUF\n"); + srp_sbuf_fill(srp.wbuf, srp.wbuf_pos); + } + + s5pdbg("WBUF fill_size = 0x%08lX\n", srp.wbuf_fill_size); + s5pdbg("Backup size = 0x%08lX\n", srp.sbuf_fill_size); + + if (srp.decoding_started) { + s5pdbg("restart_after_resume required\n"); + srp.restart_after_resume = 1; + } +} + +static void srp_restore_sbuf(void) +{ + if (srp.sbuf_fill_size) { + memcpy(srp.wbuf, srp.sbuf, srp.sbuf_fill_size); + srp.wbuf_pos = srp.sbuf_fill_size; + srp.wbuf_fill_size = srp.sbuf_fill_size; + } +} + +static int srp_suspend(struct platform_device *pdev, pm_message_t state) +{ + s5pdbg("suspend\n"); + + if (srp.is_opened) { + srp_backup_sbuf(); + srp.audss_clk_enable(false); + } + + return 0; +} + +static int srp_resume(struct platform_device *pdev) +{ + s5pdbg("resume\n"); + + if (srp.is_opened) { + srp.audss_clk_enable(true); + srp_set_default_fw(); + + srp_flush_ibuf(); + s5pdbg("Init, IBUF size [%ld]\n", srp.ibuf_size); + srp_reset(); + srp.is_running = 0; + + srp_restore_sbuf(); + } + + return 0; +} +#else +#define srp_suspend NULL +#define srp_resume NULL +#endif + +static struct platform_driver srp_driver = { + .probe = srp_probe, + .remove = srp_remove, + .suspend = srp_suspend, + .resume = srp_resume, + .driver = { + .owner = THIS_MODULE, + .name = "samsung-rp", + }, +}; + +static char banner[] __initdata = + KERN_INFO "Samsung SRP driver, (c) 2010 Samsung Electronics\n"; + +int __init srp_init(void) +{ + printk(banner); + + return platform_driver_register(&srp_driver); +} + +void __exit srp_exit(void) +{ + platform_driver_unregister(&srp_driver); +} + +module_init(srp_init); +module_exit(srp_exit); + +MODULE_AUTHOR("Yeongman Seo <yman.seo@samsung.com>"); +MODULE_DESCRIPTION("Samsung SRP driver"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/samsung/srp_ulp/srp_fw.c b/sound/soc/samsung/srp_ulp/srp_fw.c new file mode 100644 index 0000000..c6892e3 --- /dev/null +++ b/sound/soc/samsung/srp_ulp/srp_fw.c @@ -0,0 +1,9341 @@ +/* sound/soc/samsung/srp/srp_fw.c + * + * SRP Audio Firmware for Samsung Exynos4 + * + * Copyright (c) 2010 Samsung Electronics + * http://www.samsungsemi.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/* Exynos4 SRP Firmeware */ + +/* vliw */ +unsigned long rp_fw_vliw[] = { +0xc2fff01d,0xc300011d,0x10920740,0x10900740,0x10924741,0xd1009077,0x07800001,0x07000103, +0x07000101,0x00400202,0xf0000003,0x07000103,0xf1000003,0x07000103,0xff000003,0x07000103, +0x00528201,0x07000100,0x12828a09,0x00408a02,0x00528200,0xc1fffd2d,0x07000101,0x02928a2d, +0x00408a01,0x10900081,0xc200f8fc,0x900000f8,0x900040fd,0xd20000c0,0x009000fc,0xc20100fd, +0xc2f020f8,0x9001c01c,0x90008009,0xc32ffff8,0xc2f03008,0x0081c0fd,0x10900081,0xc200f8fc, +0x900000f8,0x900040fd,0xd200008c,0x009000fc,0xc20100fd,0xc2f024f8,0x9001c01c,0x90008009, +0xc32ffff8,0xc2f03008,0x0081c0fd,0x10900081,0xc200f8fc,0x900000f8,0x900040fd,0xd2000058, +0x009000fc,0xc20100fd,0xc2f028f8,0x9001c01c,0x90008009,0xc32ffff8,0xc2f03008,0x0081c0fd, +0x10900081,0xc200f8fc,0x900000f8,0x900040fd,0xd2000024,0x009000fc,0xc20100fd,0xc2f02cf8, +0x9001c01c,0x90008009,0xc32ffff8,0xc2f03008,0x0081c0fd,0xc32fff08,0x9000c00c,0x90010011, +0xc2f0340c,0xb8000208,0xb8003ef9,0x00510200,0xc32fff0c,0x90014015,0x10814080,0x90018018, +0x90004005,0x00118400,0x90000520,0x90004525,0x12908208,0x90008528,0x9000c52d,0x00508300, +0x90010530,0x90014535,0x00124000,0x90018538,0x9001c53d,0x00508000,0x10814580,0x90004709, +0x00508100,0x90000710,0x90008709,0x00508400,0x00113e00,0x9000c709,0x0050bf00,0xb800030c, +0x90010709,0x02818608,0x1081c760,0x90014709,0x00408600,0x90000540,0x90004545,0x10814540, +0x90008548,0x9000c54d,0xe1000108,0x90000550,0x90004555,0xc2001808,0x90008558,0x9000c55d, +0x04e0020c,0x9000001c,0x00120001,0x10808220,0x90010560,0x90014565,0x10814580,0x90018568, +0x9001c56d,0xe00000cc,0x90000570,0x90004575,0x04e0020c,0x90008578,0x9000c57d,0x10808220, +0x90010580,0x90014585,0x10814580,0x90018588,0x9001c58d,0xe000009c,0x90000590,0x90004595, +0x04e0020c,0x90008598,0x9000c59d,0x10808220,0x900105a0,0x900145a5,0x10814580,0x900185a8, +0x9001c5ad,0xe000006c,0x900005b0,0x900045b5,0x04e0020c,0x900085b8,0x9000c5bd,0x10808220, +0x900105c0,0x900145c5,0x10814580,0x900185c8,0x9001c5cd,0xe000003c,0x900005d0,0x900045d5, +0x04e0020c,0x900085d8,0x9000c5dd,0x10808220,0x900105e0,0x900145e5,0x10814580,0x900185e8, +0x9001c5ed,0x00000000,0x900005f0,0x900045f5,0x07104400,0x00108003,0x00000000,0xc2f0340c, +0x10910781,0xc32fff0c,0xb8008418,0xb801843d,0xc1001808,0xb800030c,0xb800c431,0x108140f0, +0xb8010434,0xb8014439,0x00000000,0xb8004540,0xb8008545,0x10814550,0xb800c548,0xb801054d, +0xe1000114,0xb8000550,0xb8004555,0x04e0020c,0xb8008558,0xb800c55f,0x00000001,0x10808220, +0xb8010560,0xb8014565,0x10814580,0xb8018568,0xb801c56d,0xe00000e0,0xb8000570,0xb8004575, +0x04e0020c,0xb8008578,0xb800c57f,0x00000001,0x10808220,0xb8010580,0xb8014585,0x10814580, +0xb8018588,0xb801c58d,0xe00000ac,0xb8000590,0xb8004595,0x04e0020c,0xb8008598,0xb800c59f, +0x00000001,0x10808220,0xb80105a0,0xb80145a5,0x10814580,0xb80185a8,0xb801c5ad,0xe0000078, +0xb80005b0,0xb80045b5,0x04e0020c,0xb80085b8,0xb800c5bf,0x00000001,0x10808220,0xb80105c0, +0xb80145c5,0x10814580,0xb80185c8,0xb801c5cd,0xe0000044,0xb80005d0,0xb80045d5,0x04e0020c, +0xb80085d8,0xb800c5df,0x00000001,0x00000000,0xb80105e0,0xb80145e5,0x10814580,0xb80185e8, +0xb801c5ed,0x00000000,0xb80005f0,0xb80045f7,0x00000001,0x00000000,0xb80085f8,0xb800c5fd, +0x00000000,0x1080c080,0xb801c411,0x0040cc00,0xb8000320,0xb8004325,0x00400d00,0xb8008328, +0xb800c32d,0x00404e00,0xb8010330,0xb8014335,0x00410f00,0xb8018338,0xb801c33d,0x004fc400, +0xb8014014,0xb801c01d,0x00000000,0xb800c00c,0xb8010011,0x00000000,0xb8008008,0xb8018019, +0x00000000,0xb8000000,0xb8004007,0x00000001,0xf2000003,0x10924941,0x1081c940,0x9000891d, +0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1002425,0x00924725,0x001e4201,0xe8000051,0x0490020c,0xc10000e1, +0x120f0305,0xe800001d,0x04b039f0,0xc10001ed,0x108efb05,0x020e83ed,0xe8fffff9,0x04d039e9, +0xc1ffffe9,0xc10001e8,0x008efbe9,0x020ec3ec,0x020ebaed,0x008e38e8,0x009e79ed,0xe8ffffc9, +0x04f0390d,0xe8000011,0x14000401,0x00000000,0x900004e5,0x0011b801,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900740, +0x10924741,0xd1ffff5a,0xc1000011,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900771,0x10920740, +0x90004920,0x10924771,0xd1ffff14,0xc1fffce1,0x008108e2,0xc1fffce1,0x00000000,0x034188e3, +0x00000001,0x1091c741,0x00000000,0xb800c704,0xb8004723,0x00000001,0x00000000,0xb800871d, +0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924771,0xc20004e8, +0xc20004e4,0xc10001e1,0xc30000e8,0xc30000e5,0x008e42e4,0x030182e9,0x00000000,0x800039e3, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924945,0x1081c97c, +0x9000891c,0x9000c905,0x1081c744,0xc1005c25,0x00900724,0x00924725,0xc1ffece8,0xc1ffe8e0, +0xc1ffe4e5,0xc1ffe0e0,0x034307e8,0x0342c7e1,0x00000000,0x034287e4,0x034fc7e3,0x00000001, +0x109f4971,0x109f8950,0xc10000ec,0x109e8961,0xc10001f0,0x109e09a0,0x109e4981,0x109e8990, +0x90003a2c,0x90003e31,0xd1000048,0xc10000e4,0x900039f1,0x109e09b0,0x90003d28,0x900038e5, +0x00000000,0x90003aec,0x900038fd,0x1091c77d,0x1091c745,0x00000000,0xb800c704,0xb800871f, +0x1082477e,0x07000101,0x10824945,0x00100901,0x1092497d,0x10924975,0x1081c97c,0x9000891c, +0x9000c905,0x1081c774,0xc1007025,0x00900724,0x00924725,0x00000000,0x9001c06c,0x90020071, +0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0xc1ffe4e8,0xc1ffe8e0,0xc1ffeced,0xc1ffd8e0,0x034687e0, +0xc1ffe0e5,0xc1ffdce4,0x0346c7ec,0x034607e5,0xc1ffd4e0,0x034647e8,0x034547e1,0x00000000, +0x0345c7e4,0x034507e2,0x00158201,0x00170401,0xe8000061,0x14100201,0xc1ffff19,0x1091c77d, +0x1091c774,0xb8004055,0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8000050,0xb800c05d, +0x00000000,0xb801c06c,0xb8020071,0x00000000,0xb8008058,0xb8018069,0x1082477c,0xb8014064, +0xb800871d,0x07000101,0x10824975,0x00100901,0xe8000039,0x14000301,0xe8000065,0x14000305, +0xe800006d,0x14000315,0xe8000075,0x14000309,0xe800007d,0x1400030d,0xe8000099,0x14000311, +0xd2ffff7e,0xc1ffff19,0xc10e00e1,0x00000000,0x900142e1,0xe80000a5,0x14000401,0xe8000099, +0x14000405,0xe8000129,0x14000409,0xe8000129,0x1400040d,0xd2ffff4a,0xc1ffff19,0xd2ffffd8, +0xc10d00e1,0x00000000,0x900142e2,0xd2ffffc8,0xc10c00e1,0x00000000,0x900142e2,0xd2ffffb8, +0xc10f00e1,0x00000000,0x900142e2,0xc20c00e0,0x129e453d,0xc30400e0,0x120e7971,0xd2ffff98, +0x001e3801,0x028e38e5,0x00000000,0x900142e1,0xc20c00e0,0x129e453d,0xc30200e0,0x120e7971, +0xd2ffff74,0x001e3801,0x028e38e5,0x00000000,0x900142e1,0x12165905,0xd10008c8,0x00109403, +0x109e1804,0x129e94f0,0x109e5905,0x120eb840,0x120e1740,0x028efa19,0x00000000,0x028e7ae4, +0x028e3855,0x00000000,0x9000d6e4,0x900016ed,0xe800006c,0x9000566c,0x900116e1,0x14001400, +0x90009669,0xc10001e1,0x129eb804,0xc20000e4,0x129e1c0d,0x120eba50,0xb80156e0,0xc30001e5, +0x120e7838,0x028ebae4,0xc23000e1,0x00000000,0x028e7ae5,0xd2fffe48,0x00000000,0x028e79e1, +0x028e38e5,0xc1000018,0x900156e1,0xd2ffff6e,0x12165909,0xd2ffff66,0x1216590d,0xd2ffffae, +0xc10000e1,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900770,0x10924771,0x00000000, +0x90000050,0x90004055,0x00154200,0x00150301,0xc10000e1,0xe8000019,0x04c03809,0xe8000011, +0x14c0021d,0xe8000035,0x14100301,0xc1ffff19,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901,0xd1000647,0xd1fffbf0, +0x00109503,0xd1000488,0x00109500,0x0010d403,0xd2ffffc2,0xc1000019,0x10924941,0x1081c940, +0x9000c904,0x9000891d,0xc1004824,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000, +0x90000050,0x90004055,0x00154201,0x109e0961,0xc1ffe0ec,0xc10000e4,0x109e8951,0x120e8508, +0x90003a10,0x008088ed,0xd1fffbcc,0x109e0970,0x9000380d,0x109e0980,0x900038e8,0xc100000d, +0xc1000210,0x900038e4,0xc1000015,0xe8000021,0x14100600,0x00150601,0xd1fffeec,0xc1ffe0e1, +0x00109500,0x0080c8e2,0x00150601,0x00119401,0x1091c741,0x00000000,0xb800c704,0xb8004723, +0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1004824,0x90004920,0x10920741,0x00900724, +0x00924725,0x00000000,0x90000050,0x90004055,0x00154201,0x109e0961,0xc1ffe0ec,0xc10000e4, +0x109e8951,0x120e8508,0x90003a10,0x008088ed,0xd1fffb04,0x109e0970,0x9000380d,0x109e0980, +0x900038e8,0xc100050d,0xc1000210,0x900038e4,0xc1000015,0xe8000021,0x14100600,0x00150601, +0xd1fffe24,0xc1ffe0e1,0x00109500,0x0080c8e2,0x00150601,0x00119401,0x1091c741,0x00000000, +0xb800c704,0xb8004723,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101, +0x10824741,0x00100901,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1004824,0x90004920, +0x10920741,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00154201,0x109e0961, +0xc1ffe0ec,0xc10000e4,0x109e8951,0x120e8508,0x90003a10,0x008088ed,0xd1fffa3c,0x109e0970, +0x9000380d,0x109e0980,0x900038e8,0xc100010d,0xc1000210,0x900038e4,0xc1000015,0xe8000021, +0x14100600,0x00150601,0xd1fffd5c,0xc1ffe0e1,0x00109500,0x0080c8e2,0x00150601,0x00119401, +0x1091c741,0x00000000,0xb800c704,0xb8004723,0x00000000,0xb8004055,0x00000000,0xb8000050, +0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924751, +0xc2f000e1,0xc3000fe1,0x00000000,0xb800381b,0x00000001,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924761,0xc2f000e0,0xc2f000e5, +0xc3000fe0,0xc3000fe5,0x00000000,0xb8003819,0x00000000,0x9000390b,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725, +0x001f0200,0x001ec301,0x00000000,0xa0003ce8,0xa0003be7,0x00000001,0x009e3ae5,0xe8000021, +0x14103800,0x108efb04,0x108f3c05,0xe8000011,0x14003a01,0xe8ffffd5,0x14103901,0x0011b801, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924771,0x00000000,0xa00002e3,0x00000001,0xe800002d,0x14003800,0xc10000e8,0x001e4201, +0x00000000,0xa00079e3,0x00000001,0xe8fffff5,0x14103800,0x108eba04,0x108e7905,0x0011ba01, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924771,0x00000000,0xa00003e3,0x00000001,0xe8000034,0x800002e1,0x14003800,0x108e8304, +0x108e4205,0x00000000,0xa0003ae3,0x00000001,0xe8fffff4,0x800039e1,0x14103800,0x108eba04, +0x108e7905,0x00118201,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1002025,0x00924725,0x001ec200,0x001e8301,0xe800003d,0x14000401, +0x109e4405,0x00000000,0xa0003ae3,0x00000001,0xe8000024,0x80003be1,0x14003800,0x108eba04, +0x108efb05,0xc1ffffe1,0x008e79e1,0xe8ffffd9,0x141039fd,0x00118201,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002c25,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00154200,0x00150301, +0xc20004e0,0xc10101e4,0xc21118e9,0xd10002d4,0xc3000fe8,0xc30000e1,0xc10001e0,0x008e42e0, +0x020ef909,0x00108300,0x90003aec,0x800039e1,0xc21000e0,0x129e54f0,0x120ed515,0xc21000e8, +0xc3000fe0,0x028f3919,0xc3000fe8,0xc10003e0,0x008e7be1,0x008e7be8,0x900039f1,0x00000000, +0x900179e1,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054, +0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c,0xc1002c25,0x00924725, +0x001f8201,0xc20004e0,0xc10100e5,0xc30000e0,0x020f7909,0x00000000,0x030e02e3,0x00000001, +0xe80000a9,0x14003801,0xc21110e1,0xc3000fe1,0x00000000,0xb80038e3,0x00000001,0xc10000e0, +0x029e78f5,0xe8000031,0x041038e5,0xc21110e9,0xc3000fe9,0x001eba01,0x00000000,0xb8003ae3, +0x00000001,0xc10000e0,0x029e78f5,0xe8ffffed,0x040038e5,0xc21000e8,0xc10014e4,0x120efe15, +0xc3000fe8,0xc21118f0,0xc10000e1,0xc3000ff0,0x008e79e9,0x00000000,0x90003cf4,0x034e79ef, +0x00000001,0x129e7905,0xe8000021,0x041038e5,0xc20004e4,0xc10000e1,0xc30000e5,0x008e7ee5, +0x00000000,0x800039e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1002025,0x00924725,0x001ec201,0xc21000e4,0x120e8215,0xc10014e0, +0xc3000fe5,0x008e78e5,0x00000000,0x034e39eb,0x00000001,0x129e3805,0xe8000021,0x14003801, +0x00000000,0x034e39eb,0x00000001,0x129e3805,0xe8fffff1,0x14103801,0xc20004e4,0xc10000e1, +0xc30000e5,0x008e7be5,0x00000000,0x800039e1,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741,0x00000000,0xa800021b,0x00000001, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924741,0x00000000,0x8400020d,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924741,0x00000000,0xb800021b,0x00000001,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741, +0x00000000,0x9000020d,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924761,0xc20000e1,0xc30000e1,0xe8000019,0x04c03808, +0xc10000e5,0xc20000e1,0xc30002e1,0x018e42e1,0xc10000e1,0x0101b8e5,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924761,0xc20020e0, +0xc1000119,0xc30383e1,0xc10080e0,0x001e7801,0x00000000,0x900039e1,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924761,0xe8000039, +0x14100205,0xc10001e1,0xc20020e0,0x120e781d,0xc30383e1,0x001e3801,0x00000000,0x900038e5, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0xd2ffffd6,0xc10000e1,0x10924941, +0x1081c940,0x9000891c,0xc1002025,0x00924725,0xe8000045,0x14100205,0xc10001ed,0x120ebb18, +0x120e7b14,0xc20020e1,0xc30383e0,0x028e7ae5,0x001e3800,0x028e79ed,0x00000000,0x900038e5, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0xd2ffffca,0xc10000ed,0x10924941, +0x1081c940,0x9000891c,0xc1002425,0x00924725,0xe8000099,0x14100505,0xc10001e1,0xc20000e0, +0xc20024e4,0x120eb81d,0xc30300e0,0xc30383e4,0xc20040ed,0x001e7800,0xc10040e0,0x001f3901, +0xc30383ec,0x028e79e8,0xc20028e9,0xc10020e0,0x90003c08,0x028e79e1,0x001f3b00,0x121ec408, +0xc30383e9,0xc20020e0,0x90003c0c,0x028e79e1,0x120efb40,0x001eba00,0x128e7921,0xc30383e0, +0x90003aec,0x128e7905,0x001e3801,0x00000000,0x900038e5,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0xd2ffff76,0xc10000e1,0x10924941,0x00000000,0x9000891d,0x1081c940, +0x9000c904,0xc1002025,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00154300, +0x00150401,0xd1ffebff,0xe8000061,0x14001501,0xc2f030e4,0xc10001e1,0xc32fffe5,0x00000000, +0x900039e1,0x108e540c,0xc2f034e1,0x121e7908,0xc32fffe1,0x120e7909,0x00000000,0x900038e5, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051, +0x07000102,0x00100901,0xd2ffffbc,0xc2f030e5,0xc32fffe4,0xc10000e1,0x00000000,0x900039e1, +0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2f020e1,0xc32fffe1,0x00000000,0x90003809, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924751,0xc2f024e1,0xc32fffe1,0x00000000,0x90003809,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2f028e1,0xc32fffe1, +0x00000000,0x90003809,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924751,0xc2f02ce1,0xc32fffe1,0x00000000,0x90003809,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924741, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1004c24,0x90004920,0x10920741,0x00900724, +0x00924725,0xc20074e5,0xe80000d0,0xc10001e0,0xc3000fe5,0x14100200,0x900039e1,0xc20120ec, +0xc20000e4,0x109e8871,0xc30382ec,0xc30003e4,0x109e0861,0x00000000,0xb8003be0,0x900038e6, +0xd1fffba2,0xc1000008,0x90003ae1,0xc20023e8,0xc20100e4,0xc2be80e1,0xc300ffe8,0xc30090e4, +0xc30001e1,0x109f8880,0x001f7a00,0x109f0851,0x001ef900,0x109e8840,0x001e7801,0x109e0830, +0x90003cf4,0x90003e19,0x00000000,0x900038e4,0x90003aed,0xd1fff330,0xc1ffe0e1,0x00000000, +0x0080c8e1,0xc1000009,0xd1fff9d6,0xc1000009,0x1091c741,0x00000000,0xb800c704,0xb8004723, +0x00000001,0x00000000,0xb800871d,0x07000101,0x10824741,0x00100901,0xc20100ec,0xc20000e4, +0x109e8871,0xc30382ec,0xc30003e4,0x109e0861,0x00000000,0xb8003be0,0x900038e6,0xd1fffae6, +0xc1000008,0x90003ae1,0xc2be80e1,0xc20023e4,0xc30001e0,0xc20100e9,0xc300ffe4,0x109f0850, +0xc30090e9,0x109f4880,0x001e7800,0x001e3901,0xd2ffff64,0x109e8840,0x001efa01,0x109e0830, +0x90003ce0,0x90003d19,0x00000000,0x900038e4,0x90003aed,0x10924941,0x1081c940,0x9000c904, +0x9000891d,0xc1005c24,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x9000c05c, +0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc20004e4,0xc1000061, +0xc30000e5,0x001e7901,0x10861804,0xc10000e1,0xe8fffff8,0x800039e1,0x14801820,0x108e7905, +0xc2ebdcec,0xc103ffe8,0xc103ffe5,0xc30001ec,0xc21100f0,0xc10000e1,0xc3000ff0,0x008efbe8, +0xc10001e9,0x122ebb7c,0x90003ce9,0x00000000,0x029e7ae5,0x008e7be5,0x1225f929,0xe800009d, +0x04e0385c,0xc1000061,0xc2000050,0xc2011858,0xc1000055,0xc3000050,0xc3038259,0x00151401, +0xc1ffe0e0,0xb80016e8,0x109f4951,0x109f0960,0xc10400ec,0x109e8971,0xc10000e4,0x109e0980, +0x008088e1,0xd1ffee30,0x90003aec,0xc100000d,0xc1000210,0x90003c50,0x008e95e9,0xc1000014, +0x900038e4,0x90003de9,0xd1fff15c,0xc1ffe0e1,0x00000000,0x0080c8e1,0xc1000009,0x10861804, +0xc10400e4,0xc10400e1,0xe8ffff98,0x008514e0,0x008555e5,0x0480185d,0x1091c741,0x00000000, +0xb800c704,0xb8008059,0x00000000,0xb800c05c,0xb8010062,0x00000000,0xb8004054,0xb8000051, +0x00000000,0xb800871c,0xb8004721,0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940, +0x9000891d,0x10924741,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1002025,0x00924725,0xc2002cec,0xc20030e4,0xc24db4e9,0xc30000ec, +0xc10000e0,0xc30000e5,0xc10000e0,0x90003be0,0xc30001e9,0xc10000ec,0x900039e0,0x001eba01, +0x108efb04,0xc21940e0,0xc10000e5,0xe8fffff4,0x00000000,0x90003ae5,0x04803be0,0x108eba11, +0xc20034e4,0xc1000019,0xc10000e0,0xc30000e5,0x00000000,0x800039e1,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1005c25,0x00900724,0x00924725,0x00000000,0x90030080,0x90034085,0x00000000,0x90028078, +0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000, +0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055, +0x00150200,0x00154401,0xc20040e1,0xc30000e1,0x00000000,0xa80038e3,0x00000001,0xe800034d, +0x14103801,0xc20004e8,0xc21f14e0,0xc21f10e5,0xc30382e8,0xc30000e0,0xc30000e5,0x00000000, +0xb8003ae0,0xb80038e5,0xc2a39ce4,0xb80039e9,0xc30000e4,0xc1000208,0xc10001e1,0xc20004ec, +0x900039e1,0xd1fff7c8,0x00000000,0x129e383d,0xc30382ec,0x121e3908,0x128f3841,0x0010f900, +0x90003bf0,0x00987ae1,0xc20020e0,0xc20020e5,0xc30383e0,0xc30383e5,0x001eb800,0xc20030e1, +0x00000000,0xb8003aee,0xc20000e9,0xc30003e9,0x001e7900,0x028ebbe9,0xc30382e0,0x900039e9, +0x00000000,0xb80038e6,0xc20030e1,0xc30383e1,0xc20034e0,0x008eb984,0x001e7801,0xc30382e0, +0x900039e9,0x00000000,0xb80038ea,0xc20034e1,0xc30383e0,0x00000000,0xc21f10e5,0x001eb800, +0x008efa84,0xc20030e1,0xc30000e4,0x90003aec,0xc30382e1,0x00000000,0xb80039e0,0xb800385d, +0xc20034e1,0xc30382e1,0x00000000,0xb8003859,0xc21940e0,0x1217f809,0xe8000069,0x04a01fe1, +0xd1fff0a8,0x00000000,0x0010d701,0xc24db411,0xc1000208,0xc1194014,0xc3000111,0xd1fff522, +0xc1000209,0xd1fff084,0x00000000,0x0010d601,0xc24db411,0xc1000208,0xc1194014,0xc3000111, +0xd1fff4fe,0xc1000209,0xc21940e8,0xc26500e4,0xc26500e1,0x008596e0,0x0097dfe8,0x0085d7e5, +0xd1fff048,0x00000000,0x0010d701,0xc24db410,0x00000000,0x00115f01,0xc1000208,0xc3000111, +0xd1fff4be,0xc1000209,0xd1fff020,0x00000000,0x0010d601,0xc24db410,0x00000000,0x00115f01, +0xc1000208,0xc3000111,0xd1fff496,0xc1000209,0xc2001ce0,0x00000000,0xc1ff9fe9,0xc30382e0, +0xb80114e0,0xc20040e5,0xc30000e4,0xb80038e5,0xc10001e0,0x00000000,0xc1000409,0x00000000, +0x840039e1,0xc2001ce0,0x00000000,0x129ef80d,0xd10078d8,0x120e7b14,0x029879e9,0xc30382e0, +0x028e61e4,0xc100000d,0xc1000710,0x900038e4,0xc1000015,0xe8000015,0x14000601,0xd10079a6, +0xc1000208,0xc1301f0d,0xc20030e8,0xc20034e4,0xc21f10e1,0xc30382e8,0xc30382e4,0xc30000e1, +0x00000000,0xb800390c,0xb8003a09,0x00000000,0xb8003811,0xd1fff68a,0xc1000115,0xc2000ce4, +0xc2000ce0,0xc1012c09,0xc30382e4,0xc30382e1,0x00000000,0xb80039e7,0xd1001fe1,0x128e7905, +0x00000000,0x900038e5,0xc2000cec,0xc20020e4,0xc10000e9,0xc30382ec,0xc30383e4,0xc20000e1, +0x001e7900,0x90003be8,0xc30030e1,0x00000000,0xb80039e7,0x00000001,0x029e39e1,0x12287851, +0xe8000035,0x14002105,0xc21f05e4,0xc21f05e1,0xc30000e4,0xc30000e1,0x00000000,0xa00039eb, +0xc1ffffe5,0x02ae79e9,0x129e7905,0x00000000,0x800038e5,0xc20020e4,0xc20020e1,0xc30383e4, +0xc30383e1,0x001e7900,0x001e3801,0x00000000,0xb80039ea,0xc20000e5,0xc30003e5,0x028e7ae5, +0x00000000,0x900038e5,0x00115500,0xb8039408,0xb802540d,0x00000000,0xb802d411,0xd1001d73, +0xc20028e0,0xb8015478,0xc22ee4e9,0xc30000e0,0xc20144f0,0xc22ee4ed,0xc30000e8,0xb80038e0, +0xc10480e5,0xc20148e0,0x00000000,0xc30001f1,0xc30000ec,0xc30001e0,0x008e7ae5,0x00000000, +0x900038e4,0x90003ced,0xe800004d,0x04003879,0xc23e80e4,0xc20028e1,0xc30000e0,0x019e9ee5, +0x020e1ee8,0x00000000,0x90003879,0x121e383c,0x00000000,0x121e781d,0x129e3804,0x129e793d, +0xd100c28c,0x160e3a0c,0x109e3821,0x008838e5,0x0080a0e1,0x00000000,0xb80254e7,0xc10240e1, +0xe80001e5,0x04a039e1,0xc1000274,0xc104807d,0xc10000e1,0xe8000161,0x04f03874,0xc1000081, +0xc25cec50,0xc2014470,0xc201486d,0xc2002468,0xc2003060,0xc21f105d,0xc21f0558,0xc21f0c54, +0xc3000051,0xc3000170,0xc300016c,0xc3000069,0x12065f04,0xc3000060,0xc300005d,0xc3000058, +0xc3000054,0x00151401,0xc2ac44e1,0xe8000185,0x04001ee1,0x00109400,0xb8001b14,0xb8001c11, +0xd100bd82,0x0010df01,0x00000000,0x90001a19,0x00000000,0xb8001ae3,0x00000001,0xe80000b5, +0x14803801,0x00000000,0xb80018e8,0xb80017e3,0x00000001,0x008e7a65,0xe8000149,0x049039e1, +0x00000000,0x009878e9,0xe8000015,0x14a02101,0xd1001ea8,0x00109400,0x0010e103,0x00000000, +0xa00016e4,0xb800150f,0xc1ffffe1,0xd10096f0,0x02ae38e5,0x129e3805,0xc1048008,0x800016e1, +0x122e2104,0xb80018e4,0xb80017e1,0x120e7804,0xc10000e1,0x008e94e4,0x900018e2,0x008e7965, +0x009879e1,0xe8000015,0x14a02101,0xd1001e4c,0x0010ba00,0x0010e103,0x00000000,0xb80018e3, +0x00000001,0x008e3885,0x00000000,0x900018e1,0x00000000,0xb8001ae3,0x00000001,0xe8ffff0d, +0x14c03801,0x10882004,0x00851465,0xe8fffefd,0x04902075,0xc1000019,0x1091c740,0xb8000050, +0xb8004055,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb800c05c,0xb8010061,0x00000000, +0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071,0x00000000,0xb8024074,0xb8028079, +0x00000000,0xb802c07c,0xb8030081,0x00000000,0xb8034084,0xb800871d,0x07000101,0x10824741, +0x00100901,0xd2fffe2e,0xc1000174,0x1207f905,0xd2fffea0,0xc10000e1,0x00000000,0x90001ae2, +0xd1001d78,0x00109400,0x0010d903,0x00000000,0xb80018e3,0xd2ffff3d,0x008e3865,0x00000000, +0x900018e1,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002c25,0x00900724, +0x00924725,0x00000000,0x90000050,0x90004055,0xc20028e0,0xb8014250,0xb8038255,0xc30000e0, +0xc22ee4e8,0xc20144f1,0xc22ee4ec,0xb80038e0,0xc30000e9,0xc10480e1,0xc20148e4,0xc30001f0, +0xc30000ed,0xc30001e4,0x90003cec,0x008ebae1,0xe8000050,0x900039e9,0x04003851,0xc23e80e4, +0xc20028e1,0xc30000e0,0x018e94e5,0x020e14e8,0x00000000,0x90003851,0x122e383c,0x00000000, +0x122e781d,0x129e3804,0x129e793d,0xd100bfa0,0x160e3a0c,0x109e3821,0x008e78e5,0x0080b9e1, +0xc2ac44e1,0xe8000121,0x040014e1,0xc20144e4,0xc20148e0,0x00109501,0xc30001e4,0xc30001e0, +0xc100000d,0x00000000,0xb8003814,0xb8003911,0xd100baf3,0xc20024e1,0xc30000e1,0x00000000, +0x90003819,0xc20024e1,0xc30000e1,0x00000000,0xb80038e3,0x00000001,0xe8000041,0x14a03801, +0xd1001c38,0x12053805,0x00109500,0x0010d402,0xc20030e4,0xc20030e1,0xc30000e4,0xc30000e1, +0x00000000,0xb80039e7,0x00000001,0x008e7951,0x00000000,0x900038e5,0xc20030ec,0xc21f05e4, +0xc138e4e9,0xc30000ec,0xc30000e4,0xc1ffffe1,0x00000000,0xb8003bec,0xa00039e7,0x00000001, +0xc21f05e0,0x02ae78e4,0x12153b05,0xc30000e0,0x218e14e8,0x129e7905,0x00000000,0x800038e5, +0xe8000019,0x14a03801,0xd1009414,0x00000000,0x0010f802,0xc1048009,0xc1000019,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102, +0x00100901,0xd2ffff20,0xc20024e5,0xc30000e4,0xc10000e1,0x00000000,0x900039e1,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002425,0x00900724,0x00924725,0x00000000, +0x90000050,0x90004055,0x00154200,0x00150301,0xd1001ce8,0xc10000e0,0xc10000e5,0x00000000, +0x900202e0,0x9001c2e5,0xc1000b0c,0x10808371,0xd1001d98,0x10809472,0xc100010d,0xe8000021, +0x14100601,0x00000000,0xb801d5e7,0xc24000e1,0x028e39e1,0x00000000,0x9001d5e1,0xd1001d6c, +0x10809472,0xc100010d,0xe8000079,0x14100601,0x00000000,0xb801d5e7,0xc21000e1,0x028e39e1, +0x00000000,0x9001d5e1,0xd1001d40,0x10809472,0xc100020d,0xc10004e1,0x009e3819,0xe8000070, +0x900015e1,0x14103811,0xc11005e0,0xc1ffff19,0x00000000,0x9003d4e1,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901, +0x00000000,0xb801d5e7,0xc24000e1,0x029e39e1,0xe8ffff99,0x14003801,0xd2ffffc0,0xc11004e1, +0x00000000,0x9003d4e1,0xc1ffff19,0xd1001cbc,0x10809472,0xc100010d,0xe8000031,0x14100601, +0x00000000,0xb801d5e0,0x10809473,0xd1001e0d,0x128e3841,0xc100100c,0x9001d5e0,0xc2ffff11, +0x00000000,0x84031519,0xd1001c80,0x10809472,0xc100040d,0xe800001d,0x1410063d,0xd2ffff5c, +0xc11006e1,0x00000000,0x9003d4e1,0xc1ffff19,0x00000000,0xb801d5e7,0xc21000e1,0x029e39e1, +0xe8000071,0x14003801,0x00000000,0xb80015e3,0x00000001,0x122e3805,0xc1003ce0,0x108e780d, +0xc20338e0,0x060e79e1,0xc30000e1,0x120e0608,0x008e79e1,0x00000000,0x034e39e3,0x00000001, +0x00000000,0x900115e1,0xd1001c00,0x10809472,0xc100020d,0xe8000059,0x1410060d,0xd2fffedc, +0xc11007e1,0x00000000,0x9003d4e1,0xc1ffff19,0x00000000,0xb80015e3,0x00000001,0xc1003ce0, +0x109e7805,0xc20338e0,0x060e79e1,0xc30000e1,0x120e0608,0x008e79e1,0x00000000,0x034e39e2, +0xd2ffffaa,0x00000000,0x900115e1,0xc20464e0,0xb801d5e4,0x120e4609,0xc30000e1,0x00000000, +0x034e79e1,0xc21000e1,0x029e39e1,0xe8000039,0x14003800,0x900155e5,0x121eb904,0xb801d5e5, +0x00000000,0x900155ea,0xc24000e1,0x029e39e1,0xe8000015,0x14003801,0x121e3a05,0x00000000, +0x900155e1,0xd1001b44,0x10809472,0xc100010d,0xe8000021,0x14000601,0x00000000,0xb801d5e7, +0xc10080e1,0x028e39e1,0x00000000,0x9001d5e1,0xd1001b18,0x10809472,0xc100010d,0xe8000021, +0x14000601,0x00000000,0xb80215e7,0xc10100e1,0x028e39e1,0x00000000,0x900215e1,0xd1001aec, +0x10809472,0xc100020d,0xd1001ae0,0xc10003e1,0x009e3819,0xc100020c,0x900055e0,0x10809471, +0xd1001ac9,0x00000000,0x90009518,0x10809471,0xc100010d,0xe8000021,0x14000601,0x00000000, +0xb801d5e7,0xc10020e1,0x028e39e1,0x00000000,0x9001d5e1,0xd1001a94,0x10809472,0xc100010d, +0xe8000021,0x14000601,0x00000000,0xb801d5e7,0xc10040e1,0x028e39e1,0x00000000,0x9001d5e1, +0xd1001a68,0x10809472,0xc100020d,0x00000000,0xb801d5e0,0x9000d51b,0x00000001,0x129e3841, +0xe800001d,0x14003801,0xd1001a40,0x10809472,0xc100100d,0x00000000,0x84035519,0xd2fffd1e, +0xc1000019,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc100a824,0x90004920,0x10920741, +0x00900724,0x00924725,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0x00154200,0x00158301,0x00000000,0xb801c2e7,0x109e0821, +0x00000000,0x900038e5,0x00000000,0xb80202e7,0x109e0811,0x00000000,0x900038e5,0x00000000, +0xb801c3e7,0xc10080e1,0x029e39e1,0xe8000411,0x14003800,0xc1000051,0xc1000161,0x00000000, +0xb80003e3,0x00000001,0xe8000015,0x1410380c,0xc10000e9,0xc21000e1,0x029eb9e1,0xe80003e9, +0x14003a01,0xc100485d,0xd10088db,0xe800032d,0x14100601,0xc103e8e0,0x120e9808,0xc10004e5, +0xc10001e0,0x0615d7e0,0x009679e9,0x00963861,0xc1ffb8e4,0xb80015e4,0xc10048e1,0x00000000, +0x0080c8e6,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80055ea,0xc10044e1,0x009e48e0, +0x00000000,0xc1ff94e1,0x00000000,0x900039e8,0x008088e1,0x00000000,0xb80095e6,0xc10040e1, +0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb800d5e7,0x109e08f1,0x00000000,0x900038e5, +0x00000000,0xb80115e7,0x109e08e1,0x00000000,0x900038e5,0x00000000,0xb80155e7,0x109e08d1, +0x00000000,0x900038e5,0x00000000,0xb80195e7,0x109e08c1,0x00000000,0x900038e5,0x00000000, +0xb801d5e7,0x109e08b1,0x00000000,0x900038e5,0x00000000,0xb80215e7,0x109e08a1,0x00000000, +0x900038e5,0x00000000,0xb80255e7,0x109e0891,0x00000000,0x900038e5,0x00000000,0xb80295e7, +0x109e0881,0x00000000,0x900038e5,0x00000000,0xb802d5e7,0x109e0871,0x00000000,0x900038e5, +0x00000000,0xb80315e7,0x109e0861,0x00000000,0x900038e5,0x00000000,0xb80355e7,0x109e0851, +0x00000000,0x900038e5,0x00000000,0xb80395e7,0x109e0841,0x00000000,0x900038e5,0x00000000, +0xb803d5e7,0x109e0831,0x00000000,0x900038e5,0x00000000,0xb80016e6,0xc1006ce1,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb80056e6,0xc10068e1,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80096e6,0xc10064e1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb800d6e6, +0xc10060e1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80116e6,0xc1005ce1,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb80156e6,0xc10058e1,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80196e6,0xc10054e1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb801d6e6, +0xc10050e1,0x009e08e1,0x00000000,0x900038e5,0x00000000,0xb80216e6,0xd1fff924,0xc1004ce1, +0x009e08e1,0x00000000,0x900038e5,0xc1ff94e0,0xb80016e5,0xc1ffa8e0,0x034e88e0,0xb80156e1, +0x00000000,0x034e48e3,0x110ec600,0x00000000,0x010ebae5,0x010e39e0,0x029e7be9,0x029e39e1, +0xe800007d,0x14003801,0xd1001598,0x10809573,0x00000000,0xb80016e0,0xb80155e7,0x00000001, +0xe800012d,0x14103804,0x009506e5,0x00000000,0xb80156e4,0x008e1953,0x00000001,0x00000000, +0x061539e1,0xc10000e1,0xe8000025,0x04d03850,0xc10000e9,0xc10000e5,0xc2bb80e1,0x008e79e1, +0xe8fffff9,0x04b03950,0x108eba05,0xc1ffffe1,0x00853ae1,0xe8000025,0x14f01421,0xd100157c, +0x10809572,0xc100080d,0xd10085b8,0x00109503,0xe8fffd01,0x14000601,0xc1fff8e1,0x00000000, +0x034e08e3,0x00000001,0xc1fffce0,0x9001d5e1,0x00000000,0x034e08e3,0xe800002d,0x14901420, +0x900215e1,0x00000000,0xb80016e3,0x00000001,0xe80000cd,0x1410380d,0xc10280e1,0xe80000c1, +0x04b014e1,0xc11004e0,0xc1ffff19,0x00000000,0x9003d5e1,0x1091c741,0x00000000,0xb800c704, +0xb8008059,0x00000000,0xb8004055,0x00000000,0xb8014064,0xb8004721,0x00000000,0xb8000050, +0xb8010061,0x00000000,0xb800c05c,0xb800871d,0x07000101,0x10824741,0x00100901,0xd2fffc02, +0xc1000061,0xd2fffc26,0xc100905d,0x00000000,0xb80156e4,0x008e1853,0x00000001,0x00000000, +0x061539e1,0xc10000e1,0xe8000029,0x04d03850,0xc10000e9,0xc10000e1,0x00000000,0x00000000, +0x008e385d,0xe8fffff5,0x04b03850,0x108eba05,0xd2fffee4,0xc1ffffe1,0x00853ae2,0xc103e8e0, +0xc1000019,0xd2ffff50,0x061e14e2,0x00000000,0x900115e1,0x10924941,0x1081c940,0x9000891c, +0xc1005025,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0x00000000,0xa40202e4, +0xac0082eb,0xc100d2e1,0x129e3908,0x0093bae1,0xe80000d1,0x14003801,0xc1000255,0x00000000, +0xa40242e3,0x00000001,0xe80000c9,0x14103809,0x129e3921,0xe8000035,0x14003800,0xc1000050, +0xc100004d,0x129e3911,0xe80000a1,0x14003801,0xc1ffff35,0xc2cc442c,0xc1000029,0x10830248, +0xc300002d,0xd60120ea,0x00000000,0xa40342e8,0xa40382e5,0x00000000,0xa403c2e5,0xc10240e1, +0xea000041,0x120efa0c,0x00000000,0x120eb90d,0x120e790c,0x00944ee8,0x00948eed,0x04f014e0, +0x00940ee5,0x10835304,0x10831308,0x1083c249,0x12039308,0x1202cd08,0x12028c09,0xd6016112, +0x1091c740,0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901, +0xd2ffff3e,0xc1000155,0xd2ffff6e,0xc1000035,0x129e3911,0xe8000025,0x14003801,0xc2cc442c, +0x10830249,0xc100004c,0xc1000028,0xc300002d,0xd6002142,0xd2ffffaf,0xc100004c,0x1082c248, +0xc1000029,0xd600214a,0xd2ffff9b,0x10924941,0x1081c940,0x9000891c,0xc1003425,0x00924725, +0x192e4300,0xc10400e0,0x118ec301,0xe80000a4,0x122e7908,0x129eb90d,0x04f002e0,0x0992bbe8, +0x099ffbe5,0xc2c4b8e0,0xc2b4ace4,0x120e8209,0xc30000e0,0xc30000e5,0x00000000,0x031e02e0, +0x034fbae7,0x00000001,0x008fffe1,0xe80000e1,0x14e03f01,0xc10000e4,0x11ce3f81,0x009ef9fd, +0xc10001e4,0x109ebb05,0x020e79e9,0x008e7ee5,0x022ef9ed,0x09bfb8ed,0x108e4a0c,0xc2cc5ce1, +0x120e7908,0xc30000e1,0x00000000,0x034e39e3,0x00000001,0x00000000,0x21c1bee2,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x121f420c,0xc2c4b8e4,0xc2c4b8e1,0xc2b4acec, +0x108ebd04,0xc30000e5,0xc30000e0,0x120f3d08,0xc30000ed,0xc2b4ace0,0x031e3ae0,0x031e7de5, +0x120e7a08,0x034e7cec,0xc30000e1,0x00000000,0x034e79e2,0x108e3910,0x00000000,0x011ef9e1, +0x008e38ec,0x00000000,0x022eb9ed,0x129e021c,0x009e79e8,0x008fffe1,0x00000000,0x061e39e1, +0xd2ffff2d,0x122e380d,0x008fbae1,0xc2ffffe0,0x11ee7f14,0x020efefd,0xc37fffe1,0x001e3801, +0xd2ffff38,0x009e38ed,0x09be39e1,0x008fb8ed,0x10924941,0x00000000,0x9000891d,0x1081c940, +0x9000c904,0xc1003425,0x00900724,0x00924725,0x00000000,0x90000051,0x00150301,0xd100122f, +0x109fd404,0xc10001e0,0x109e5409,0xc2b214e0,0x020ef8fc,0xc10000f1,0x02af86ec,0xc20000e8, +0x120e7909,0xc30000e0,0x029f7eec,0xc1001ded,0xc31000e8,0x034e39e0,0x009e3cf5,0x001e3a00, +0x028ebee0,0x009e7b51,0x022e38fc,0x020e7ae5,0x008e79e1,0x00000000,0x21c1b9e2,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901, +0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1005424,0x90004920,0x10920741,0x00900724, +0x00924725,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0x00150200, +0x00154300,0x0015c401,0x00000000,0xb800435b,0x00000001,0xe8000139,0x14001601,0x00000000, +0xb800830d,0xd1001147,0x109e8840,0xc1fff4e4,0xc1fff0e1,0x008108e4,0x90003a19,0x008148e0, +0xb8001552,0xd1004e8e,0x00108600,0x0010d401,0xc1fff0e8,0xc1fff8e4,0xc1fff0e1,0x008148e0, +0x034088e8,0x008108e5,0xd1004e6a,0x0010d401,0xc1fff0e8,0xc1fffce4,0xc1fff0e1,0x008148e0, +0x034088e8,0x008108e5,0xd1004e4a,0x0010d401,0xc1ffffe0,0xc10001e5,0xc1001de0,0x008e96e0, +0xc1000029,0xc1fff4e0,0x009f7858,0x020fb9e9,0x008fc8e0,0x001ed700,0xc10000f1,0x00000000, +0x00000000,0x034e3ff3,0x00000001,0x02aeb8f9,0xc10000e0,0xb80115e0,0x029e7af9,0x009e38e4, +0xb800d5e1,0x028e3ae1,0x020e78f5,0x008e79e1,0x10828a04,0x00000000,0x21ce39e1,0xe8ffffc0, +0x108f3c11,0x14900a0c,0x108efb10,0x90003be1,0x1091c741,0x00000000,0xb800c704,0xb8008059, +0x00000000,0xb800c05c,0xb8004722,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d, +0x07000101,0x10824741,0x00100901,0x00000000,0xb800835a,0xd1001016,0x0010d601,0xd100100c, +0x109e0831,0x0010d600,0x90003818,0x00109402,0xd1000ff8,0x109e0821,0x0010d600,0x90003818, +0x00109402,0xd2ffff0c,0x109e0811,0x00000000,0x9000381a,0x1092497d,0x10924925,0x1081c97c, +0x9000891c,0x9000c905,0x1081c724,0xc1007025,0x00900724,0x00924725,0x00000000,0x90030080, +0x90034085,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000, +0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0xc1ffece4,0xc1ffe8e0,0x0017c201,0x00000000,0x034707e4, +0x034507e2,0x00178300,0x00154501,0x00174401,0xe8000334,0xc10000e0,0xc1000081,0x14000400, +0x90001ce1,0xe8000319,0x14100305,0xc10001e1,0xe800032c,0x900014e1,0x14000401,0xc10008e1, +0xd1000f08,0x0010f803,0x00109f00,0x90001519,0x00000000,0xb800140d,0xd1000ef3,0xc10000e0, +0x90005519,0xe8000045,0x04103874,0xc100016d,0xc10000e1,0xe8000035,0x04f03878,0xc100026c, +0xc1000085,0x10851521,0xd1000ec0,0x00109f02,0xc100040d,0x10886104,0x80001419,0xe8ffffed, +0x04902178,0x10851405,0xc10000e1,0xe8000221,0x04f0386c,0xc1000069,0x10865528,0x11061d00, +0x1085d521,0xc10000e1,0xe80001f1,0x04f03878,0xc1000085,0x00159901,0xd1000e70,0x00109f02, +0xc1000c0d,0xd1000e65,0x00000000,0x84001618,0x00109f01,0xc100090d,0xd1000e51,0x00000000, +0x84005618,0x00109f01,0xc100080d,0xe8000258,0x84009619,0x14001d01,0xc10009e1,0xd1000e2c, +0x00109f00,0x0010f803,0x00000000,0xac0056e4,0xac0016ed,0x00000000,0xb8001ce9,0x00000000, +0x8400d619,0xc10120e1,0x110e2000,0x00000000,0x01ce79e1,0x008e7aec,0x029e39e1,0xe8000010, +0x90001ce5,0x14003801,0xc1200d81,0xd1000ddc,0xc10000e1,0x00000000,0x800216e0,0x00109f01, +0xc100010d,0xe800020d,0x14000601,0xd1000dbc,0x00109f02,0xc100020d,0x110e4600,0x110e2001, +0x029e39e0,0x80025619,0xe800000d,0x14003801,0xc1200e81,0x110e4608,0x031e5784,0x110e2001, +0x00000000,0x029e98e7,0x111e7901,0x029e7ae5,0x029e39e1,0xe800000d,0x14003801,0xc1200f81, +0x00109f01,0xd1000d64,0xc10007e4,0xc10024e1,0x00000000,0x800456e0,0x800416e5,0xc100010d, +0xe800016d,0x14000601,0x00000000,0xa40216e3,0x00000001,0xc100ffe0,0x128e7821,0x029e39e1, +0x00000000,0x800216e1,0xd1000d20,0x00109f02,0xc100050d,0xd1000d15,0x00000000,0x80029618, +0x00109f01,0xc100050d,0xc1000054,0x8002d618,0x10851635,0xd1000cf4,0x00109f02,0xc100030d, +0x10855504,0x80001419,0xe8ffffed,0x1490150c,0x10851405,0xe8000175,0x14001d01,0xc10002e1, +0xd1000cc8,0x00109f00,0x0010f803,0x00000000,0xa40216e3,0x00000001,0x10886104,0x028e7818, +0xc100ffe1,0xe8fffe34,0x029e39e1,0x04902178,0x108596e8,0x800216e1,0x10869a04,0xc10074e1, +0xe8fffe04,0x008659e1,0x04901a6d,0x0011a001,0x1091c77c,0xb8000050,0xb8004055,0x1091c724, +0xb8008058,0xb800c05d,0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8014064,0xb8018069, +0x00000000,0xb801c06c,0xb8020071,0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c, +0xb8030081,0x1082477c,0xb8034084,0xb800871d,0x07000101,0x10824925,0x00100901,0xd2fffcf6, +0xc10002e1,0xe8000011,0x14100305,0xd2fffce6,0xc10005e1,0xd2fffcde,0xc10003e1,0xd2fffce6, +0xc10009e1,0xd2fffdba,0xc10004e1,0x00000000,0xa40256e3,0x00000001,0xe8fffeb1,0x14103809, +0xd2fffea8,0xc10008e1,0x00000000,0x800416e2,0xc10000e0,0x10851629,0xc1000054,0x800256e1, +0xd1000ba8,0x00109f02,0xc100050d,0x10855504,0x80001419,0xe8ffffed,0x1490150c,0x10851405, +0xd1000b88,0x00109f02,0xc100040d,0xd1000b7d,0x00000000,0x80041618,0x00109f01,0xc100030d, +0xd2fffe94,0x8004561b,0xd2fffe9a,0xc10003e1,0x10924941,0x1081c940,0x9000c904,0x9000891d, +0xc1005024,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x9001c06c,0x90020071, +0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0x00170401,0x00164200,0x00158500,0x00154301,0x00000000, +0xb80002e9,0xc2c8bce4,0xc10001e1,0xc30000e4,0xc1fff8f1,0x109e0820,0x00000000,0x008e78e5, +0x00000000,0x900038e9,0x00000000,0xb80042eb,0x109e0811,0x00000000,0x900038e9,0x00000000, +0xac00c3ec,0xa40243e3,0xc2c8bce9,0xc30000e8,0x120efb05,0x00000000,0x0316b9ec,0x0316fbea, +0xe8000130,0x008608f1,0x14103809,0x00000000,0xa40203e3,0x00000001,0x129e3821,0xe800010d, +0x14003800,0xc100005d,0xc10011e1,0xe800003d,0x14003800,0x1095b805,0x10850349,0xd1000a4c, +0x00109900,0x0010db03,0xc1ffffe1,0x00000000,0x80001418,0x008596e1,0xe8ffffe5,0x141016fc, +0x1085d704,0x10851405,0x10855548,0xc1001159,0x00851755,0xd1000a14,0x00109900,0x0010da03, +0xc1ffffe1,0x00000000,0x80001418,0x008596e1,0xe8ffffe5,0x141016fc,0x1085d704,0x10851405, +0xc1000258,0x008e9755,0xc1ffffe0,0xc10000e5,0x00000000,0x80003ae4,0x008596e1,0xe8ffffed, +0x141016fc,0x108eba05,0xd1000834,0x00109800,0x0010d903,0x1091c740,0xb8000050,0xb8004055, +0x00000000,0xb800c704,0xb8008059,0x00000000,0xb800c05c,0xb8010061,0x00000000,0xb8014064, +0xb8018069,0x00000000,0xb801c06c,0xb8020071,0x00000000,0xb8004720,0xb800871d,0x07000101, +0x10824741,0x00100901,0xd2ffff06,0xc10012e1,0x129e0521,0xe80000dd,0x14003801,0xc100005c, +0x108e8448,0x108e4349,0x00000000,0x031e3a5e,0x1085d705,0xe8fffff5,0x14901718,0x108e7904, +0x800039e1,0x129e1611,0xe80000d5,0x14003801,0xc100065c,0x108e9c48,0x108e5561,0x00000000, +0x031e3a5e,0x1085d705,0xe8fffff5,0x1490172c,0x108e7904,0x800039e1,0x129e1609,0xe80000cd, +0x14003801,0xc1000b5c,0x108e9c48,0x108e5575,0x00000000,0x031e3a5e,0x1085d705,0xe8fffff5, +0x14901740,0x108e7904,0x800039e1,0x129e1605,0xe80000c5,0x14003801,0xc100105c,0x108e9c48, +0x108e5589,0x00000000,0x031e3a5e,0x1085d705,0xe8fffff5,0x14901754,0x108e7904,0x800039e1, +0xd2fffec8,0xc10000e1,0x00000000,0x8009d5e2,0xc100005c,0x10850349,0xd1000870,0x00109900, +0x0010db03,0x1085d704,0x80001419,0xe8ffffed,0x14901718,0x10851405,0xd2ffff2f,0xc100065c, +0x10851561,0xd1000844,0x00109900,0x0010db03,0x1085d704,0x80001419,0xe8ffffed,0x1490172c, +0x10851405,0xd2ffff37,0xc1000b5c,0x10851575,0xd1000818,0x00109900,0x0010da03,0x1085d704, +0x80001419,0xe8ffffed,0x14901740,0x10851405,0xd2ffff3f,0xc100105c,0x10851589,0xd10007ec, +0x00109900,0x0010da03,0x1085d704,0x80001419,0xe8ffffed,0x14901754,0x10851405,0xd2ffff47, +0x10924941,0x1081c940,0x9000891c,0x90004921,0xc2094c24,0x10920741,0x00924725,0x00000000, +0xa40203e3,0x00000001,0x129e3821,0xe8000011,0x14003800,0xc10000f9,0xc10002f9,0xc10012e1, +0x00000000,0x061478f9,0xc10240e1,0xe800005d,0x04f011e1,0xc2f700e8,0xc2a3a0e0,0x120e5105, +0xc3ffffe8,0xc30000e0,0x120f1109,0x008f48e8,0x008ef9e1,0x00000000,0xa8003be0,0x034ebc0b, +0x00000001,0x10845104,0x120e7808,0xc10240e1,0xe8ffffe4,0x108efb08,0x008e7de5,0x049011e0, +0x108f3c10,0x900039e9,0xc10012e0,0xc2f700e8,0xc10240e5,0xc3ffffe8,0x061f38f8,0xc10000e1, +0x008e88e9,0x120e7c08,0x0093f9f0,0xc1000045,0xe800002c,0x00000000,0x00843ae5,0x04f0383c, +0x008ef909,0xc1000038,0xc1000831,0xc1000434,0x1082bb30,0xc1000c2d,0xd600430e,0x1091c741, +0x00000000,0xb8004720,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c, +0x90004921,0xc1006024,0x10920741,0x00924725,0xc2cbd8e4,0x160e8230,0xc10004e1,0xc30000e4, +0x00000000,0xc2a3a0f5,0xc1fff438,0x008e78e4,0xc10000e1,0x109e4830,0x0343f9e8,0xc1000035, +0x10930820,0xc100002c,0x10928811,0xc1ffe8fc,0xc10000f8,0x109f0861,0xc10000ec,0x900039e0, +0x109e8851,0xc10000e4,0xa4000f28,0x109e0841,0xc30000f4,0x90000c34,0x00834839,0x008308fc, +0x90003cf8,0x90000a2d,0x1082cf04,0x900038e4,0x90003aed,0xc10000fc,0xc10000f8,0x001f7d01, +0xc1ffffe1,0x00828ae1,0xe800002d,0x14100afd,0x00000000,0xa4000be0,0x108e7f05,0x119e390d, +0x00000000,0x00000000,0x061ff8e6,0x1082cb04,0x1092b805,0x120f3f09,0x008e0cf0,0x034e4df0, +0x034eccf1,0x008e8cf3,0x108e7b04,0x161e3f18,0x161e7949,0x00000000,0x900038e5,0x008e39e0, +0x034e0cf1,0x008e38ed,0x00000000,0x84003de2,0xe8000031,0x14103819,0xc10000e4,0x008e0df1, +0x00000000,0x90003ae5,0x00000000,0x034e4df3,0x00000001,0x108e7905,0x00000000,0x900038e5, +0x108fbe04,0xc10240e1,0xe8ffff59,0x04903ee0,0x108f7d09,0x1091c741,0x00000000,0xb8004720, +0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1004c25,0x00900724,0x00924725,0x00000000,0x90000051,0x00150301,0xc2001ce5,0xc30382e5, +0x00000000,0xb80039eb,0xc20800e5,0xe8000138,0x029e7ae5,0x14000400,0x122e392d,0xc21200e5, +0x0083c2e5,0xe8000128,0xc25cec39,0x14103804,0xc3000039,0xc10000e1,0xe8000095,0x04f0380c, +0xc1000035,0xc1000028,0xc10004fd,0xc2ffffe4,0x034f0a08,0x034ecf29,0xc2ffffe0,0x034f3f08, +0x034ecffd,0xc10200f4,0xc10200e8,0xc301ffe5,0xc301ffe1,0x008fbced,0x122f3e04,0x008efcec, +0x001e7901,0x122efb04,0x001e3800,0x008f3cf5,0x10834d08,0x008ebbe8,0x093e79f1,0xeaffffb0, +0x122e3928,0x093e78e9,0x122e3928,0x84004ee0,0x84000ee1,0x10838e20,0x8400cee0,0x84008ee1, +0x04900d0c,0x10828a20,0x108fff21,0xc2001ce1,0xc30382e1,0x00000000,0xb80038e3,0x00000001, +0x122e381d,0x129e3805,0xe8000035,0x14003801,0xc20114e0,0xc1000309,0xc30382e0,0xc1040015, +0x00000000,0xb800380d,0xd1ffcfc1,0xc25cec11,0xc3000011,0xd1ffd44a,0xc1000309,0x12019409, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102, +0x00100901,0xd2fffee2,0x0013c201,0xc10000e1,0xe8ffff7d,0x04f0380c,0xc1000035,0xc1000030, +0xc100042d,0xc2ffffe1,0xc301ffe1,0x0012b801,0xd6004002,0xd2ffff5b,0x10924941,0x1081c940, +0x9000891d,0x10924771,0xc10000e1,0xe8000031,0x04e03808,0xc10001e8,0xc10000e5,0x00000000, +0x008eb9e9,0xe800000d,0x04a03a09,0xc10000e9,0x108e7905,0xe8ffffe9,0x04803909,0x0011ba01, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c, +0x9000c905,0x10900760,0x10924761,0xc20018e5,0xc10000e0,0xc30000e5,0x00000000,0x900039e1, +0x00000000,0xb80002e3,0x00000001,0xe8000041,0x14003801,0xe8000019,0x14003805,0xe800003d, +0x14003809,0xe8000045,0x1400380d,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824742,0x07000102,0x00100901,0xd1ffdb92,0x10808211,0xd2ffffdf,0x00000000,0xb801c211, +0xd1ffdc0f,0xd2ffffcf,0x00000000,0xb801c211,0xd1ffe2b7,0xd2ffffbf,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0x001ec201,0xc21f05e1, +0xc30000e1,0x00000000,0xa00038e3,0x00000001,0x129e3805,0xe8000069,0x14003801,0xc20034e4, +0xc20030e1,0xc30382e4,0xc30000e1,0x00000000,0xb80039e4,0xb80038e3,0x00000001,0x008eb9e1, +0xd1ffcde9,0x12114308,0x00113b00,0x0010fa01,0xc1000309,0xd1ffd26a,0xc1000309,0xc1000019, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xc20030e4, +0xc20030e1,0xc30382e4,0xc30000e1,0x00000000,0xb80039e4,0xb80038e2,0xd2ffffaa,0x008eb9e1, +0x10924941,0x1081c940,0x9000891d,0x10924761,0xc10000e4,0x9000020c,0xc10008e1,0x00000000, +0x8400c2e0,0x840082e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1002025,0x00924725,0x00000000,0xb80002e0,0xb80003ed,0x00000000, +0xac00c3e6,0x00000000,0xac00c2e9,0xc10008e0,0x00000000,0x108eb805,0x009e38e4,0x009e7be9, +0x120e790d,0x008e7ae5,0x0081b9e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924751,0x00000000,0xac00c2e3,0x00000001,0xe800002d, +0x14103821,0x00000000,0xb80002e3,0x00000001,0x0011b801,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x00000000,0xb80002e2,0xd2ffffe2,0x108e3805,0x10924941,0x1081c940, +0x9000891c,0xc1002025,0x00924725,0x00000000,0xac00c2e0,0xb80002ea,0x129e431d,0x121ec30d, +0xc2ffffe0,0x009e78e4,0x008ebaed,0xc2ffffe0,0x900002e8,0x029e79e1,0x029e39e1,0xe8000040, +0x8400c2e1,0x14a03821,0x00000000,0xac00c2e0,0xb80002e7,0x00000001,0xc2ffffe0,0x108eb904, +0x108e7821,0xc2ffffe0,0x900002e8,0x029e79e1,0x029e39e1,0x00000000,0x8400c2e1,0x00000000, +0xac00c2e3,0x00000001,0xe800002d,0x14e03821,0x00000000,0xb80002e3,0x00000001,0x00000000, +0xa40038e7,0xc2ffffe1,0x029e39e1,0x00000000,0x840082e1,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002825,0x00924725,0x00000000, +0xac00c2e3,0x00000001,0xe800002d,0x14103821,0x00000000,0xb80002e3,0x00000001,0x00000000, +0xa40038e7,0xc2ffffe1,0x029e39e1,0x00000000,0x840082e1,0x00000000,0xac00c2ef,0x00000001, +0xe8000051,0x04f003ed,0xc10001e0,0xac0082ec,0x009ebb0d,0xc2ffffe4,0x020ef8ec,0xc2ffffe1, +0x029e7ae5,0x109e7b04,0x00000000,0x029e39e1,0x029e3be4,0x8400c2e1,0x0221b8e9,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0xc10001e0,0xb80002e0,0xac0082e9,0xc10008e0, +0x020e78ed,0x009f43ec,0x8400c2e1,0x109e7905,0xe8000050,0x108e3804,0x029efae5,0x14903d20, +0x900002e1,0x00000000,0xb80002eb,0x00000001,0xc1fff8e0,0xa4003ae0,0x120e7b21,0x00000000, +0x00000000,0x008f7de2,0xe8ffffe9,0x14f03d20,0x108eba04,0x028ef9e1,0x00000000,0x900002e9, +0xe8000051,0x14b03d01,0x00000000,0xb80002e8,0xac00c2e5,0xc10008e4,0xc2ffffe1,0x020f3bf4, +0x009ef9f6,0xc2ffffe4,0xa4003ae4,0x009eb9f5,0x029e7ae5,0x029e39e1,0xc2ffffe0,0x8400c2e1, +0x029e39e1,0x022e38ec,0x840082e1,0x028efce1,0xd2ffff2c,0x0011bb03,0x10924941,0x1081c940, +0x9000c904,0x9000891d,0xc1003424,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000, +0x90004054,0x90008059,0x00000000,0x90000051,0x00154301,0xc1fff8e0,0xc1000059,0x008508e1, +0x001e5401,0x00000000,0x030e160a,0x10859605,0xe8fffff5,0x14901620,0x108e7904,0x800039e1, +0xc10020e1,0xe80000fd,0x049003e0,0x00158401,0xd1fffe18,0x00109402,0xc100200d,0x121e9620, +0x121e4660,0xc100ffe1,0x00000000,0x02ae7ae5,0xc20044e0,0x029e79e1,0xc30000e0,0xc20044e4, +0x120eb905,0x00000000,0x033e3ae2,0xc1ffe0e1,0x120e9620,0x00000000,0x008555e1,0x00000000, +0x02ae3ae1,0x121e0640,0x120eb820,0x121ef821,0xc100ffe0,0x02aefbe1,0x029e3be1,0xc30000e4, +0x120e3805,0x00000000,0x033e38e7,0x00000001,0x02ae3ae1,0x121e0620,0x120eb820,0x121e7821, +0xc100ffe0,0x02ae79e1,0xc20044e0,0x029e79e1,0xc30000e0,0x120e7905,0x00000000,0x033e39e3, +0x00000001,0x02ae3ae1,0x121e3820,0x120eb821,0xc100ffe0,0x02ae7819,0xc20044e0,0x029e79e1, +0xc30000e0,0x120e7905,0x00000000,0x033e79e2,0xc10020e1,0xe8ffff1d,0x04f015e0,0x02a5bae5, +0x121e150d,0xe80000a5,0x1400380d,0xe80000d9,0x14003809,0xe800010d,0x14003805,0xe8000049, +0x14001501,0x10955505,0xd1fffd00,0x00109402,0xc100010d,0x121e163d,0x02ae06e1,0x129e3805, +0xe8000015,0x14003800,0x12059605,0xc28005e1,0x02a596e1,0xc1ffffe1,0x008555e1,0xe8ffffcd, +0x141015fd,0xc2ffffe4,0xc2ffffe1,0x029e56e5,0x0291b9e1,0x1091c741,0x00000000,0xb800c704, +0xb800805b,0x00000000,0xb8004054,0xb8000051,0x00000000,0xb800871c,0xb8004721,0x07000101, +0x10824741,0x00100901,0xd1fffc80,0x00109402,0xc100080d,0x121e5620,0xc20044e1,0xc100ffe4, +0x120e9620,0x02aef919,0x029e7be5,0xc30000e0,0x120e7905,0x00000000,0x033e39e3,0x00000001, +0x02a5bae1,0xd1fffc44,0x00109402,0xc100080d,0x121e5620,0xc20044e1,0xc100ffe4,0x120e9620, +0x02aef919,0x029e7be5,0xc30000e0,0x120e7905,0x00000000,0x033e39e3,0x00000001,0x02a5bae1, +0xd1fffc08,0x00109402,0xc100080d,0x121e5620,0xc20044e1,0xc100ffe4,0x120e9620,0x02aef919, +0x00000000,0x029e7be5,0xc30000e0,0x120e7905,0x00000000,0x033e39e2,0xd2fffec6,0x1295551c, +0x02a5bae1,0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x90004921,0x1081c724,0xc1002825, +0x00920724,0xc100cc25,0x00900724,0x00924725,0x00000000,0x9005c0ac,0x900600b1,0x00000000, +0x900540a4,0x900580a9,0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094,0x90048099, +0x00000000,0x9003c08c,0x90040091,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c, +0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000, +0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0xc1ffece4,0xc1ffe8e1,0x00000000,0x034ac7e4,0x034a87e3,0x00000001, +0xc10000e4,0x00000000,0x109e0811,0xc10000e0,0x109e4820,0x900038e5,0xe800018c,0x90003915, +0x04f038ac,0xc10000a0,0x011a6b15,0xc235e8e0,0xc278aae4,0xc24f33e9,0xc30ec8e0,0xc3061fe4, +0xc30b50e9,0x00197800,0x0019b900,0x0019fa01,0xc21708e0,0xc2b315e4,0xc29d9de9,0xc3031fe0, +0xc30d4de4,0xc308e3e9,0x0018b800,0x0018f900,0x00193a01,0xc24036e0,0xc27993e4,0xc24be8e9, +0xc30c5ee0,0xc30a26e4,0xc30fb1e9,0x0017f800,0x00183900,0x00187a01,0xc2e69de0,0xc2bd7ae4, +0xc24402e9,0xc30563e0,0xc30e76e4,0xc306d7e9,0x00173800,0x00177900,0x0017ba01,0xc25979e0, +0xc2d74ee4,0xc29082e9,0xc30e1ce0,0xc3078ae4,0xc30f10e9,0x00167800,0x0016b900,0x0016fa01, +0xc23f2fe0,0xc241a3e4,0xc2c3cde9,0xc303e3e0,0xc30db9e4,0xc30839e9,0x0015b800,0x0015f900, +0x00163a01,0xc2a0abe0,0xc2018ce4,0xc23f7ee9,0xc30f4fe0,0xc304a5e4,0xc30f85e9,0x00153800, +0x00157900,0x001b3a01,0xc2020ee0,0xc2f024e4,0xc2fbfee9,0xc30259e0,0xc30cd9e4,0xc30987e9, +0x00147800,0x0014b900,0x0014fa01,0xc246d2e0,0xc27a6ce4,0xc2aac0e9,0xc30fece0,0xc30191e4, +0xc30fd3e9,0x0013b800,0x0013f900,0x00143a01,0xc2fb30e4,0xc2ef91e8,0xc2b49aed,0xc300c8e4, +0xc210f2e0,0xc30abeed,0xc30bdae8,0xc30ffbe0,0x0012f901,0x00137b00,0x0012b800,0x00133a01, +0xd606c00e,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x00000000,0xb8008058, +0xb8014065,0x00000000,0xb8010060,0xb801c06d,0x00000000,0xb8018068,0xb8024075,0x00000000, +0xb8020070,0xb802c07d,0x00000000,0xb8028078,0xb8034085,0x00000000,0xb8030080,0xb803c08d, +0x00000000,0xb8038088,0xb8044095,0x00000000,0xb8040090,0xb804c09d,0x1091c77c,0xb8048098, +0xb80540a5,0x1091c724,0xb80500a0,0xb805c0ad,0x00000000,0xb80600b0,0xb8004721,0x1082477c, +0xb80580a8,0xb800871d,0x07000101,0x10824925,0x00100901,0x10924941,0x1081c940,0x9000891c, +0x9000c905,0x10900760,0x10924761,0x00000000,0xb803c3e7,0xc22009e1,0xe8000081,0x040039e1, +0xc2200be1,0xe8000075,0x040039e1,0xc2200ce1,0xe8000069,0x040039e1,0xc2200de1,0xe800005d, +0x040039e1,0xc2200ee1,0xe8000051,0x040039e1,0xc2200fe1,0xe8000045,0x040039e1,0xc22010e1, +0xe8000039,0x040039e1,0xc22011e1,0xe800002d,0x040039e1,0xc22012e1,0xe8000021,0x040039e1, +0xc22013e1,0xe8000015,0x040039e1,0xc22014e1,0xe8000055,0x041039e1,0x00000000,0xb80002e3, +0x00000001,0xe8000031,0x14003801,0xd1000d32,0x00108401,0xc1100019,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xd2ffffe0,0xc10001e1,0x00000000, +0x900002e2,0xd2ffffd6,0xc1000019,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900770, +0x10924771,0x00000000,0x90000051,0x00150201,0x00000000,0xb8028209,0xd10065c8,0xc21f04e5, +0xc10000e0,0xc30000e5,0x00000000,0x800039e1,0x00000000,0xb80294e6,0xd10004dd,0xc10040e1, +0x0080b9e1,0x00000000,0xb80294e6,0xd10067e9,0xc21268e1,0x0080b9e1,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941, +0x1081c940,0x9000c904,0x9000891d,0xc1008024,0x90004920,0x10920741,0x00900724,0x00924725, +0x00000000,0x90040090,0x90044095,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080, +0x90034085,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000, +0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0x00158300,0x00188501,0xc10000e4,0xb8004484,0x109e0811, +0x00000000,0x900038e5,0x00000000,0x00000000,0xb8028257,0xd100043c,0xc10040e1,0xc21268e0, +0x008815e1,0x0010d500,0x0010a000,0x0087d5e1,0xe8000099,0x141006fd,0xc1ffff19,0x00000000, +0xb8004055,0x1091c740,0xb8000050,0xb8008059,0x00000000,0xb800c704,0xb8010061,0x00000000, +0xb800c05c,0xb8018069,0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079, +0x00000000,0xb8024074,0xb8030081,0x00000000,0xb802c07c,0xb8038089,0x00000000,0xb8034084, +0xb8040091,0x00000000,0xb8044094,0xb8004721,0x00000000,0xb803c08c,0xb800871d,0x07000101, +0x10824741,0x00100901,0x00000000,0xb80060e3,0x00000001,0xe800005d,0x14003801,0xc1000279, +0xc1ffece0,0x109e8951,0xc1fffce0,0x109e4960,0x008508e1,0x008e88e0,0x90003a51,0xd1000854, +0xc2024414,0x109e0971,0x0010a000,0x90003878,0x900039e9,0xc3000014,0x00111500,0x0010df01, +0xe8000019,0x141006fd,0xd2ffff16,0xc1ffff19,0xd2ffffb2,0xc1000179,0xc10000e1,0x00000000, +0x900016e1,0x00000000,0xb80020eb,0x00000001,0xe80001c9,0x14103a05,0xc1000c8c,0xc1000c91, +0xc21004e4,0xb80160e0,0xc21008e1,0xc2100ae0,0x008edfe4,0x008e9fe1,0x120e6314,0x00000000, +0x008e1fe1,0x00000000,0x840038e4,0x84003a79,0x00000000,0x90003be1,0x00000000,0xb80020e3, +0x00000001,0xe80001bd,0x1410380d,0xc1fffce1,0x00000000,0x034e08e3,0x00000001,0x1299781d, +0xc2001ce4,0x120ea521,0xc30382e4,0xc10000e1,0x00000000,0xb80039ef,0xc1f8ffe5,0xc2001ce4, +0x029efbe5,0xe8000110,0xc30382e4,0x028ebbe9,0x04f03878,0xc1000074,0x900039e9,0xc20244e4, +0xc2100ce0,0xc1000069,0xc30000e4,0xc1000064,0x0086dfe1,0x10873928,0xc1000060,0x0015d401, +0xc1fffce1,0x00000000,0x034e48e3,0xc10000e1,0xe800007d,0x04f038e4,0xc1000095,0xc1000058, +0xc1000054,0x00851a71,0x00000000,0xa40214e0,0x034e9b65,0x109e0950,0x0340d758,0x0010a001, +0x00111400,0x90003875,0xd1001a95,0x109e0960,0x00000000,0x129e7821,0x008155e8,0x900038e5, +0xc1fffce0,0xc20900e5,0xc10074e0,0x034e08e1,0x008514e0,0x00000000,0x008555e6,0x10896505, +0xe8ffffa9,0x049025e0,0x10859611,0xd1006580,0x109e0960,0x00811885,0x109e0950,0x90003890, +0x00109f01,0x00115d00,0x9000388c,0x0010e001,0xe9ffff50,0xc21200e0,0x10875d05,0x1085d720, +0x90002218,0x008618e1,0x04901d78,0x10869ae8,0x10865911,0xc21000e0,0xb9001fe4,0xc1000019, +0x008e1fe3,0xd2fffd38,0x008e798d,0x129e793d,0x00000000,0x900038e5,0xe800002d,0x14103a0d, +0x00000000,0xb801e0e7,0xc21000e1,0x029e39e1,0xe8000015,0x14003801,0xd2fffe2a,0xc100128c, +0xc1001291,0xe8000015,0x14103a0c,0xc100248d,0xd2fffe12,0xc1001291,0xd2fffe0a,0xc1002491, +0xe8000011,0x14103805,0xd2fffe5a,0xc1000395,0xd2fffe52,0xc1000295,0x10924941,0x1081c940, +0x9000891c,0xc1002825,0x00924725,0xc10000f0,0xc10000e4,0xc10000f5,0xc10000e0,0xc10000ec, +0xc10000e9,0xc10000e4,0x900042e4,0x900002f5,0xc10000e8,0x9000c2e8,0x900082f1,0xc10000e0, +0x900142e0,0x900102ed,0xc10000e0,0x840342e0,0x840302e9,0x00000000,0x900202e0,0x9001c2e5, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c, +0x9000c905,0x10900760,0x10924761,0x00000000,0x90000051,0x00150201,0xd1ffff63,0xd10007a0, +0xc10001e1,0x00109400,0x900254e2,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741, +0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940, +0x9000c904,0xc1003c25,0x00900724,0x00924725,0x00000000,0x90004054,0x90008059,0x00000000, +0x90000051,0x00154200,0x00150301,0x00000000,0xb80183ec,0xb800435b,0x00000001,0xe8000051, +0x14103b01,0xc10002e4,0xc10000e0,0xc1ffff19,0x00000000,0x9000c3e0,0x9003c3e5,0x1091c741, +0x00000000,0xb800c704,0xb800805b,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d, +0x07000101,0x10824741,0x00100901,0x00000000,0xb80083eb,0x00000001,0xe8000075,0x14003a01, +0x00000000,0xb800c3e7,0xc10000e1,0xe8000015,0x041038e5,0x00000000,0xb80143ef,0x00000001, +0x00000000,0x009e16ed,0xe800002d,0x04f038e9,0xd2ffff8c,0xc10000e0,0x009e7ae1,0xc10001e4, +0x90018358,0x900083e5,0xc1ffff18,0x9000c3e0,0x9003c3e5,0xc10000e4,0xc10001e0,0x008efbe9, +0x00000000,0x9000c3e0,0x900083e5,0x00000000,0xb800d4e3,0x00000001,0xe8000091,0x14003801, +0x00000000,0x009e16ed,0xe800002d,0x14e03821,0x00000000,0x900194ed,0xd2ffff24,0xc10000e0, +0xc10001e5,0x00000000,0x9000d4e0,0x9003d4e5,0xc1ffff19,0x00000000,0xa4003be7,0xc100ffe1, +0xe8000025,0x041039e1,0x00000000,0xa4007be7,0xc100e0e1,0xc100e0e0,0x029e79e1,0xe8000095, +0x040039e1,0xd2fffed8,0xc10000e0,0x108e7b05,0xc11004e4,0x900194e4,0x900154ed,0xc1ffff18, +0x9000d4e0,0x9003d4e5,0xd1ffee98,0x10809470,0x0010fb03,0xd1005fcc,0x00109403,0xe8000049, +0x141006fd,0x00000000,0xb80194e3,0x00000001,0x009e16e1,0xe8000015,0x14803821,0x109e1621, +0x00000000,0x900194e1,0xd2fffe74,0xc10000e0,0xc10001e5,0x00000000,0x9000d4e0,0x9003d4e5, +0xc1ffff19,0xd1ffeedc,0x10809473,0x001ec601,0xd1ffee30,0x108e3b04,0x10809471,0x0010fb00, +0x900154ec,0x900194e2,0xd1ffd1f4,0x00109500,0x0010d403,0xe800001d,0x141006fd,0xd2fffe20, +0xc10000e1,0x00000000,0x9000d4e1,0xc1ffff19,0x00000000,0xb80115e3,0x00000001,0xe8000079, +0x14103801,0x00000000,0xb80114e3,0x00000001,0xe800001d,0x14003801,0x00000000,0xb800d4e7, +0xc10000e1,0xe8000031,0x041038e5,0xd1ffd558,0x00109400,0x0010d503,0xe800001d,0x141006fd, +0xd2fffdbc,0xc10000e1,0x00000000,0x9000d4e1,0xc1ffff19,0x00000000,0xb801d5e4,0xb80114eb, +0xc10400e1,0x028e39e0,0x900115e9,0x00000000,0x9001d5e1,0x00000000,0xb801d5eb,0xc10080e1, +0x029e3ae1,0xe80000b5,0x14003801,0xc10001fd,0x00000000,0xb80015e7,0x00000001,0xe80000a5, +0x14103905,0x00000000,0xb80115e4,0xb80155eb,0xc1000ce1,0x00000000,0x061e78e5,0xc10000e1, +0xe8000029,0x04d038e4,0xc10000f9,0xc10000e1,0x00000000,0x00000000,0x008e38e9,0xe8fffff5, +0x04b038e4,0x108fbe05,0xc1ffffe1,0x008fbee1,0x008e3efd,0x120f7809,0x00000000,0xb80154e7, +0x00000001,0x108ebd20,0x009e16e5,0xe80000fd,0x04b03ae1,0x00000000,0x900194e5,0xd2fffce0, +0xc10000e0,0xc10001e5,0x00000000,0x9000d4e0,0x9003d4e5,0xc1ffff19,0xd2ffff5a,0xc10000fd, +0xe8000015,0x1410390c,0xc10000e1,0xc21000e1,0x029e3ae1,0xe80000ad,0x14003801,0xc10048f1, +0x00000000,0xb80115e4,0xb80155eb,0xc10000e1,0xe8000029,0x04d038e4,0xc10000ed,0xc10000e1, +0x00000000,0x00000000,0x008e38e9,0xe8fffff5,0x04b038e4,0x108efb05,0xc1ffffe1,0x00000000, +0x008efbe1,0x00000000,0x061e3aee,0x009e39e1,0x00000000,0x061e78f1,0xc10000e1,0xe8000029, +0x04d038e4,0xc10000f9,0xc10000e1,0x00000000,0x00000000,0x008e38e9,0xe8fffff5,0x04b038e4, +0x108fbe05,0xc1ffffe0,0x061e3bf1,0xd2ffff0c,0x00000000,0x008fbee1,0x008e38f9,0x008f78fd, +0xd2ffff62,0xc10090f1,0x008eb9f4,0xb800d4e5,0x00000000,0x900194ea,0xc10000e1,0xe800005d, +0x041038e5,0x00000000,0xa4003ae7,0xc100ffe1,0xe8000025,0x041039e1,0x00000000,0xa4007ae7, +0xc100e0e1,0xc100e0e0,0x029e79e1,0xe8000021,0x040039e1,0x00000000,0xb80154e3,0xd2fffc51, +0x108ef805,0x00000000,0x900194ed,0xc10001e1,0x00000000,0x9000d4e1,0x00000000,0xb801d5e3, +0xd2fffb7d,0x128e3821,0xc1000018,0x9001d5e1,0x1092497d,0x10924935,0x1081c97c,0x9000891c, +0x9000c905,0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc1006025,0x00900724,0x00924725, +0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058, +0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e4,0xc1ffe4e1,0x00000000, +0x0345c7e8,0x034587e5,0x00000000,0x034547e1,0x00168201,0x00160401,0x00164300,0x00000000, +0x0016c501,0x00000000,0xb801c2e0,0xb80384e7,0x00000001,0xc10000e0,0x900242e4,0x129e7821, +0xe800007d,0x041038e5,0xd1fffa4a,0x0010c401,0xe800006d,0x141006fd,0xc10000e0,0xc1ffff19, +0x00000000,0x9002d8e1,0x1091c77d,0x1091c734,0xb8004055,0x00000000,0xb800c704,0xb8010061, +0x00000000,0xb8000050,0xb800c05d,0x00000000,0xb801c06c,0xb8004721,0x00000000,0xb8008058, +0xb8018069,0x1082477c,0xb8014064,0xb800871d,0x07000101,0x10824935,0x00100901,0x00000000, +0xb801dae4,0xb8001ae3,0x00000001,0xe8000028,0x129e79dd,0x14003804,0x9001dae5,0xe8000079, +0x14003809,0xe8000089,0x1400380d,0xd2ffff7e,0xc1ffff19,0xd1001891,0x00111900,0x0010da00, +0x00109802,0x00150601,0xe8000099,0x141014fd,0x00000000,0xb803d8e7,0xc2f000e1,0xc10000e0, +0x029e79e1,0xe800001d,0x041038e5,0x00000000,0xb80158e3,0x00000001,0x00000000,0x900198e1, +0xd2ffff28,0xc10000e1,0x00000000,0x9002d8e1,0xc1ffff19,0xd1001dd1,0x00111900,0x0010da00, +0x00109802,0xd2ffffa6,0x00150601,0x109e8950,0x109e0971,0xd10035a0,0x109e4960,0x00109801, +0x00111900,0x90003958,0x90003a5d,0x0010da00,0x90003854,0x00115b01,0xd2ffff72,0x00150601, +0x00000000,0xb8001ae3,0x00000001,0xe8000049,0x1400380d,0x00000000,0xb801980d,0xd1ffe925, +0xc1fff8e1,0x008088e1,0xc1fff8e0,0xb801d8e4,0xb80218e1,0x0080c8e0,0x10809871,0xd1ffe942, +0x00000000,0x900298e0,0x900258e5,0x00000000,0x9002d819,0xd2fffe76,0xc1000019,0x10924941, +0x1081c940,0x9000891c,0xc1003825,0x00924725,0xc20928e0,0x108282a1,0xc100002c,0xc10000f8, +0x008fc2e1,0xc10000f4,0x008efe28,0x008f3efd,0xc10000e4,0x108f7d04,0xc10020e1,0xc10000e4, +0x90003ce4,0xc10048e9,0xe8ffffe8,0xc10048e4,0x90003be5,0x04903de0,0x008efbe8,0x008f3ce5, +0x1082cb05,0xe8ffffc1,0x14900b48,0x108fbe11,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x1092497d,0x10924945,0x1081c97c,0x9000891c,0x9000c905,0x1081c744,0x90004920, +0xc1003025,0x00920724,0xc101b425,0x00900724,0x00924725,0x00000000,0x900700c0,0x900740c5, +0x00000000,0x900680b8,0x9006c0bd,0x00000000,0x900600b0,0x900640b5,0x00000000,0x900580a8, +0x9005c0ad,0x00000000,0x900500a0,0x900540a5,0x00000000,0x90048098,0x9004c09d,0x00000000, +0x90040090,0x90044095,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080,0x90034085, +0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068, +0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000, +0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e0,0xc1ffe4e5,0xc1ffe0e0,0x034e47e8,0x0345c7e1, +0x00000000,0x0346c7e4,0x034587e1,0x00150200,0x00178501,0x00160301,0x00180401,0x00000000, +0xac0004e3,0x00000001,0x009778e5,0xe80000e1,0x14e01d01,0xc1201119,0x00000000,0xb8004055, +0x1091c77c,0xb8000050,0xb800c05d,0x1091c744,0xb8008058,0xb8010061,0x00000000,0xb800c704, +0xb8018069,0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079,0x00000000, +0xb8024074,0xb8030081,0x00000000,0xb802c07c,0xb8038089,0x00000000,0xb8034084,0xb8040091, +0x00000000,0xb803c08c,0xb8048099,0x00000000,0xb8044094,0xb80500a1,0x00000000,0xb804c09c, +0xb80580a9,0x00000000,0xb80540a4,0xb80600b1,0x00000000,0xb805c0ac,0xb80680b9,0x00000000, +0xb80640b4,0xb80700c1,0x00000000,0xb80740c4,0xb8004721,0x1082477c,0xb806c0bc,0xb800871d, +0x07000101,0x10824945,0x00100901,0xd1ffd308,0xc1ff64e1,0x00000000,0x008108e0,0x0010a001, +0x0010c501,0x00000000,0xb80014e6,0xc100a4e0,0x0010dd00,0x00109401,0x009e08e1,0x00000000, +0x900038e5,0x00000000,0xb80054e6,0xd1ffe70c,0xc100a0e1,0x009e08e0,0x00000000,0xc1ff5ce9, +0x008b48e8,0x900038e5,0xc1ff62e0,0x0010ad01,0x00000000,0x033e48e3,0xc1001fe1,0x009e38e5, +0xd1ffe7a8,0x129e38e1,0x0087f9e1,0x0010df01,0x00000000,0xa402a0ec,0xa4001ef1,0xc21d14e8, +0xa40420e4,0xc21db4e1,0xc21d94e4,0xc30000e0,0xc30000e9,0xc30000e5,0x120e3b08,0x0319fbe0, +0x031a3be5,0xeb000048,0x034a78e8,0x00170601,0x120e3c08,0x00975d7c,0x10879e05,0x008698e1, +0x00151800,0x00000000,0x108ae029,0x14e03b34,0x108b3904,0xc10000a9,0xc1000199,0xe8000031, +0x14102901,0xd2fffe36,0xc1201219,0x109e7b34,0xc21dd4e0,0xc1000099,0x120e7908,0xc30000e1, +0x00000000,0x034979e1,0xd2ffffd7,0xc1ff64e4,0xac00608c,0xc10001e1,0x020e389c,0x034548e6, +0xc1ff68e5,0xe8000284,0x00000000,0xc1000091,0x14002300,0x008648e4,0x1098b805,0xc1ff1ce1, +0x008848e1,0xe80000d8,0xc1ffffe1,0x04101468,0x0088e3e1,0xc1ffffe0,0xa4001ee1,0x00000000, +0x008b2ce3,0xe8000098,0x120e3809,0x14102c00,0x10879e04,0x00869ae1,0x1102aa00,0x108aaa04, +0xc21d14f5,0xc21db4ec,0x031faba8,0xc30000f5,0xc30000ec,0xa40460fc,0xc1fff3e9,0xc21d94f0, +0xc21dd4e4,0xc10001e1,0xc30000f0,0x00000000,0xc30000e5,0x120efe08,0x0319feec,0x008ebee9, +0x120eba08,0x031a3ef0,0x034a7bf5,0x108e7f04,0x03497ae5,0x00000000,0x00000000,0x09bb0ae5, +0x020e389d,0xe8000019,0x14102900,0x1189be34,0x1098b805,0xd2fffd26,0xc1201219,0x00000000, +0xb80019ef,0x00000001,0x00000000,0x010e15ed,0x10865910,0x09b93890,0x00157b01,0xe80000a1, +0x14e01f54,0x001f2701,0xc1ff5ce0,0xc1001fe8,0xc1fff8e5,0x00000000,0x034e48e0,0x009e3a7d, +0x122e380d,0x120fb80d,0xc100a4e0,0x00000000,0x008f7ee5,0x009e08e0,0xa40039ec,0x108e7905, +0x00000000,0x900038e5,0xe8000045,0x14903d21,0x001eb901,0xc1fff8e0,0xa4003ae0,0x120e7b21, +0x00000000,0x00000000,0x008f7de2,0xe8ffffe9,0x14f03d20,0x108eba04,0x028ef9e1,0xc100a4e1, +0x009e08e1,0x00000000,0x900038e9,0x00975df8,0x020e1cf8,0x0087dff9,0x008738ed,0x00000000, +0x009e1f9d,0xe8000110,0x021e1ce1,0x14002600,0x029ef889,0x120e3b05,0x008ee9e0,0x031ea9e3, +0x00000001,0xc10000e0,0x129e7a3d,0xe8000055,0x041038e5,0x122f3a10,0xa4007bec,0x0097dff1, +0xc10001e4,0xc10000e0,0x009e9ff1,0x00000000,0x020e79f0,0x021e9ce9,0x109e7905,0x029e7ae5, +0x008e7be5,0x120e7905,0x008ee9e4,0x031ea9e7,0x00000001,0x129e7a3d,0xe8ffffbd,0x040038e5, +0x00000000,0xa4007bbf,0x00000001,0x129baf3c,0xc10001e0,0x122e7a11,0xe80000f8,0x0097dfe4, +0x020e78b9,0x14102e00,0x029ee4e5,0xc10000e1,0x10851410,0x900014e1,0x122e2f11,0xc10001e0, +0x129bb83d,0xe80001a8,0x020e78b9,0x14102e00,0x029ee4e5,0xc10000e1,0x10851410,0x900014e1, +0xe8fffda5,0x14102301,0x00000000,0x008f5f75,0xe8000259,0x14e03d01,0xc10000e1,0xc10040e0, +0x009e7875,0xe8000571,0x048039e1,0xd2fffb4e,0xc1201319,0x00000000,0x031ea9ef,0x00000001, +0xc10000e0,0x129e7a3d,0xe8000059,0x041038e5,0x120e3b04,0x122f3a10,0x0097dff1,0xc10001e0, +0x033e25e0,0x009e5ff1,0x00000000,0x020e38f0,0x021e5ce5,0x109e3805,0x029e79e1,0x008ef8e4, +0x008e29e1,0x00000000,0x031eb8e7,0x00000001,0xc10000e0,0x129e7a3d,0xe8ffffb9,0x040038e5, +0x120e3b05,0x00000000,0x033be5e1,0xd2ffff03,0xe8000011,0x14102e3d,0xe800006d,0x14102801, +0x1097df05,0xe8000034,0x021e1c7d,0x14003b00,0x129c7805,0x120e2e09,0x00000000,0x034c21e3, +0x00000001,0xd2fffef4,0x099e31c1,0x00000000,0x900014e1,0x10851411,0xd1ffcfb5,0x0010d500, +0x0010ae00,0x028924e6,0x120e6e09,0x008e21e5,0x00000000,0x90003819,0x00000000,0x034c21e5, +0xd2ffffc7,0x108e2809,0xe8000025,0x04f01fe1,0xd1ffe338,0x0010ad02,0xc100100d,0x120e1c40, +0x10975d41,0x1087df40,0x02873819,0xc10001e0,0x0010d500,0x0097dfa1,0x021e5c7c,0x020e38a1, +0xd1ffcf4c,0x109e3805,0x029e39e1,0x0080aee1,0x1097df05,0x021e1c7d,0xd2fffe60,0x129c7805, +0x099e3119,0x10851410,0x900014e1,0xe8000011,0x14102e3d,0xe800006d,0x14102801,0x1097df05, +0xe8000034,0x021e1c7d,0x14003b00,0x129c7805,0x120e2e09,0x00000000,0x034c21e3,0x00000001, +0xd2fffe40,0x099e31c1,0x00000000,0x900014e1,0x10851411,0xd1ffced9,0x0010d500,0x0010ae00, +0x028924e6,0x120e6e09,0x008e21e5,0x00000000,0x90003819,0x00000000,0x034c21e5,0xd2ffffc7, +0x108e2809,0xe8000025,0x04f01fe1,0xd1ffe25c,0x0010ad02,0xc100100d,0x120e1c40,0x10975d41, +0x1087df40,0x02873819,0xc10001e0,0x0010d500,0x0097dfa1,0x021e5c7c,0x020e38a1,0xd1ffce70, +0x109e3805,0x029e39e1,0x0080aee1,0x1097df05,0x021e1c7d,0xd2fffdac,0x129c7805,0x099e3119, +0x10851410,0x900014e1,0x192e1501,0x118e9500,0x129e780c,0x122e3809,0x099f3ae4,0x099e3ae1, +0xe8000365,0x14e038f8,0x10857809,0xc20000e4,0xc10000e8,0x11ce1581,0xc30400e4,0x009eba55, +0x001e7901,0x022eb9e9,0x09bef8e9,0x108e7c0c,0x00000000,0xc2cc5ce1,0x120e7908,0xa40220e0, +0xc30000e1,0x00000000,0x034e79e3,0x129e3805,0xe8000344,0x21cefbe5,0x14103801,0xc2047085, +0xc3000085,0x00186101,0xc208f0e1,0x008818e1,0x11ce7d00,0x01ae1481,0x029e39e1,0xe8000289, +0x14003801,0xe800009d,0x14e01f55,0xc1ff5ce0,0xc1001fe8,0xc1fff8e5,0x00000000,0x034e48e0, +0x009e3a7d,0x122e380d,0x120fb80d,0xc100a4e0,0x00000000,0x008f7ee5,0x009e08e0,0xa40039f0, +0x108e7905,0x00000000,0x900038e5,0xe8000045,0x14903d21,0x001eb901,0xc1fff8e0,0xa4003ae0, +0x120e7c21,0x00000000,0x00000000,0x008f7de2,0xe8ffffe9,0x14f03d20,0x108eba04,0x028f39e1, +0xc100a4e1,0x009e08e1,0x00000000,0x900038e9,0x00975df8,0x020e1cf8,0x0087dff9,0x008738f1, +0x109e5f10,0xc10000e1,0x00000000,0x021e5ce5,0xc1000ae4,0x129eb93d,0x00000000,0x061e79ea, +0x0088a1e5,0x00000000,0xa40262e7,0x00000001,0xe8000045,0x041038e5,0x00000000,0xa40062e4, +0xa400a2ea,0x1097df11,0xc10001e1,0x020e38e4,0x009e5fe5,0x109e3804,0x021e5ce5,0x029e39e1, +0xc1000ae0,0x008e7ae1,0x00000000,0x061e38e6,0x0088a1e1,0x00000000,0xa40122e3,0xe8000049, +0x04101468,0x0097dfe1,0x00000000,0xa4001ee4,0xb80019e3,0x00000001,0xe8000028,0x120e7909, +0x040015e0,0x10879e04,0x00869ae5,0xd1ffcc61,0x0010f801,0xc1000108,0x00157801,0x001ec601, +0x10865911,0x00000000,0xa40162e8,0xa401a2e5,0x109e5f04,0xc10001e1,0x020e38e5,0x029e1ce1, +0x111f7a00,0x111e3800,0x111f3901,0xc10001e0,0x009e5ff4,0x099eb8ed,0x109e7904,0x0097f9f0, +0x09bebde9,0x020e38e4,0x900014e9,0x029e1ce1,0x111e3801,0x099e38ed,0x09be3ce1,0x10851420, +0x900054e1,0xe8000045,0x04101469,0x00000000,0xa4001ee4,0xb80019e3,0x00000001,0xe8000028, +0x120e7909,0x040015e0,0x10879e04,0x00869ae5,0xd1ffcbbd,0x0010f801,0xc1000108,0x00157801, +0x001ec601,0x10865911,0x00000000,0xa401e2e8,0xa40222e5,0x109e5f04,0xc10001e1,0x020e38e5, +0x029e1ce1,0x111f7a00,0x111e3800,0x111f3901,0xc10001e0,0x009e5ff4,0x099eb8ed,0x109e7904, +0x0097f9f0,0x09bebde9,0x008e1f74,0x900014e8,0x020e78e5,0x00000000,0x029e5ce5,0x111e7901, +0x099e79ed,0x09be7ce5,0x10851420,0x900054e5,0x11ce7800,0x01ae1481,0x029e39e1,0xe8fffd89, +0x14103801,0x008e1f75,0x118e3801,0x120e3811,0x009514e1,0xc20900e4,0x120e1b0c,0xc10240e9, +0x120e1608,0x008298e4,0x008e57e1,0x00000000,0x009eca50,0x008e39e1,0x122e7b7d,0x129e790d, +0x008e7be5,0x122e7909,0xe8000014,0x009e7ae5,0x04e01428,0x900038e5,0xd6000152,0xd2fff59e, +0xc1000019,0xc20000e8,0xc2ffffe0,0x11ee5515,0xc30400e8,0xc37fffe1,0x001eba00,0x001e3801, +0x020eba55,0xd2fffca8,0x009e38e9,0x09be39e1,0x008ef8e9,0xd2fffcd5,0xc2058885,0xc3000085, +0x10924941,0x1081c940,0x9000891c,0xc1007025,0x00900724,0x00924725,0x00000000,0x90010060, +0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xe8000058, +0xc2cd485d,0x14000300,0xc300005d,0xe8000081,0x14000305,0xe80001c5,0x1400030d,0x00000000, +0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x1091c740,0xb8010060,0xb8014065,0x00000000, +0xb8008058,0xb800871d,0x07000101,0x10824741,0x00100901,0xc10024e1,0x00000000,0x060384e1, +0xc10000e1,0xe8ffffb9,0x04e03838,0xc1000058,0xc1000065,0xc100082d,0xc1000034,0xc1000c28, +0xc1000431,0xd6008156,0xd2ffff97,0xc10000e1,0xe8ffff8d,0x04e03810,0xc1000059,0xc2cdd8ed, +0xc2cdd8f4,0xc2cdd8e0,0xc2cdd8f1,0xc2cdd8e8,0xc30000ec,0xc2cdd8e5,0xc30000f4,0xc30000e0, +0xc30000f1,0xc30000e8,0xb801bd54,0xb801fc51,0xc30000e4,0xb8023b4c,0xb8027a49,0x00000000, +0xb802b944,0xb802f843,0x0013c201,0xc1000064,0xc1000038,0xc1000435,0xc1000830,0xc1000c2c, +0x10828f31,0xd600616a,0x00000000,0xb8040fe4,0xb80417e1,0x00000000,0xb8044ffc,0xb8060fe1, +0x00000000,0xb8064fe5,0x00000000,0xb8068fe8,0xb806cfe1,0x00000000,0xb8070fe4,0x21ceb9e1, +0x00000000,0x00000000,0xb8074fe1,0x00000000,0x90040fe8,0x21cef855,0x10859604,0x21ceb950, +0xb80457ed,0xc10000f4,0x21cfb848,0x21ce7a4d,0xc10000f0,0x21ceb944,0x90060fed,0xc10000e0, +0x90064fe8,0x21ce7841,0xc10000ec,0x90068fe4,0x21cfbfed,0xc10000e8,0x90070fe8,0x9006cff9, +0xc10000e4,0x90074fe4,0x90044ff9,0xc10090e0,0x9007cfe0,0x90078ff5,0xe9ffff34,0x90084fec, +0x90080ff1,0x0083cfe0,0x9008cfe4,0x90088fe9,0x04801611,0xd2fffe4b,0xc10000e1,0xe8fffe41, +0x04e03810,0xc1000059,0xc2cdd8ed,0xc2cdd8f4,0xc2cdd8e0,0xc2cdd8f1,0xc2cdd8e8,0xc30000ec, +0xc2cdd8e5,0xc30000f4,0xc30000e0,0xc30000f1,0xc30000e8,0xb8003d60,0xb8007c55,0xc30000e4, +0xb800bb50,0xb800fa4d,0x00000000,0xb8013948,0xb8017846,0xc1000041,0x0013c201,0x008e1008, +0xc10000e8,0xc10000e5,0x00000000,0x900038e9,0x00000000,0xb8018fe8,0xb801cfe5,0xc10000ec, +0xb8020fec,0xb8024fe1,0xc10000e0,0xb8028fe8,0xb802cfe5,0xc10000e0,0x90008fe0,0x90004fe5, +0x00000000,0x90010fe0,0x9000cfed,0xc10000f8,0x21cf3954,0x21cf7a61,0xc10054e0,0x21ceb84c, +0x21cefb51,0xc1001264,0x21ce3944,0x21ce7a49,0x00828fe0,0x90018ff4,0x90014ff9,0xc1004838, +0x90020fec,0x9001cff1,0xc1004c34,0x90028fe4,0x90024fe9,0xc1005030,0x9002cfe0,0xc100542d, +0xd600617a,0x00000000,0xb8088fe8,0xb80897e5,0xc10090e4,0x00000000,0xc10090e1,0x00000000, +0x008410e6,0x00000000,0x21ce7ae6,0x00000000,0x90088fe5,0x00000000,0xb808cfe8,0xb808d7e7, +0x00000001,0x10859604,0x21ce7ae5,0xe8ffff11,0x04801610,0x9008cfe4,0x0083cfe1,0xd2fffce3, +0x10924941,0x1081c940,0x9000891c,0x90004921,0xc100c824,0x10920741,0x00924725,0x00134201, +0xc1ff70e0,0xc1000031,0x008488e1,0xc2ccb82c,0x10829261,0xc1000044,0xc300002d,0xd600c18a, +0x10830c05,0xe8ffffe9,0x14800c0c,0x108492c0,0x10834d61,0xc1ff70e0,0xc1000045,0xc2cdd840, +0xc100003c,0x008488e1,0xc3000040,0xc1004830,0xc1001839,0xc1003034,0xc1007828,0xc100602d, +0xd600a1a6,0x1091c741,0x00000000,0xb8004720,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1002c25,0x00924725,0xc10000e1,0xe8000025,0x04e03814,0xc100003d, +0xc1000038,0x00130201,0xc1000034,0x00128300,0x0012c401,0xd602c1be,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1003425,0x00924725, +0x00000000,0xb8000240,0xb800423d,0xc1000039,0xc100042c,0xc1000830,0xc1000035,0xc1000c29, +0xd600621a,0xc10000e4,0x90040340,0xc10000e1,0x00000000,0x900402e5,0x00000000,0x9004433d, +0x00000000,0x900442e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d, +0x10924925,0x1081c97c,0x9000891c,0x9000c905,0x1081c724,0xc1005c25,0x00900724,0x00924725, +0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058, +0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece4,0xc1ffe8e0,0x00168201,0x00000000, +0x034647e4,0x034ec7e2,0x00158300,0x00160501,0x00154401,0xc10480e4,0xa40244e4,0xc22ee4e1, +0x00000000,0x061e59e6,0xc30000e0,0x00000000,0x120eb909,0xe8000014,0x0086fae1,0x14103909, +0xe80001bd,0x14003b01,0xd1000228,0x110e3b01,0x0010db00,0x060539e1,0xc1000210,0x00000000, +0x00108501,0xd1fffa5d,0x00000000,0x0010d400,0x00109b01,0xc1000211,0x00000000,0xa40255f3, +0x00000001,0xe80001a1,0x14003c09,0x001ed601,0x120e7b08,0xc1fffce0,0x11debb91,0x00000000, +0x008e39e1,0x00000000,0x034e3863,0x00000001,0x110e3801,0x029e3ae1,0xe800003d,0x14003801, +0xc1fff8e1,0x008eb9e1,0xc1ffffe4,0x034e3a60,0xc1fffce1,0x00000000,0x008ebae0,0x008efbe7, +0x11de7b90,0x110e3801,0x029e39e1,0xe8ffffdd,0x14103801,0xc10240e4,0xc10020e1,0xc238e5e4, +0x009eb9ed,0x00000000,0x061e7ae6,0xe8000120,0x121e7949,0x14003c08,0x0095f8e5,0xd1000154, +0xc10120e0,0xc10090e5,0x10911708,0x008098e4,0x0080dbe2,0x10911708,0xa402550d,0xd1fff985, +0xc10120e1,0x00809be1,0xc20900e0,0x00109b01,0xd1fffd8c,0x060519e1,0x10855aa1,0x00115700, +0x0080d550,0x00111801,0xc1001fe1,0xe8000039,0x0490385c,0xc1001f59,0xc108b850,0x00855551, +0xd1fffdac,0x00809454,0x0080d463,0xc1ffffe4,0xc10048e1,0x009514e0,0x008596e5,0xe8ffffe5, +0x04f0165d,0xd1001bd8,0x00109803,0x1091c77d,0x1091c725,0x00000000,0xb800c704,0xb8010061, +0x00000000,0xb8004054,0xb8000051,0x00000000,0xb801c06c,0xb800871d,0x00000000,0xb800c05c, +0xb8008059,0x1082477c,0xb8018068,0xb8014065,0x07000101,0x10824925,0x00100901,0xd1fffc44, +0x00000000,0x0010db02,0x00108501,0xd1fffc34,0xc10090e0,0xc10048e5,0x0080dbe0,0x008098e6, +0xd2fffe5b,0xd2fffe6e,0xc10240ed,0xc10002e1,0xe8ffff19,0x04f0385c,0xc1000259,0xc1009054, +0xc1012051,0xd1fffbfc,0x00809560,0x0080d46f,0x10859604,0xc10090e4,0xc10048e1,0xe8ffffe8, +0x008555e0,0x008514e5,0x0490165d,0xd2fffedf,0x10924941,0x1081c940,0x9000891c,0xc100c025, +0x00900724,0x00924725,0x00000000,0x900740c4,0x900780c9,0x00000000,0x9006c0bc,0x900700c1, +0x00000000,0x900640b4,0x900680b9,0x00000000,0x9005c0ac,0x900600b1,0x00000000,0x900540a4, +0x900580a9,0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094,0x90048099,0x00000000, +0x9003c08c,0x90040091,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c,0x90030081, +0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064, +0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000, +0x90000051,0xc10000e1,0xe80001d1,0x04e03810,0xc10000c9,0x001bc201,0xc10000c4,0x001b8300, +0xc10000c1,0xc25d5ee8,0xc2e352e4,0xc24f1ee1,0xc3fde9e8,0xc30bcbe4,0xc3fb30e1,0x001b7a00, +0x001b3900,0x001af801,0xc25284e8,0xc277f9e4,0xc219fde1,0xc30763e8,0xc3f281e4,0xc30ffce1, +0x001aba00,0x001a7900,0x001a3801,0xc2769ee8,0xc2cdbbe4,0xc237ade1,0xc3fc89e8,0xc3f1cee4, +0xc30acfe1,0x0019fa00,0x0019b900,0x00197801,0xc2e890e8,0xc2c779e4,0xc255c2e1,0xc30f9ee8, +0xc30898e4,0xc3ff4de1,0x00193a00,0x0018f900,0x0018b801,0xc2934be8,0xc21770e4,0xc2ad7ce1, +0xc3f0bde8,0xc3f061e4,0xc3f89ce1,0x00187a00,0x00183900,0x0017f801,0xc2aa3ee8,0xc21caee4, +0xc26cb5e1,0xc300b2e8,0xc3f434e4,0xc30f42e1,0x0017ba00,0x00177900,0x00173801,0xc28807e8, +0xc23887e4,0xc2b0e2e1,0xc30d7ee8,0xc3f767e4,0xc304cfe1,0x0016fa00,0x0016b900,0x00167801, +0xc2c853e8,0xc2e603e4,0xc23245e1,0xc3f530e8,0xc3f003e4,0xc30e31e1,0x00163a00,0x0015f900, +0x0015b801,0xc28962e8,0xc29346e4,0xc28360e1,0xc30376e8,0xc30cb1e4,0xc3f642e1,0x00157a00, +0x00153900,0x0014f801,0xc2f549e8,0xc20ab7e4,0xc26cbae1,0xc30fdce8,0xc3f023e4,0xc3f34ee1, +0x0014ba00,0x00147900,0x00143801,0xc27ca0e8,0xc2a2a2e4,0xc2ca18e1,0xc309bde8,0xc30216e4, +0xc3f137e1,0x0013fa00,0x0013b900,0x00137801,0xc28756e8,0xc278aae4,0xc235e8e1,0xc3f9e0e8, +0xc3061fe4,0xc30ec8e1,0x00133a00,0x0012f900,0x0012b801,0xd606c22a,0x00000000,0xb8000050, +0xb8004055,0x00000000,0xb8008058,0xb800c05d,0x00000000,0xb8010060,0xb8014065,0x00000000, +0xb8018068,0xb801c06d,0x00000000,0xb8020070,0xb8024075,0x00000000,0xb8028078,0xb802c07d, +0x00000000,0xb8030080,0xb8034085,0x00000000,0xb8038088,0xb803c08d,0x00000000,0xb8040090, +0xb8044095,0x00000000,0xb8048098,0xb804c09d,0x00000000,0xb80500a0,0xb80540a5,0x00000000, +0xb80580a8,0xb805c0ad,0x00000000,0xb80600b0,0xb80640b5,0x00000000,0xb80680b8,0xb806c0bd, +0x1091c740,0xb80700c0,0xb80740c5,0x00000000,0xb80780c8,0xb800871d,0x07000101,0x10824741, +0x00100901,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc100e824,0x90004920,0x10920741, +0x00900724,0x00924725,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c,0x90030081, +0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064, +0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000, +0x90000051,0x00178200,0x00154301,0x00000000,0xb900c4e6,0xc10088e1,0x009e08e1,0x00000000, +0x900038e5,0x00000000,0xb90104e6,0xc10084e1,0x009e08e1,0x00000000,0x900038e5,0x00000000, +0xb80043e3,0x00000001,0xe800013c,0xc1ff78e5,0x14003800,0x008748e4,0x00150301,0xc1000271, +0xe800002d,0x14103808,0xc100206d,0x00000000,0xb801c3e8,0xb80083e3,0xc10100e5,0x120e3808, +0x028e7ae5,0x1086f810,0x9001c3e5,0x00000000,0xb801c3e3,0x00000001,0x129e3841,0xe80000f1, +0x14003801,0xc10020e0,0xac031410,0x061e5b71,0xd1ffd368,0x009e386d,0x008e39e1,0x10808270, +0x00000000,0x1200f809,0x00000000,0xac0354e0,0x8403141b,0x00000001,0xe80000b5,0x040006e1, +0x00000000,0xb80255e3,0x00000001,0xc10000e0,0x129e7805,0xe8000099,0x041038e5,0xc12009e0, +0xc1ffff19,0x00000000,0x9003dee1,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704, +0xb8008059,0x00000000,0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000, +0xb801c06c,0xb8020071,0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081, +0x00000000,0xb8034084,0xb8038089,0x00000000,0xb8004720,0xb800871d,0x07000101,0x10824741, +0x00100901,0xd2fffede,0xc1000171,0xc10000e1,0xe800007d,0x04f0386c,0xc1000069,0xc1ffc0e1, +0x008548e1,0xc10000e1,0xe8000059,0x04f03870,0xc100007d,0x00851a55,0xd1ffd0f0,0x10809e72, +0xc100040d,0xe800001d,0x1410063d,0xd2ffff40,0xc1200ae1,0x00000000,0x9003dee1,0xc1ffff19, +0xe800007d,0x14000601,0x108e0605,0x1087df04,0x800014e1,0xe8ffffc5,0x04901f70,0x10851481, +0x10869a05,0xe8ffffa1,0x04901a6d,0xc10020e1,0xe8000085,0x04f01be0,0x00169b01,0xc1ffc0e4, +0xc1ffe0e1,0x008e48e4,0x008e08e1,0x00851be4,0x00855be1,0xd1ffd074,0x10809e72,0xc100040d, +0xe8000025,0x1410063d,0xd2fffec4,0xc1200ae1,0x00000000,0x9003dee1,0xc1ffff19,0xd2ffff92, +0xc10000e1,0xe80000b1,0x14000601,0x108e4605,0x10869a04,0x800015e4,0xc10020e1,0xe8ffffb8, +0x00000000,0x800014e5,0x04901ae0,0x10851404,0x10855505,0xc1ffc0e4,0xc1ff80e0,0xc1000069, +0x008648e4,0x008608e1,0xc10000e1,0xe8000089,0x04f03870,0xc100007d,0x00159900,0x00155800, +0x00851a61,0x00000000,0x031e166b,0x00000001,0xe800004d,0x14003801,0xd1ffcfd0,0x10809e72, +0xc100060d,0x00000000,0x80001419,0x00000000,0x031e556b,0xc1003fe1,0xe8000025,0x041039e1, +0xd2fffe0c,0xc1200be1,0x00000000,0x9003dee1,0xc1ffff19,0xd2ffff5e,0xc10000e5,0x1087df05, +0xe8ffffa4,0x10855581,0x04901f70,0x10851480,0x10859681,0x10869a04,0xc10020e1,0xe8ffff6d, +0x04901ae1,0x00000000,0x161e1b32,0xc1000058,0x12057808,0xc100005d,0xc10000e1,0xe80000ad, +0x04f0386c,0xc1000069,0x00189601,0xc10000e1,0xe8000089,0x04f03870,0xc100007d,0xc1000084, +0x00181900,0x00151801,0x00000000,0x031e206b,0x00000001,0xe8000139,0x14003801,0xd1ffbcb4, +0x10809e70,0x0010f803,0x00000000,0x034e1d84,0x031e946b,0xc2b118e5,0xc30000e4,0x008e22e0, +0x120eba09,0x00000000,0x034e7ae7,0x00000001,0x00000000,0x21fe46e6,0x00000000,0x900038e5, +0x1087df05,0xe8ffffa4,0x10886111,0x04901f70,0x10851480,0x10882081,0x10869a05,0xe8ffff71, +0x04901a6c,0x1088a2c1,0xc10020e1,0xe80000a5,0x04f01be0,0x00169b01,0x00151501,0x00000000, +0x031e196b,0x00000001,0xe80000c1,0x14003801,0xd1ffbc20,0x10809e70,0x0010f803,0xc10000e1, +0xe800005d,0x04f03870,0xc100007d,0xc10000f0,0x001ed801,0x00000000,0x034e1df0,0x031ebb6b, +0xc2b118e5,0xc30000e4,0x008e14e0,0x120eba09,0x00000000,0x034e7ae7,0x00000001,0x1087df04, +0x00000000,0x21fe46e5,0xe8ffffcc,0x108efb81,0x04901f70,0x108f3c10,0x900038e5,0x10869a04, +0xc10020e1,0xe8ffff79,0x04901ae0,0x108514c1,0x1085d705,0xe8fffea5,0x14901730,0x10855510, +0x10859611,0xd2fffc4a,0xc1000019,0x00000000,0x034e1d87,0xd2ffff0d,0xc10000e0,0x008e62e1, +0x00000000,0x900039e1,0xc10000e1,0xe8ffffb1,0x04f03870,0xc100007d,0xc10000e9,0x00000000, +0x034e1deb,0x1087df05,0xe8fffff4,0xc10000e0,0x008e54e1,0x04901f70,0x108eba10,0x900039e1, +0xd2ffff7f,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc101e424,0x90004920,0x10920741, +0x00900724,0x00924725,0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094,0x90048099, +0x00000000,0x9003c08c,0x90040091,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c, +0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000, +0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0x00188200,0x00160301,0x00000000,0xb900c4e6,0xc1015ce1,0x009e08e1, +0x00000000,0x900038e5,0x00000000,0xb90104e6,0xc10158e1,0x009e08e1,0x00000000,0x900038e5, +0x00000000,0xb80043f7,0x00000001,0xe8000338,0xc1fea4e1,0x14003d00,0x008848e0,0x00164301, +0xc1000281,0x00000000,0xb801c3f3,0xc21000e1,0x029e3ce1,0xe8000319,0x14003801,0xc10004ed, +0xc2b24ce8,0x160e7b78,0xc2b254e1,0xc30000e8,0x00000000,0xc30000e1,0x00000000,0x0087b9e0, +0x0317fbea,0xe8000029,0x14103d08,0xc1002075,0xc10100e0,0xb80083e1,0x028e3ce1,0x00000000, +0x9001c3e2,0x120e3809,0x10877811,0x009e5f74,0xb801c2e5,0x00000000,0x01de1d7d,0x00000000, +0x00000000,0x061eb9e1,0x109e0821,0x00000000,0x900038e4,0x00877a75,0x00000000,0x00000000, +0xb80202ea,0xc1fff8e8,0x109e4810,0xc10000e1,0xe800007c,0x008688e9,0x04f03874,0xc1000070, +0x900039e9,0xc1ffb8e1,0x008588e1,0x00000000,0x031e5e73,0xc2b2ece1,0xc30000e0,0x120e7905, +0x00000000,0x00000000,0x031579e1,0xc10000e1,0xe8000031,0x04f03880,0xc100006d,0x00851c59, +0xd1ffcb88,0x1080a270,0x0010d503,0x1086db04,0x80001419,0xe8ffffed,0x04901b80,0x10851481, +0x10871c05,0xe8ffffa9,0x04901c75,0xe8000065,0x04f01d7c,0x00171d01,0xc1ffb8e4,0xc1ffd8e1, +0x008e48e4,0x008e08e1,0x00851de4,0x00855de1,0x1080a270,0x031e5e73,0xc2b2ece1,0xc30000e0, +0x120e7905,0x00000000,0x0310f9e1,0xd1ffcb1f,0x00000000,0x10871c04,0x80001519,0xe8ffffd4, +0x80001419,0x04901c7c,0x10855504,0x10851405,0xc10000e1,0xe800007d,0x04f0387c,0xc1000071, +0xc1ffb8e4,0xc1ff78e1,0x0085c8e4,0x008588e1,0xc10000e1,0xe8000051,0x04f03880,0xc100006d, +0x00155700,0x00851c59,0x00000000,0x031e1573,0x00000001,0xe800001d,0x14003801,0xd1ffcaac, +0x1080a272,0xc100020d,0x00000000,0x80001419,0x1086db05,0xe8ffffd5,0x04901b80,0x10851480, +0x10855581,0x10871c05,0xe8ffffa9,0x04901c7d,0x00000000,0xb801d9e3,0x00000001,0x129e3841, +0xe80001c9,0x14003801,0xd1ffc8d4,0x00109a00,0x1080e273,0x00109a00,0xac031911,0xd1ffcbbe, +0x0010c601,0x00000000,0xac0359e0,0x8403191b,0x00000001,0xe8000195,0x040006e1,0x00000000, +0xb80258e3,0x00000001,0xc10000e0,0x129e7805,0xe8000179,0x041038e5,0xc12009e0,0xc1ffff19, +0x00000000,0x9003e2e1,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059, +0x00000000,0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c, +0xb8020071,0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x00000000, +0xb8034084,0xb8038089,0x00000000,0xb803c08c,0xb8040091,0x00000000,0xb8044094,0xb8048099, +0x00000000,0xb804c09c,0xb80500a1,0x00000000,0xb8004720,0xb800871d,0x07000101,0x10824741, +0x00100901,0xd2fffce2,0xc1000181,0xe8000079,0x14102009,0x00000000,0xb80103e3,0x00000001, +0x121e7805,0xc27d00e1,0xe8000069,0x040039e1,0xc2bb80e1,0xe800005d,0x040039e1,0xc2dac0e1, +0xe8000079,0x040039e1,0xc2fa00e1,0xe800006d,0x040039e1,0xc23880e1,0xc30001e1,0xe800005d, +0x040039e1,0x00000000,0xb80143e7,0xc2bb80e1,0xe8000051,0x041039e1,0xc10000e1,0xd2fffc86, +0x001ef801,0x00000000,0xb80103e5,0xd2ffff9b,0x00000000,0xb80143e7,0xc27d00e1,0xe8000015, +0x041039e1,0xc10003e1,0xd2fffc5a,0x001ef801,0xd2fffffa,0xc10002e1,0xd2fffc4a,0xc10000ed, +0xd2ffffbe,0xc10001e1,0xc10000e1,0xe80001a5,0x04f0387c,0xc1000071,0xc1ffb8e8,0xc1feb8e4, +0xc1ff78e1,0x008948e8,0x008908e4,0x0088c8e1,0xc1000068,0xc1000164,0xc1000261,0xc10000e1, +0xe8000159,0x04f03880,0xc100006d,0x00156301,0x0015e500,0x00851a90,0x0015a401,0x00000000, +0x031e1773,0x00000001,0xe800010d,0x14003801,0xd1ffc838,0x1080a272,0xc100060d,0x00000000, +0x80001419,0x00000000,0x031e1573,0x00000001,0xe80000a5,0x14003809,0xe80000b5,0x14003801, +0xe80000c1,0x14003805,0xe80000b9,0x1400380d,0x00000000,0x031e5573,0x00000001,0x129e3905, +0xe8000021,0x14003801,0x109e3905,0x00000000,0x031e14e3,0x00000001,0x00000000,0x800054e1, +0x00000000,0x031e9958,0x031f1669,0x00000000,0x031e5859,0xc1003fec,0xc1003fe1,0xc1003fe5, +0x010ebae4,0x00000000,0x010efced,0x010e39e0,0x028e7be9,0x028e39e1,0xe800005d,0x14003801, +0xd2fffd88,0xc1200be1,0x00000000,0x9003e2e1,0xc1ffff19,0x00000000,0x031e166a,0xd2ffff76, +0x00000000,0x800094e0,0x800054e1,0xd1ffc75c,0x1080a272,0xc100060d,0x00000000,0x80005419, +0xd1ffc748,0x1080a272,0xc100060d,0xd2ffff44,0x8000941b,0x1086db04,0xc10060e4,0xc10060e1, +0xe8fffedc,0x008514e0,0x008596e5,0x04901b80,0x1085d780,0x10855581,0x10871c05,0xe8fffea0, +0x10869a0d,0x04901c7c,0x1086180c,0x1086590d,0xc2b2ecf0,0x161e5d90,0x161e1f91,0xc1ffb8f5, +0xc30000f0,0xc10001ec,0xc1feb8e9,0x108e7908,0x108e3808,0xc1000069,0x008648f4,0x0085c8e8, +0x00863bf1,0xc1000858,0x12057908,0x12053809,0xc10000e1,0xe800017d,0x04f03874,0xc1000071, +0x1219da08,0xc1000098,0x00195601,0xc10000e1,0xe8000145,0x04f03880,0xc100006d,0xc10000a0, +0x00191900,0x0088e65d,0x00000000,0x031ee473,0x00000001,0xe8000305,0x14003b01,0xc1ffffe0, +0x031e1e71,0x00000000,0x00000000,0x008e7be1,0xc1feace0,0x00000000,0x1080a271,0x008108e1, +0x120e3805,0x00000000,0x031e18e3,0x00000001,0xc2b2fce0,0x160eb83d,0xc30000e1,0x008e3ae1, +0x00000000,0x031ef8e7,0x00000001,0xd1ffb474,0xc2b358e0,0x160e7b51,0xc30000e1,0x0080f9e1, +0x00000000,0x031e239d,0x00000000,0x034e21a2,0xc1feace4,0x00000000,0xc2b118e9,0xc30000e8, +0x00000000,0x120ef809,0x008e25e0,0x034e48e4,0x034ebbeb,0x00000001,0x00000000,0x21fe79e9, +0x109e3821,0xc1feb0e0,0x900038e5,0x00000000,0x034e48e0,0x034e21a3,0x00000001,0x008e25e0, +0x21fe79e9,0x109e3811,0xc1feb4e0,0x900038e5,0x00000000,0x034e48e0,0x034e21a3,0x00000001, +0x008e25e0,0x21fe79ea,0x00000000,0x900038e5,0x00000000,0xc10060e0,0x1086db05,0xe8fffeec, +0x00000000,0x0088e3e1,0x04901b80,0x10892480,0x108a2811,0x10871c04,0xc10090e1,0xe8fffeb0, +0x00000000,0x008965e1,0x04901c74,0x1089a60d,0xe800016d,0x04f01d7c,0x00171d01,0x00000000, +0x16091d0d,0x0018d500,0x00000000,0x12195a09,0x00000000,0x031ed973,0x00000001,0xe80001f9, +0x14003b01,0xc1ffffe0,0x031e1e71,0x00000000,0x00000000,0x008e7be1,0xc1feace0,0x00000000, +0x1080a271,0x008108e1,0x120e3805,0x00000000,0x031e18e3,0x00000001,0xc2b2fce0,0x160eb83d, +0xc30000e1,0x008e3ae1,0x00000000,0x031ef8e7,0x00000001,0xd1ffb30c,0xc2b358e0,0x160e7b51, +0xc30000e1,0x0080f9e1,0xc10000e1,0xe80000b5,0x04f03880,0xc100006d,0xc10000f4,0x008f245d, +0x00000000,0x031efc95,0x00000000,0x034e61f5,0xc1feace5,0xc2b118e8,0x00000000,0xc10060e1, +0xc30000e8,0x034e48e4,0x120efb09,0x008f3ce0,0x034ebbe8,0x008e23e7,0x00000001,0x00000000, +0x21fe79e9,0x109e3821,0xc1feb0e0,0x900038e5,0x00000000,0x034e48e0,0x034e21f7,0x00000001, +0x008e23e0,0x21fe79e9,0x109e3811,0xc1feb4e0,0x900038e5,0x00000000,0x034e48e0,0x034e21f7, +0x00000001,0x1086db04,0x21fe79e8,0x008e23e1,0xe8ffff71,0x04901b80,0x108f7d10,0x900038e5, +0x10871c04,0xc10090e1,0xe8fffec8,0x00000000,0x0088e3e1,0x04901c7c,0x1089240d,0xc10000e1, +0xe8000039,0x04f03880,0xc100006d,0xc100002d,0xc10020e1,0xe8000015,0x04f01fe0,0x00171f01, +0x00129401,0xd6002306,0x1086db05,0xe8ffffe5,0x04901b80,0x1082cb11,0x10869a05,0xe8fffcd4, +0x10851431,0x14901a30,0x10855530,0x10859631,0xd2fff97a,0xc1000019,0x00000000,0x034e21a3, +0x00000001,0x008e25e1,0xc10000e0,0x109e7821,0x00000000,0x900039e1,0x00000000,0x034e21a3, +0x00000001,0x008e25e1,0xc10000e4,0x109e3811,0x00000000,0x900038e5,0x00000000,0x034e21a3, +0xd2fffdb1,0xc10000e0,0x008e65e1,0x00000000,0x900039e1,0xc10000e1,0xe8ffff29,0x04f03880, +0xc100006d,0xc10000e9,0x00000000,0x034e21eb,0x00000001,0x008e23e1,0xc10000e4,0x109e3821, +0x00000000,0x900038e5,0x00000000,0x034e21eb,0x00000001,0x008e23e1,0xc10000e4,0x109e3811, +0x00000000,0x900038e5,0x00000000,0x034e21eb,0x1086db05,0xe8ffffb4,0xc10000e0,0x008e63e1, +0x04901b80,0x108eba10,0x900039e1,0xd2fffeb7,0x10924941,0x1081c940,0x9000891d,0x10924771, +0x009e820d,0xe800002d,0x14803a00,0x90000408,0xc10000e5,0x001e3a00,0x009eba0d,0xe8fffff9, +0x14e03a00,0x108e7905,0x00000000,0x900004e1,0x00000000,0x900005e5,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc1009424, +0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90034084,0x90038089,0x00000000, +0x9002c07c,0x90030081,0x00000000,0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071, +0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0x00154200,0x00158300,0x0015c401,0x00000000,0xa40243e0, +0xac00c367,0x00000001,0xe800025d,0x14103809,0x00000000,0xa40203e3,0x00000001,0x129e3821, +0xe800023d,0x14003801,0xc1000261,0x129e0504,0xb80002ed,0x111eb800,0x111e4400,0xc10000e1, +0x00000000,0x029e7ae5,0x109e8821,0x00000000,0x90003aed,0x00000000,0x00000000,0xb80042ee, +0x109e8811,0xe80002d0,0xc1fff8f1,0x041038e4,0x008508f0,0x90003aed,0xc10190e1,0xe80001f1, +0x04f019e1,0x12109911,0xd1fffe88,0xc1ffe8e4,0xc1ffece1,0x00000000,0x008108e0,0x008148e5, +0xc100050d,0x129e993c,0xc2c8dce0,0x109e4841,0x121f3a08,0x129ed90c,0x109e8831,0x120e5808, +0x900039f0,0xc30000e1,0x0086b9e0,0x90003aed,0xc21e20e8,0xc1000089,0xc30000e9,0x001eba01, +0x1088a204,0xc1002de0,0xc10000e5,0xe8fffff4,0x00000000,0x90003ae5,0x049022e0,0x108eba11, +0xc1000085,0xc1ffe8e0,0xc1000064,0xc1000081,0x008708e0,0xc1000060,0x1086d649,0x00000000, +0x031e5a87,0xc10000e1,0xe8000071,0x04f038e4,0xc1000089,0xc21e20e0,0x0085e06d,0xc30000e1, +0x008598e1,0x00109500,0x0340dc65,0xd1ffc05f,0x00000000,0x034e5c64,0x80001719,0x00000000, +0x031e1a85,0xc10001e1,0x1088a204,0x00000000,0x10861811,0x10882004,0x00000000,0x020e78e5, +0xe8ffffc4,0x1085d704,0x109e7905,0x049022e0,0x10859610,0x900016e5,0x10886105,0xe8ffff81, +0x14902110,0x10865911,0xc10027e1,0xe800002d,0x04f020e1,0x008ea06d,0x10882004,0xc10027e0, +0xc10000e5,0xe8fffff4,0x00000000,0x80003ae5,0x049020e0,0x108eba05,0xd1ffbe44,0x00109400, +0x0010d503,0x1091c740,0xb8000050,0xb8004055,0x00000000,0xb800c704,0xb8008059,0x00000000, +0xb800c05c,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071, +0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x00000000,0xb8034084, +0xb8038089,0x00000000,0xb8004720,0xb800871d,0x07000101,0x10824741,0x00100901,0xd2fffdd2, +0xc1000161,0xd2fffdca,0xc1000061,0xc101f4e1,0xe800005d,0x04f019e1,0xd1fffc98,0xc1ffece0, +0xc10190e5,0xc1ffe8e0,0x009659e4,0x008108e1,0xc100050c,0x12109908,0x008148e1,0xc2c8dce0, +0x129f590c,0x109f0841,0xd2fffe28,0x109e8830,0xc30000e1,0x120e1808,0x108e7830,0xc10000ed, +0x0086b9e0,0x90003cf4,0x90003aed,0xd1fffc44,0xc1ffece1,0xc1ffe8e0,0x008108e0,0xc101f4e5, +0xc100030c,0x009099e4,0x008148e1,0xc2c8dce0,0xa40216e0,0xc100ffe9,0xc30000e0,0xc10000f4, +0x109f0841,0xc10000ec,0x109e0830,0x108e7861,0x00000000,0x900038ec,0x90003cf5,0xd2fffdb4, +0x128e3811,0x120e1808,0x029eb8e9,0x0086b9e0,0x800216e9,0x12165904,0xc100b4e1,0xe8000171, +0x04f019e1,0x00109901,0xd1fffbc8,0xc1ffe4e4,0xc1ffe8e1,0x00000000,0x008148e0,0x008108e5, +0xc100240d,0xc1ffe4e8,0xc1fff0e4,0xc1ffece1,0x008148e0,0x034088e8,0x008108e5,0xd1fffb96, +0xc100060d,0xc2c8dce4,0xc10000e8,0x109e0831,0xc30000e4,0x900038e8,0x120e1809,0x108e7991, +0x0086b9e1,0xc1ffe8e0,0xc1000085,0xc1000080,0x10875748,0x0087c8e1,0x10879648,0xc100006c, +0xc1000071,0x00000000,0x031e5a84,0x034edf72,0xc10001e9,0xc10000e1,0xe8000084,0x020ebaed, +0x04f038e4,0xc1000088,0x10967a05,0xc21e20e0,0x0085e074,0x00862079,0xc30000e1,0x00859be1, +0x00109500,0x0340df71,0xd1ffbda3,0x010e0664,0x034e5f70,0x80001819,0x00000000,0x800017e1, +0x00000000,0x00000000,0x031e1a85,0xc10001e1,0x1088a204,0x020e38e4,0x10882005,0x10861804, +0x109e7805,0xe8ffffbc,0x1085d704,0x900016e5,0x049022e0,0x1086db10,0x10859611,0x10886105, +0xe8ffff65,0x14902110,0x10871c11,0xc10027e1,0xe8fffd69,0x04f020e1,0x008ea074,0x008ee079, +0xc10000e4,0xc10027e1,0x10882004,0xc10000e4,0x80003be5,0xe8ffffec,0x80003ae5,0x049020e0, +0x108efb04,0x108eba05,0xd2fffd33,0xc100f4e1,0xe8000065,0x04f019e1,0xc100b4e0,0xc2c8dce5, +0xc1003fe0,0x009659e0,0x10928861,0xc30000e4,0x029e19e0,0x109f8851,0x129e193c,0x129f590c, +0x1212f811,0x121ff808,0x109e8830,0x109f0841,0xd2fffeb4,0xc10000ec,0x120e1809,0x108e79c0, +0x90000a2c,0x90003cf5,0x0086b9e0,0x90003efc,0x90003aed,0xd1fff9fc,0xc1ffece1,0xc1ffe8e0, +0x008108e0,0xc100f4e5,0xc100030c,0x009099e4,0x008148e1,0xc2c8dce0,0xc10000f4,0x109f0841, +0xd2fffe64,0x109e8830,0xc30000e1,0x120e1808,0x108e78f0,0xc10000ed,0x0086b9e0,0x90003cf4, +0x90003aed,0x10924941,0x1081c940,0x9000891c,0xc1003c25,0x00924725,0x00000000,0xb80003e7, +0xc10227e1,0xe8000085,0x04a039e1,0xc10240e4,0xc20900e1,0x008482e0,0x900003e5,0xc10048e1, +0x008442e1,0xe8000051,0x04e01149,0xc1fffce0,0xb800113c,0xc2cc7835,0x00000000,0x034411e1, +0xc1000038,0xc2cc9831,0xc100042c,0x00000000,0xc3000035,0xc3000030,0x00000000,0x00129101, +0xd600631a,0xc10048e1,0x008451e1,0xe8ffffc1,0x04801149,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0xd2ffff94,0x108e7965,0x120e3909,0x0084b808,0x900003e5,0x10924941, +0x1081c940,0x9000891d,0x10924771,0xc10048e0,0xc100012d,0x008282e1,0xd600832a,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924935,0x1081c97c,0x9000891c, +0x9000c905,0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc100b825,0x00900724,0x00924725, +0x00000000,0x900680b8,0x9006c0bd,0x00000000,0x900600b0,0x900640b5,0x00000000,0x900580a8, +0x9005c0ad,0x00000000,0x900500a0,0x900540a5,0x00000000,0x90048098,0x9004c09d,0x00000000, +0x90040090,0x90044095,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080,0x90034085, +0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068, +0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000, +0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e4,0xc1ffe4e1,0x00000000,0x034a47e8,0x034a07e5, +0x00000000,0x0349c7e2,0x001ac201,0x001a8500,0x00000000,0x00154401,0x00000000,0xb801c3e4, +0xb80143ef,0xc24000e1,0x029eb9e1,0xe8000011,0x14003a00,0x00198301,0x120efb05,0x121e3b3c, +0x121e7b1d,0x129e3804,0x129e793d,0xe8000014,0x109e3821,0x14003a00,0x008538e5,0x1085140d, +0xc21f04e1,0xc30000e1,0x00000000,0xa00038e3,0x00000001,0xe8000025,0x14103801,0xd1ffb338, +0x00109403,0xc21f04e4,0xc10001e1,0xc30000e5,0x00000000,0x800039e1,0x00000000,0xb801e6e7, +0xc21000e1,0x029e39e1,0xe8000241,0x14003801,0xc10001e5,0xc10000e0,0x900028e5,0xe80003c9, +0x04f038e4,0xc1000095,0x00000000,0x16089431,0xc2cbd8e8,0x00000000,0xc2cbd8f1,0x10892a28, +0xc1fff8ec,0xc2cbd8e5,0xc2100ce0,0xc30000e4,0xc30000f1,0xc30000e8,0x0088d5e0,0xc10008e1, +0xc10004e0,0x008862f0,0x0087f8e9,0x10872920,0x0087b8e4,0x008808ed,0xc100006c,0x00161c00, +0x10876a21,0xc1000068,0xc100005c,0x00166401,0xc10000e1,0xe8000231,0x04f0389c,0xc10000b1, +0x001b5901,0xc10000bc,0x0015a000,0xc10000b9,0x00000000,0xa4026de0,0x034e63b9,0x00000000, +0xb80021e7,0xe8000040,0x00000000,0x008557e5,0x14103808,0x900016e5,0x00000000,0xa4022de3, +0x00000001,0x129e3821,0xe8000169,0x14003801,0x00000000,0x034e1f8b,0x00000001,0x00000000, +0x900016e1,0x00000000,0xb801e6e7,0xc21000e1,0x029e39e1,0xe800015d,0x14003801,0xe8000149, +0x14102c01,0xc10000e1,0x0010ed00,0xb800a614,0x0010ab01,0xd1fff65a,0x00113801,0x00150601, +0x109e0950,0x034160b8,0x109e8961,0x00000000,0x90003851,0xd1ffce50,0x109e0980,0x109e4971, +0x0010ab00,0x900039b0,0x90003aa5,0x00112d00,0x90003894,0x0010d501,0xe800012d,0x14000601, +0x00000000,0xb8004055,0x1091c77c,0xb8000050,0xb800c05d,0x1091c734,0xb8008058,0xb8010061, +0x00000000,0xb800c704,0xb8018069,0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c, +0xb8028079,0x00000000,0xb8024074,0xb8030081,0x00000000,0xb802c07c,0xb8038089,0x00000000, +0xb8034084,0xb8040091,0x00000000,0xb803c08c,0xb8048099,0x00000000,0xb8044094,0xb80500a1, +0x00000000,0xb804c09c,0xb80580a9,0x00000000,0xb80540a4,0xb80600b1,0x00000000,0xb805c0ac, +0xb80680b9,0x00000000,0xb806c0bc,0xb8004721,0x1082477c,0xb80640b4,0xb800871d,0x07000101, +0x10824935,0x00100901,0xd2fffdce,0xc10002e5,0x00000000,0x034e1e8a,0xd2fffeae,0x00000000, +0x900016e1,0xd2fffec4,0xc100b8e1,0x008e2ae2,0xe8000029,0x14102501,0xc10000e1,0xd1ffabf4, +0x0010ed01,0x00812f90,0x00117800,0x0010ab02,0xd2fffeb2,0x00150601,0x00000000,0x031e1db1, +0xd2ffffdf,0x00000000,0x108b2c04,0x108bae11,0xe8fffe00,0x108b6de9,0x04902c9c,0x10859610, +0x108befe9,0x00000000,0xb80066e3,0x00000001,0xe8000079,0x14103809,0x00000000,0xb800a6e3, +0x00000001,0xe8000065,0x14003801,0x00000000,0x034e1c68,0x034e696a,0x00112600,0x0010a300, +0x0010d902,0x109e5820,0x082eb9e0,0x109e0951,0xc1fff8e4,0x900018e8,0x900039e9,0x00000000, +0x034148e4,0x9000386d,0x00000000,0x034e696a,0xd1001d19,0x109e0961,0x00000000,0x900038e5, +0xe8fffe41,0x14100601,0xc10000e1,0xe8000061,0x04f0389c,0xc10000b1,0xc1000058,0x00155900, +0x00152901,0x00000000,0xa40255e0,0x034e635b,0x00000001,0xe8000078,0x008e57e5,0x14103809, +0x0010b900,0x03415468,0x03412059,0xd1ffae76,0x0010d501,0x108b2c05,0xe8ffffcc,0x10851421, +0x04902c9c,0x10859610,0x108555e9,0x00000000,0xb80028e1,0xc10240e0,0x10896505,0xc20900e4, +0x0086dbe0,0xc10074e1,0x008659e0,0x00000000,0x0085d7e5,0xe8fffcbd,0x049025e0,0x10869a10, +0x10861811,0xd2fffd9e,0xc1000019,0xd1fff998,0x0080d468,0x0010b903,0xd2ffff9f,0x10924941, +0x1081c940,0x9000891d,0x10924761,0xc10000e1,0xe8000011,0x04e03810,0xc1000029,0xd600033e, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924935,0x1081c97c, +0x9000891c,0x9000c905,0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc1008825,0x00900724, +0x00924725,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000, +0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e4,0xc1ffe4e1,0x00000000,0x034747e8, +0x034707e5,0x00000000,0x0346c7e1,0x00158201,0x00178401,0x0017c300,0x00000000,0x00168501, +0x00000000,0xb80302e3,0x00000001,0xe800008c,0xc1000061,0x14103800,0x00154300,0xc100005d, +0xc10003e0,0xc1ffff19,0x00000000,0x9003c2e1,0x00000000,0xb8004055,0x1091c77c,0xb8000050, +0xb800c05d,0x1091c734,0xb8008058,0xb8010061,0x00000000,0xb800c704,0xb8018069,0x00000000, +0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079,0x00000000,0xb802c07c,0xb8004721, +0x1082477c,0xb8024074,0xb800871d,0x07000101,0x10824935,0x00100901,0x00000000,0xb801c3e7, +0xc21000e1,0x029e39e1,0xe8000059,0x14003801,0xe8000049,0x14101b05,0xc1000951,0xd1ffb306, +0x10808271,0x00000000,0xb80196e3,0x00000001,0x009e3819,0xe8000045,0x04e03851,0xd2ffff54, +0xc10000e0,0xc1200ce5,0x00000000,0x900356e0,0x9003d6e5,0xc1ffff19,0xd2ffffc6,0xc1001151, +0xe8000011,0x14101b05,0xd2ffffb6,0xc1001151,0xd2ffffae,0xc1002051,0x00000000,0xb801d5e3, +0x00000001,0x129e3841,0xe800005d,0x14003801,0x1200d40c,0xac031510,0x10809671,0xd1ffb51f, +0x00000000,0xac0355e0,0x8403151b,0x00000001,0xe8000035,0x040006e1,0x00000000,0xb8025fe3, +0x00000001,0xc10000e0,0x129e7805,0xe8000019,0x041038e5,0xc12009e0,0xc1ffff5d,0x00000000, +0x9003d6e1,0xc1fff8e4,0xb801d5e0,0xc1fffce1,0xc21000f0,0x008ec8e4,0x109e8951,0xd1ffa378, +0x109e0960,0x008e48e1,0x10809670,0x900038e4,0x0010db01,0x00115a00,0x90003aec,0x029138f1, +0xe8000019,0x14000601,0xe8000011,0x14101701,0xc1ffff5c,0x9003d619,0xc1fffce1,0xc1ffe8e0, +0xb801d5e0,0x034e48e1,0x008088e3,0x028e38e5,0x00000000,0x9001d5e1,0x00000000,0xb80215e0, +0xb8005ae7,0x00000001,0x028e38e5,0x00000000,0x900215e1,0x00000000,0xb801960d,0xd1ffb107, +0xd1ffb2c8,0xc1ffe8e1,0x00000000,0x008088e1,0xc100200d,0xc20000e5,0xc20000e0,0x00150600, +0xc3ffe6e5,0xc3ffe2e0,0x029e46e5,0xe8000061,0x041039e1,0xc20000e1,0xc30001e1,0xc10000e0, +0x029e46e1,0xe800001d,0x041038e5,0xd1ffb1ac,0xc1ffe8e1,0x00000000,0x008088e1,0xc100100d, +0xc20000e1,0xc30008e1,0x029e14e1,0xe8000155,0x14003801,0xc10009e5,0xd1ffb250,0xc1ffe8e1, +0x0010f900,0x008088e2,0x00160601,0xd1ffb114,0x10809673,0x00000000,0xb80196e0,0xb8001aeb, +0x00000001,0x00957819,0x008e7a55,0x01be18e5,0x00000000,0x06163861,0xe8000111,0x14103a00, +0xc1000050,0x00967961,0x00000000,0xb801d6e7,0x109e0841,0x00000000,0x900038e5,0x00000000, +0xb80216e7,0x109e0831,0xc10000e0,0x900038e5,0x00151900,0x900356e1,0xe800004c,0x00955551, +0x14101701,0xc1fff0e0,0x109e8950,0x109e4961,0xd1fff660,0x109e0970,0x008088e1,0x0010df00, +0x90003a74,0x9000386d,0x00115a00,0x90003970,0x00111e01,0xe8000011,0x14000601,0xc1ffff5c, +0x9003d619,0xe8000039,0x140017fd,0xc1fff0e4,0xc1fff4e1,0x00000000,0x034e48e7,0x00000001, +0x00000000,0x900256e5,0x00000000,0x034e08e3,0x00000001,0x00000000,0x900296e1,0xc1fff8e1, +0x00000000,0x034e08e3,0x120e590d,0xe80000d8,0x009e39e1,0x04901560,0x9002d6e1,0x00111800, +0xb80196e0,0xb803160a,0xd1fffb56,0x0090f861,0x00000000,0x90035661,0xd2fffc58,0x00119703, +0xd2fffeba,0xc10008e5,0x00000000,0xb80356e7,0x00000001,0xe8000025,0x04b03ae5,0xe8ffff1d, +0x14101701,0xd2ffff14,0xc12010e1,0x00000000,0x9003d6e1,0xc1ffff5d,0xc1fff0e0,0xb80316e1, +0x008088e2,0xd1ffaefd,0x008e38e5,0x0090f8e9,0x00000000,0xb8001ae3,0x00000001,0xe8fffedd, +0x04b019e1,0xd1ffaf7c,0x009519e0,0x10809673,0x00000000,0xb80316e4,0xb80356e1,0x00111401, +0xd1fffabe,0x0010c600,0x0080b9e1,0x00000000,0xb80356e3,0xd2fffea5,0x008e3851,0x00000000, +0x900356e1,0x00000000,0xb8001ae3,0x00000001,0xe8000089,0x04f019e1,0x00000000,0x00953865, +0x008e1455,0xe800000d,0x04b03861,0x00951855,0x00000000,0xb80356e3,0x00000001,0xe8000025, +0x04f014e1,0x00111400,0xb803160b,0xd1fffa51,0x008e3809,0x0090f851,0x00000000,0x90035651, +0x00111500,0xb80356e5,0x00000000,0xb80316e8,0xb80196e2,0xd1fffa2a,0x0080bae4,0x0090f855, +0x00000000,0xb80356e3,0xd2fffed1,0x008e3855,0x00000000,0x900356e1,0xd2ffffc8,0xc10000e1, +0x00000000,0x900356e2,0x10924941,0x1081c940,0x9000c904,0x9000891d,0xc100a024,0x90004920, +0x10920741,0x00900724,0x00924725,0x00000000,0x90000050,0x90004055,0xd1ff86bf,0xd1ff8546, +0xc1000009,0xc2001ce0,0xc2a3684d,0xc30382e0,0xc21f0041,0x00000000,0xb80038e5,0xc21000e0, +0xc21f0434,0xc21efc49,0xc21f053c,0xc21f3028,0xc21f18f5,0xc21f08f8,0x00000000,0xc2a36855, +0xc21f1cec,0x029e39e0,0xc2a398e5,0xc3000048,0xc3000040,0xc300004d,0xc1000044,0x1222f830, +0xc300003d,0xc10000e8,0xc1000038,0xc1000031,0xc3000034,0xc3000028,0xc30000f9,0xc10000fc, +0xc10000e0,0xc10000f1,0xc30000f4,0xc30000ec,0xc30000e5,0xc10000e8,0x900010e8,0x90001245, +0xc3000054,0x80000d30,0x80000f39,0xc10000e0,0x90003ee0,0x90000afd,0xe80002e0,0x90003be8, +0x90003df1,0x14100b04,0x10851340,0x900039e1,0xc20014e0,0xc1ffc4e4,0xc1000009,0xc30382e0, +0xc1000f14,0x0080c8e5,0x00000000,0xb8003811,0xd1ff78cb,0xd1ff7eea,0xc1000009,0xc2c1acf9, +0xc2c1d4e8,0xc100002c,0xc1ffc4e1,0xc2c1c0f0,0xc30001f8,0xc30001e9,0x008288e0,0xc10028ec, +0xc10000fd,0xc10014f4,0x001eba00,0xc30001f1,0x00000000,0x034e0af4,0x034e4afd,0x00000000, +0x00000000,0x034e0aed,0x1082cb04,0x108efb11,0x108fff11,0x108f7d10,0x90003ce0,0x90003ee5, +0xe8ffffd0,0x90003ae0,0x108f3c11,0x14800b14,0x108fbe10,0x108eba11,0xc2010ce4,0xc21f34e1, +0xc2a39cec,0xc10001e8,0xc30382e5,0xc30000ec,0xb80039e5,0x00000000,0x90003be9,0xd1ff781c, +0xc20db40c,0xc30000e1,0xc300010c,0x00000000,0xc1000009,0xc1100014,0x900038e4,0x00113901, +0xc21f34e8,0xc21f30e4,0xc21f1ce1,0xc30000e8,0xc30000e4,0xc30000e1,0x00000000,0xb8003ae4, +0xb80039f5,0xc24000e0,0xb80038e9,0xc21ef8fc,0xc21f30ec,0xc21f3429,0xc20db4f9,0xc24000f0, +0x00000000,0x0082f9e1,0xc24000e4,0xc30001f8,0xc21f1ce1,0xc3000028,0x008e7ae4,0x008ebdf1, +0xd1ff7dbc,0xc30000fc,0xc30000ed,0xc30000e0,0x90003ff8,0x90000a2d,0xc1000008,0x900038e4, +0x90003be9,0xc2011ce0,0xc21f1ce4,0xc21f30e9,0xc30382e0,0xc30000e4,0xc30000e9,0x00000000, +0xb80038e0,0xb80039e5,0x00000000,0xb8003aee,0xc20038e9,0xc30382e8,0x00000000,0x109e3811, +0xe80001bc,0x90003aed,0x04a039e1,0xc21f18e4,0xc21f1cf1,0xc30000e4,0xc2a398e8,0xc21f18e1, +0xc30000f0,0xb80039e8,0xc10000ed,0xc30000e8,0xc10001e4,0xc30000e1,0x00000000,0x90003ae4, +0x90003ced,0xc1ffffe5,0x02ae79e9,0x129e7905,0xe8000148,0x900038e5,0x14003901,0xc20104e4, +0xc21f34e1,0xc30382e4,0xc30000e1,0x00000000,0xb80039e7,0x00000001,0x00000000,0x900038e5, +0xd1000169,0xc1000611,0xc1000408,0xc100020c,0xc1000115,0xe8000015,0x14000601,0xd1000246, +0xc1000208,0xc1301f0d,0xd10006b1,0xc2a36809,0xc3000009,0xd1ffb4b9,0xc2a36809,0xc3000009, +0xc10000e1,0xd10002f0,0xc10000e8,0xc10000e5,0xc2a36808,0x9000d5e4,0x900095e9,0xc3000008, +0x900094e1,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb8004723,0x00000000,0xb8004055, +0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0xc2c1d4e8,0xc2c1acf9, +0xc2c170fc,0xc2c198ec,0xc2c184f5,0xc2c1c0f0,0xc30001fc,0xc30001e9,0xc100002c,0xc30001f0, +0xc30001f9,0xc30001f4,0x001eba00,0xc30001ed,0x00000000,0xb8003fe4,0xb8003de1,0x00000000, +0xb8003be1,0x1082cb04,0x108efb11,0x108fff11,0x108f7d10,0x90003ce0,0x90003ee5,0xe8ffffd4, +0x90003ae0,0x108f3c11,0x14800b14,0x108fbe10,0x108eba11,0xd2fffd67,0xc2010ce4,0xc21f34e1, +0xc30382e4,0xc30000e1,0x00000000,0xb80039e6,0xd2fffed2,0x00000000,0x900038e5,0xd100002d, +0xc1000411,0xc1000408,0xc100000c,0xc1000115,0xe8fffed9,0x14000601,0xd100010a,0xc1000208, +0xc1301f0d,0xd2fffec7,0x10924941,0x1081c940,0x9000891c,0xc1003025,0x00924725,0x001f0401, +0x001f8200,0x001ec500,0x001f4301,0xc20008e4,0xc10000e9,0xc30382e5,0x001e7901,0x00000000, +0xb80039e3,0x00000001,0x129e3805,0xe800001d,0x14003801,0xc20000e1,0x108eba04,0xc30001e1, +0xe8ffffdd,0x04a03ae1,0x120e7d10,0x120e3b25,0x120ebc18,0x028f3ee4,0xc20008e5,0xc20010e8, +0x028f3ce8,0xc30382e5,0xc30382e8,0xc10001e0,0x028f3ce1,0xe8000054,0x900039e0,0x90003af1, +0x14003b00,0xc10000fd,0xc20010ec,0xc10000e9,0xc30382ed,0x001efb01,0x00000000,0xb8003be7, +0xc10200e1,0x029e39e1,0xe8000021,0x14003801,0xc20000e1,0x108eba04,0xc30010e1,0xe8ffffdd, +0x04a03ae1,0xc10001fd,0x0011bf01,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002425,0x00900724,0x00924725, +0x00000000,0x90000050,0x90004055,0x00154200,0x00150301,0xd1ff7c3a,0xc1000109,0xd1fffecd, +0x00109501,0xc1000210,0xc100000c,0xc1000115,0xe800001d,0x14000601,0xd1fffeb1,0xc1000211, +0xc1000208,0xc100000c,0xc1000115,0xc2000ce0,0xc20018e8,0xc20008e5,0xc30382e0,0xc30382e9, +0xc30382e4,0xb80038e4,0xc10001e1,0x00000000,0x900039e0,0x90003a52,0xc2000ce1,0xc30382e0, +0x128e7905,0x00000000,0x900038e5,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741, +0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000c904, +0x9000891d,0xc100c024,0x90004920,0x10920741,0x00900724,0x00924725,0x00000000,0x90028078, +0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000, +0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055, +0x00168201,0xc1004ce1,0xc10000e4,0xc100005c,0x009e08e1,0x00000000,0x900038e5,0x00000000, +0xb802827f,0x00000001,0xe8000075,0x14101f01,0xc1ffff19,0x00000000,0xb8004055,0x1091c740, +0xb8000050,0xb8008059,0x00000000,0xb800c704,0xb8010061,0x00000000,0xb800c05c,0xb8018069, +0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079,0x00000000,0xb802c07c, +0xb8004721,0x00000000,0xb8024074,0xb800871d,0x07000101,0x10824741,0x00100901,0xc2002ce4, +0xc20004ec,0xc138e4e9,0xc30382e4,0xc30382ec,0xc10480e1,0x00000000,0xb80039f0,0xb8003bfd, +0xc1004828,0xc21f0ced,0xc21f20f4,0xc1004030,0xc21f14f9,0xc21f10e5,0xc10000f0,0x218ebce8, +0x009e8829,0xc1ffb434,0x90003af0,0xc212682d,0xc30000f4,0xc30000f8,0x120f3a05,0x1292bf0c, +0x061ebce0,0x109fc8b1,0xc30000ec,0x90003d28,0xc10010f5,0xc1ffb8e0,0x00875f30,0xc30000e5, +0x120eba04,0x00878834,0x00871f2d,0xd1ffa488,0x10864240,0x0016c201,0x008088e0,0x90003ef4, +0x90003f29,0xc100000c,0x900039e8,0x90003bf1,0xe8000165,0x140006fd,0xc2002850,0xc2a39460, +0xc2010859,0xc21f0054,0xc3038250,0xc3000061,0xc3038258,0xc3000054,0x00151401,0xd100027c, +0x00109b00,0x0010df03,0xe8000131,0x14000641,0xc10100e1,0xe8000121,0x040006e1,0xc21000e1, +0xe8000101,0x040006e1,0xd1ffb034,0xc1ffb0e0,0x0010de01,0x00109a00,0x008148e0,0x00111902, +0xe800004d,0x141006fd,0x00000000,0xb803dfe7,0xc2f000e1,0xc10000e0,0x029e79e1,0xe80000c5, +0x040038e5,0xd1ffae71,0x00111d00,0x0010df00,0x00109e02,0xe80000c5,0x14000641,0xc10100e1, +0xe80000b5,0x040006e1,0xd2ffffa3,0x00000000,0xb8019fe4,0xb8015fe1,0x00000000,0xb80018e4, +0xb80016e3,0x009eb9e1,0x008e79e9,0xe800008c,0x900018e5,0x04c039e1,0xe8ffff71,0x14100601, +0xc1ffb0e0,0xc1ffb8e8,0xc21004e5,0x008088e8,0x034e48e1,0x00111d00,0x00815ce4,0x0010d901, +0xd1000405,0x109e0951,0x00000000,0x900038e5,0xe8000049,0x14000641,0xc10100e1,0xe8000039, +0x040006e1,0x00000000,0xb80015e3,0xd2ffff1d,0x108e3805,0x00000000,0x900014e0,0x900015e1, +0x00000000,0xb803dfe3,0x00000001,0xe8fffed1,0x14003805,0xc1ffff5d,0xc1ffb0e0,0xc10003e9, +0x00000000,0x0340c8e1,0xd1ffa2ec,0xc10048e1,0xc1ffb8e0,0x009e48e1,0x008088e0,0x900039e9, +0x00000000,0xb8029ae3,0x00000001,0x00000000,0xb803f8eb,0x00000001,0x110e7a00,0x110e3a05, +0x028e39e1,0xe8000021,0x14003801,0xd1fffbb4,0x00000000,0x0010fa02,0xc1000109,0xd2fffd18, +0x00119703,0xd1fffb9c,0x00000000,0x0010fa02,0xc1000209,0xd2ffffeb,0x10924941,0x1081c940, +0x9000891c,0xc1002425,0x00924725,0xc21f38e0,0xc22ee4ed,0xc30000e0,0xc280ece9,0x129e38f0, +0xc30000e9,0xc22ee0e4,0xc252e4e0,0x108f3821,0xc30000e4,0x900042f0,0xc30000ed,0xc280ece4, +0x900039f0,0xc30000e1,0xc30000e4,0x900282e8,0x900142ed,0xc25cece8,0x900339e0,0xc21200e5, +0xc30000e8,0xb80282f0,0xc22278e1,0x008ebae6,0xc22274e4,0x00000000,0xc25ceced,0xc30000ec, +0x008e7ce5,0x00000000,0x900039ed,0x00000000,0xb80282e7,0x00000001,0x008e39e1,0x00000000, +0x900038e9,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1003c25,0x00900724,0x00924725,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0x00154200,0x00158301,0x00000000,0xb800c2e3,0x00000001, +0xe800003d,0x14003801,0xc1001019,0x1091c741,0x00000000,0xb800c704,0xb800805b,0x00000000, +0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0x00000000, +0xb80183eb,0x00000001,0xe8000029,0x14003a01,0x00000000,0xb80042e4,0xb80082e3,0x00000001, +0x008e39e1,0x009e38e9,0x00000000,0x900082e1,0xc21ef8e4,0xb80082fc,0xc21f38e1,0xc30000e4, +0x00000000,0xc30000e1,0x00000000,0xb80039e6,0x008e3fe1,0x00000000,0xb80183f1,0x129fb90d, +0x009e38f9,0xc10004e0,0x00000000,0x129e780d,0xe800004c,0x009e38e5,0x14003c00,0x129f780d, +0xc21f38ec,0xc10000e1,0xe8000034,0xc30000ed,0x04e038fc,0xc10000e8,0x008e7ded,0x001e7901, +0x00000000,0x031e3cea,0x108eba05,0xe8fffff5,0x04803afc,0x108e7904,0x800039e1,0xc21f38e4, +0xc10fa0e1,0xc21ef8e8,0x009f38fc,0xc30000e5,0x108e3c0c,0x008f7de4,0x009efff9,0xc30000e8, +0x900042f4,0x008e78f9,0x109e0950,0xb8003ae9,0x12217908,0x900038f0,0x0080fded,0xd10002a5, +0x109e0960,0x00000000,0xc10000e5,0xc1000008,0x900038e4,0x00913af9,0xe8000041,0x141006fc, +0x00150601,0xc10001e0,0xb80055e4,0xb80095e1,0x00000000,0x9000d5e3,0xc1000050,0x008e78e5, +0x10851404,0xc10000e1,0xe8fffff8,0x800039e1,0x14801420,0x108e7905,0xc21efce4,0xc20108e1, +0xc30000e4,0xc30382e1,0x00000000,0xb80039e4,0xb80038e3,0x00000001,0xe8000041,0x048039e1, +0xe8000039,0x14e01421,0x00000000,0xb80095e0,0xb80055e7,0x00000001,0x008e14e1,0x008e78e5, +0x10851404,0xc10000e1,0xe8fffff8,0x800039e1,0x14801420,0x108e7905,0x00109600,0xb80095e0, +0xb800550f,0xd10011c5,0x008e3851,0x00113800,0x900095e1,0xd1ff72ea,0xc1000009,0xd2fffdf2, +0xc1000019,0x1092497d,0x10924915,0x1081c97c,0x9000891c,0x9000c905,0x1081c714,0xc1004825, +0x00900724,0x00924725,0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061, +0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece0,0x00164301,0x00000000, +0x0345c7e3,0x00168200,0x00000000,0x00160501,0x00000000,0xac008550,0xb800855a,0x00000000, +0xb800c556,0xe800000d,0x14101405,0xc1000055,0x00000000,0xb80083e3,0x00000001,0xe80000a9, +0x04003851,0xc10001e4,0x90010250,0xc10001e1,0x0010d700,0x9001c2e0,0x900002e5,0x00000000, +0xb80005e3,0x00000001,0x00000000,0x900182e1,0x00000000,0xb80005e2,0xd1ff9e7e,0x00000000, +0x900142e1,0xe8000061,0x141006fd,0xc1010019,0x1091c77d,0x1091c715,0x00000000,0xb800c704, +0xb8010061,0x00000000,0xb8004054,0xb8000051,0x00000000,0xb800c05d,0x00000000,0xb8008058, +0xb8018069,0x00000000,0xb8014064,0xb800871d,0x07000100,0x00000000,0x1082477d,0x10824915, +0x00100901,0x00000000,0x00000000,0x90011a51,0x00109a00,0x90009951,0x0010d700,0xb8011ae1, +0x00000000,0xac00d8e3,0x00000000,0x9000d9e1,0x00000000,0x90029a58,0x90025ae1,0x00000000, +0x9002da55,0xc10000e4,0xb80059e0,0xc10002e1,0x00000000,0x90001ae0,0x90031ae5,0xd1ff9dba, +0x00000000,0x90039ae1,0xe8000011,0x141006fd,0xd2ffff42,0xc1010019,0xd2ffff3a,0xc1000019, +0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x9000c905,0x1081c724,0xc1007025,0x00900724, +0x00924725,0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000, +0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece4,0xc1ffe8e0,0x00164301,0x00000000, +0x034507e4,0x034ec7e3,0x00168401,0xc21efce4,0xc20108e1,0xc30000e4,0xc30382e1,0x00000000, +0xb80039e4,0xb80038e3,0x00000001,0xe8000061,0x048039e1,0xc1ffff19,0x1091c77d,0x1091c725, +0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8004054,0xb8000051,0x00000000,0xb800c05d, +0x00000000,0xb8008058,0xb8018069,0x00000000,0xb8014064,0xb800871d,0x07000100,0x00000000, +0x1082477d,0x10824925,0x00100901,0xc21f28e1,0xc30000e1,0x00000000,0xb80038e3,0xe8000435, +0x14003b00,0x120f4508,0x129eb8f1,0xc20db4e4,0xc20db4f0,0xc24000e1,0xc30001e4,0xc30001f1, +0xc2400060,0x008ef8e5,0x00000000,0x008e3af5,0xe80005c1,0x04a03861,0xc21ef8e0,0x00000000, +0x009598e9,0xc30000e0,0x00957d59,0x00000000,0xb80038eb,0x00000001,0x01ae3aec,0x01ee7af1, +0x029e39e1,0xe80003ed,0x14003801,0xc21f2ce0,0x0015fc01,0xc30000e1,0x00000000,0x900038ed, +0xc2a39ce1,0xc30000e1,0x00000000,0xb80038e3,0x00000001,0xe8000011,0x14103801,0xd1ff6f82, +0xc1000109,0x12259609,0xe8000025,0x14001601,0xd1ff6a10,0x0010d901,0x00115600,0x00111a01, +0xc1000009,0xd1ff6f5a,0xc1000009,0x122e1509,0xe8000035,0x14003801,0xc21f2ce0,0x120e5608, +0x00117801,0xc30000e0,0xc1000008,0x0080d9e5,0x00000000,0xb8003811,0xd1ff69cb,0xd1ff6f22, +0xc1000009,0xc2a39ce1,0xc30000e1,0x00000000,0xb80038e3,0x00000001,0xe8000031,0x14003801, +0xd1fff389,0xc1000111,0xc1000408,0xc100000c,0xc1000115,0xe8000015,0x14000601,0xd1fff466, +0xc1000208,0xc1301f0d,0xc21f30e4,0xc20108e1,0xc30000e4,0xc30382e0,0x00159801,0x00000000, +0xb80039e8,0xb80038e3,0x00000001,0x008e7a61,0xe800000d,0x04a039e1,0x0095b8e9,0xc21f1ce4, +0xc2011ce1,0xc30000e4,0xc30382e1,0x00000000,0xb80039e8,0xb80038e3,0x00000001,0x008e7a59, +0xe80002cd,0x04a039e1,0x0095b8e8,0x009579e1,0xe8000029,0x14a0160d,0xc21f34e0,0xc1000108, +0x12215609,0xc30000e0,0x0010d701,0x00000000,0xb8003811,0xd1ff6827,0xc21f28e8,0xc2011ce1, +0xc21f1ce4,0xc21f30ec,0xc30000e9,0xc21f34f0,0xb8003ae0,0xc30000e5,0xc21f2ce8,0xc30000ec, +0xc30382e1,0xc30000f0,0xb80039e4,0xb80038e1,0xc30000e8,0xb8003cec,0xb8003b29,0xc21f342c, +0xb8003af0,0x009e18e1,0x009f94e1,0xc21f30fd,0xc21f28f4,0x00000000,0x008eb959,0xc21ef8ec, +0x00833b58,0xc21f1ce5,0x109e3810,0xc30000fc,0x00828a59,0xc300002c,0xc30000ec,0x008f3cf9, +0xc30000f4,0x90000b30,0xc30000e5,0xe800022c,0x90003df8,0x90003f29,0x04a03ae0,0x900039e8, +0x90003bf1,0xd1ff6d9a,0xc1000109,0xc21f18e4,0xc21f1cf1,0xc30000e4,0xc2a398e8,0xc21f18e1, +0xc30000f0,0xb80039e8,0xc10000ed,0xc30000e8,0xc10001e4,0xc30000e1,0x00000000,0x90003ae4, +0x90003ced,0xc1ffffe5,0x02ae79e9,0x129e7905,0xe80001a4,0x900038e5,0x14003901,0xc20104e4, +0xc21f34e1,0xc30382e4,0xc30000e1,0x00000000,0xb80039e7,0x00000001,0x00000000,0x900038e5, +0xe8000091,0x14a0150d,0xc21f34e0,0x12215508,0x0080d759,0xc30000e0,0xc1000109,0x00000000, +0xb8003811,0xd1ff66d7,0xd1ff6cf6,0xc1000109,0xc21f34e8,0xc21f30e4,0xc21f1ce1,0xc30000e8, +0xc30000e4,0xc30000e1,0x00000000,0xb8003aec,0xb80039e5,0xc21f34f0,0xb80038e4,0xc21f1ce1, +0xc21f30e8,0xc30000e0,0xc30000f1,0xc30000e9,0x008ef954,0x00000000,0x008f7b55,0x008e7954, +0x90003aec,0x90003cf5,0x00000000,0x900038e5,0xc2a39ce1,0xc30000e1,0x00000000,0xb80038e3, +0x00000001,0xe8000039,0x14003801,0xd1ff6c72,0xc1000109,0xd1fff0f5,0xc1000411,0xc1000408, +0xc100000c,0xc1000115,0xe8000015,0x14000601,0xd1fff1d2,0xc1000208,0xc1301f0d,0xc21efce4, +0xc20108e1,0xc30000e4,0xc30382e1,0x00000000,0xb80039e8,0xb80038e3,0x00000001,0x008e7a51, +0xe800000d,0x04a039e1,0x009538e9,0xd2fffb8c,0xc20038e0,0xc21efce5,0xc30000e4,0xc30382e0, +0x008eba51,0x00119400,0x900038e8,0x900039e9,0xd2fffbf8,0xc20db4e5,0xc30001e4,0xc20db4f0, +0xc12000e1,0xc1200060,0x008ef8e4,0xc30001f1,0xe8fffc31,0x04803aed,0xd2fffc28,0xc21f2ce1, +0xc30000e1,0x0015fb00,0x900038f1,0xd2fffd46,0xc1000055,0xc2010ce4,0xc21f34e1,0xc30382e4, +0xc30000e1,0x00000000,0xb80039e6,0xd2fffe76,0x00000000,0x900038e5,0xc2a398e0,0xc22000e5, +0xc30000e0,0x01ee7ae5,0x00000000,0xb80038e3,0x00000001,0x029e39e1,0xe80000e9,0x14003801, +0xd1ff6b5c,0xc2a398e5,0xc30000e4,0xc10000e1,0xc1000108,0x900039e1,0xc21f30e8,0xc2011ce0, +0xc21f1ce5,0xc30000e8,0xc30382e0,0xc30000e5,0xc20108e0,0xb8003ae4,0xb80038e1,0xc30382e0, +0xb80039e1,0x00000000,0xb80038e2,0x008e79e1,0x009e79e1,0xe8fffec9,0x04e039e1,0xc2a39ce1, +0xc30000e1,0x00000000,0xb80038e3,0x00000001,0xe8000061,0x14003801,0xc1000659,0xc21f18e1, +0xc30000e1,0x00000000,0xb80038e3,0x00000001,0xe8000049,0x14003801,0xc1000155,0xd1ffef4c, +0x00111601,0x00000000,0x00000000,0x0010d501,0xc1000408,0xc1000115,0xe8fffe65,0x14000601, +0xd1fff022,0xc1000208,0xc1301f0d,0xd2fffe53,0xd2ffffae,0xc1000559,0xd2ffffc6,0xc1000255, +0xc2a39ce1,0xc30000e1,0x00000000,0xb80038e3,0x00000001,0xe8fffe29,0x14003801,0xd1ff6a62, +0xc1000109,0xd1ffeee5,0xc1000411,0xc1000408,0xc100000c,0xc1000115,0xe8fffe05,0x14000601, +0xd1ffefc2,0xc1000208,0xc1301f0d,0xd2fffdf3,0xe8000011,0x14000501,0xd1ff64ca,0xc1000009, +0xc21f28ec,0xc21ef8e4,0xc21f28e9,0xc30000ec,0xc30000e4,0xc21ef8e1,0x00000000,0xb8003bec, +0xb80039e6,0xc30000e9,0xd1ff69f5,0xc30000e0,0x008efb50,0x008e7951,0xc1000008,0x900038e4, +0x90003aed,0xd2fffd9b,0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x90004921,0x1081c724, +0xc1002825,0x00920724,0xc100e825,0x00900724,0x00924725,0x00000000,0x90010060,0x90014065, +0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece4,0xc1ffe8e1, +0x00000000,0x034487e4,0x034447e3,0x00000001,0x00000000,0xa40203e4,0xa41083e1,0x00000000, +0xa40243ec,0xa410c3eb,0x00000001,0x129e7920,0x011ebbe8,0x129e3821,0x011e39e1,0x028e3ae1, +0xe8000049,0x14003801,0xc1201419,0x00000000,0xb8000050,0xb8004055,0x1091c77c,0xb8008058, +0xb800c05d,0x1091c724,0xb8010060,0xb8014065,0x1082477c,0xb8004720,0xb800871d,0x07000101, +0x10824925,0x00100901,0x00000000,0xb80084e9,0xc1ffb2e1,0x008408e1,0xc1000058,0x00000000, +0x001e5001,0x10859604,0xc10027e1,0xe8fffff8,0x840039e9,0x049016e0,0x108e7909,0x00000000, +0xb80084e3,0x00000001,0x129e3805,0xe8000351,0x14003801,0x00000000,0xb801c4e8,0xa410c3e2, +0x00000000,0x00000000,0xb80042f5,0xc10100e5,0xe8000428,0x028e7ae5,0x14103808,0x1085c3e8, +0x9001c4e5,0xc10058e4,0xa40217e1,0xc10054e8,0xc10000f0,0xc1005ce1,0xc1ffa4e8,0x009ec8e4, +0x009e48e9,0xc10000f0,0x900039f0,0x009e48e1,0xea000084,0xc10000e8,0x008348e9,0x129e3820, +0x900039e8,0x90003bf1,0xc1000060,0xc1000050,0xc100003d,0x14003800,0xc1000030,0xc100004d, +0x00000000,0x03155317,0xc10000e1,0xe800002d,0x04f03854,0xc1000058,0x1084d305,0xc10000e5, +0x00000000,0x034e3de7,0x00000001,0xe8000345,0x14003801,0x00131301,0xc10024e0,0x00851454, +0x120e5509,0xe8ffffbc,0x008f7de5,0x049014e1,0x0013d301,0xe8000075,0x04f01444,0xc1000039, +0x00000000,0x03155317,0xc10000e1,0xe800003d,0x04f03854,0xc1000058,0x1084d305,0xc10000e5, +0x00000000,0x034e3de7,0x00000001,0xe80002f9,0x14003801,0x120e0e08,0x00161301,0x008e0de1, +0x00000000,0x9000384d,0x108e4e04,0x120e1508,0x00851455,0x11be3908,0x008f7de1,0xe8ffffa4, +0x0613b9e1,0x04901445,0x111e5800,0x009e8f30,0xc10000e1,0x00000000,0x00000000,0x061e7ae6, +0x00833931,0xe8000025,0x04f03830,0xc1000059,0x00000000,0xb80084e3,0x00000001,0x00129000, +0x1292f8f9,0xd6000342,0xe800002d,0x04f00f60,0x00158f00,0xc1000039,0x1202cf04,0xb80084e1, +0x00828b43,0x129e38f9,0x120e3841,0x12233841,0xd6006346,0xc1ffa4e0,0xc21e20e4,0xc100c0ed, +0xc30000e4,0x034388e1,0xc100e4e8,0x1082d748,0xc10090e1,0xc1000058,0xc10021f8,0x008283ed, +0xc10022fc,0x00000000,0x008f03e9,0x108f57d8,0x008eb8e4,0xc10004ed,0xe8000221,0x04b03f39, +0xc1fff4e0,0x031e0bf9,0x00000000,0x034e3ae3,0x00000000,0x80003de1,0x00000000,0x90003ae0, +0x031e0afb,0x00000001,0x00000000,0x80003ce1,0xeaffffc8,0x03438ded,0x10859604,0x108f7d04, +0x108efb11,0x108eba10,0x108fff04,0x108f3c05,0x1490160c,0x00000000,0x108fbe05,0x00000000, +0xb801c4e7,0xc21000e1,0x029e39e1,0xe800035d,0x14003801,0x00000000,0xac00d7e3,0xc2b0a0e4, +0x00000000,0xc1003ce9,0xc30000e4,0x129ef804,0xc10000e1,0xc100c0e8,0xc1000050,0x060ebbe9, +0xe800009c,0x008643e9,0x04f03844,0xc100004c,0x00863ae5,0xc21e2034,0xc100003d,0xc3000034, +0x00139001,0x1085d748,0x00134d01,0x00000000,0x00000000,0x032e903f,0x00000000,0x03155315, +0xc10000e0,0x129e7a05,0xe8000031,0x040038e5,0x00000000,0x031e194f,0x00000001,0xe8000255, +0x14003801,0x129e3af9,0x120e3841,0x122e3841,0x00000000,0x84000ee1,0x00000000,0x00000000, +0x00851455,0xe8ffffa8,0x10838e08,0x1084d305,0x04901444,0x10834d10,0x1083cf09,0x00000000, +0xb80084e3,0x00000001,0x129e3809,0xe800009d,0x14003801,0x00000000,0xb801c4e7,0xc10200e1, +0xc2cc5ce0,0x028e79e1,0xc30000e0,0x9001c4e5,0x00000000,0x00000000,0xb8007831,0xc10000e1, +0xe8000068,0xc100004d,0x04f03844,0xc1000051,0xc100002d,0x00000000,0x00000000,0x032e102e, +0x00000000,0x03155316,0xe8000025,0x14103809,0xc10000e1,0xe8000019,0x04f03854,0xc1000059, +0x008e1251,0x1202b809,0xd6002356,0x00000000,0x00000000,0x00851455,0xe8ffffbd,0x04901444, +0x1084d304,0x1082cb09,0xd2fffb86,0xc1000019,0x10859605,0xe8fffcad,0x04901654,0x108e7911, +0xd2fffcbb,0x10859605,0xe8fffcf9,0x04901654,0x108e7911,0xd2fffd17,0xe8fffe19,0x04103f39, +0xd2fffe10,0xc10001e0,0xc10000e5,0x00000000,0x90003ae0,0x80003de6,0xc10000e1,0xe8000060, +0xc1000031,0x04f03844,0xc1000050,0xc100004d,0x00000000,0x03155317,0xc10000e1,0xe800002d, +0x04f03854,0xc1000058,0x1084d305,0xc10000e5,0x00000000,0x034e3de7,0x00000001,0xe8000099, +0x14003801,0x00131301,0x120e1508,0x00851455,0xe8ffffc0,0x008f7de1,0x04901445,0xc10000e1, +0xe8000025,0x04f03830,0xc1000059,0x00000000,0xb80084e3,0x00000001,0x00129000,0x1292f8f9, +0xd600035e,0xe8000065,0x14f00c55,0xc21e20e4,0xa40997e4,0xc21e20e1,0xc30000e4,0xc30000e1, +0x00000000,0xb80539e6,0x00000000,0x8009d7e5,0x00000000,0xa43503e5,0x00000000,0x900578e5, +0xd2fffd5c,0xc100d5e1,0x008e03e1,0x00000000,0x800038e5,0x10859605,0xe8ffff59,0x04901654, +0x108e7911,0xd2ffff67,0xe8fffd35,0x14100c55,0xd2fffd2c,0xc21e20e5,0xc30000e4,0xc10000e8, +0xc10001e1,0x00000000,0x8009d7e8,0x900579e1,0x00000000,0xb8000de0,0x031e974f,0x00000001, +0xe8fffdb9,0x040038e9,0xe8000029,0x14103a01,0xc10000e1,0xe8fffda5,0x04f03854,0xc1000059, +0x008e1251,0x1202b809,0xd6002362,0xd2fffd8f,0xc10000e1,0xe8fffd85,0x04f03854,0xc1000059, +0xc1ffffe0,0x1292fa04,0x008e5251,0x00000000,0x008e3ae1,0x121e3805,0x1202b908,0x12033809, +0xd600436a,0xd2fffd57,0xc10000e1,0xe8fffd71,0x04f03844,0xc1000050,0xc100004d,0x1083d748, +0xc1000038,0x00135001,0x00000000,0x00000000,0x032e903b,0x00000000,0x03155315,0xc10000e0, +0x129e7a05,0xe8000031,0x040038e5,0x00000000,0x031ecf4f,0x00000001,0xe8000041,0x14903b1d, +0x129e3af9,0x120e3841,0x122e3841,0x00000000,0x84000de1,0x00000000,0x00000000,0x00851455, +0xe8ffffa8,0x1084d305,0x04901444,0x10838e08,0x10834d09,0xd2fffceb,0xc10000e1,0xe8ffffd9, +0x04f03854,0xc1000059,0xc10006e4,0xc2ce08e8,0xc2ce08e1,0x120efb08,0x009e79ec,0xc30000e9, +0x120e7908,0x03433be8,0xc30000e1,0x008e1250,0x0342f9e3,0x1202b809,0xd6002376,0xd2ffff9b, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002c25,0x00900724,0x00924725, +0x00000000,0x90000051,0x00150201,0xc21f38e0,0xc10000e4,0xc10000f5,0xc10000f0,0xc10000ec, +0xc10000e9,0xc10000e4,0x900002e4,0xc30000e1,0xd1ff8f90,0x900082f0,0x900042f5,0xc100000c, +0x900102e8,0x9000c2ed,0x10808270,0x900182e0,0x900142e5,0xd1ff8f6c,0x10809492,0xc100000d, +0xc10000e8,0xc10000e0,0xc10001e5,0xc10000e0,0x900354e0,0x9002d4e9,0x00000000,0x9003d4e0, +0x900394e5,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8000051, +0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900750,0x10924751, +0xd1ff8f00,0x008e0310,0x9000020d,0xc10001e0,0x9001420c,0x900042e1,0x10808270,0x9001820c, +0x9000c2e1,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002825,0x00900724,0x00924725, +0x00000000,0x90000050,0x90004055,0x00154201,0xd1ff8f32,0x10808271,0x00000000,0xb80055ef, +0x00000001,0x109ebb05,0xe8000079,0x04f006e8,0x00150601,0x00000000,0xa40006e7,0xc100ffe1, +0xe8000025,0x041039e1,0x00000000,0xa40046e7,0xc100e0e1,0xc100e0e0,0x029e79e1,0xe8000045, +0x040039e1,0x10851405,0xe8000039,0x04f014e9,0x00000000,0xa40014e7,0xc100ffe1,0xe8ffffe9, +0x041039e1,0x00000000,0xa40054e7,0xc100e0e1,0xc100e0e0,0x029e79e1,0xe8ffffcd,0x041039e1, +0x00000000,0x009e3b51,0xe8000035,0x14e03821,0xc1ffff19,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901,0xd1ff8dc4, +0x10809570,0x0010d403,0xd2ffffce,0xc1000019,0x10924941,0x1081c940,0x9000891d,0x10924741, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c, +0xc1005025,0x00924725,0xc20e00e0,0xc1000045,0x008402e1,0xc100003c,0x00139001,0xc20a00e0, +0xc20e00f1,0xc20c00e8,0xc20800ec,0xc10400e5,0xc10600e8,0x00930ef0,0x0092cee9,0xc1000034, +0xc10200e0,0x00928ee1,0x1083cf04,0x009f8eec,0x009f0ee9,0xc10000e8,0xc10000fc,0x009ecee5, +0xc10000e0,0x009e4ee0,0xc10000f5,0xc10000e8,0x90000be8,0x90000c35,0xc10000e0,0x90003efc, +0x90000ae1,0xc10000e0,0x90003be0,0x90003cf5,0xe8ffff8c,0x90000ee0,0x900039e9,0x14900f20, +0x10838e11,0x10845105,0xe8ffff6d,0x14901140,0x10841081,0xc21000e0,0xc21008e5,0xc21004e8, +0x008f42e0,0xc2100ae1,0xc10000f8,0xc10000ec,0xc10000f1,0x008e42e8,0x008e02e0,0x008e82e5, +0xc10000e4,0x900039f0,0x90003df9,0x00000000,0x840038e4,0x84003aed,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x9000c905, +0x1081c724,0xc1008c25,0x00900724,0x00924725,0x00000000,0x90014064,0x90018069,0x00000000, +0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece4, +0xc1ffe8e0,0x00164201,0x00000000,0x034587e4,0x034f87e3,0x00160401,0x00000000,0xb90002f1, +0x120e0508,0x120f452c,0xc2100ce5,0x008e82e4,0x109e4950,0xc2ce40ed,0xc30000ec,0x0340bae0, +0xc20900e9,0xd1ff91e0,0xc2ce400c,0x109e0961,0x00857d08,0x90003958,0x00813be9,0xc300000c, +0x900038f0,0x00117e01,0x00000000,0xb900195d,0xc10000e1,0xe80002f0,0xc1000035,0x04f03858, +0x00000000,0x00151801,0xc2ce40e4,0xc10400e1,0xc20900e0,0x0082d5e0,0xc30000e5,0x008339e1, +0x129e5704,0xc10480e0,0xc2ce40ed,0x1203b924,0x060f39e0,0x121e1705,0xc30000ec,0x00000000, +0x121e8d05,0x120e7808,0x00829538,0x008e0b39,0xc1000060,0x1204ba08,0x0084fced,0x0083f8e4, +0x00844cf0,0x00840ae5,0xd600237e,0xc1ffffe0,0x00000000,0x00168a01,0xc1ffffe0,0x008e57e0, +0xc2a82065,0x129e793c,0xc3000064,0x02ae385d,0x128eb904,0x129e7804,0xc2a820e1,0x120e7924, +0x12063a08,0xc30000e1,0x0084d8e0,0x008f95e4,0x00844be5,0xc2a820e0,0xb8007eec,0x034f15e5, +0xc30000e0,0xb80393e4,0xb800bee9,0x129e17f8,0xb80313e4,0x034ed8e1,0x120f7808,0xb800fee9, +0xc2a820e1,0xc30000e0,0xb80293e0,0x21ce3be5,0x0084bde0,0x21cefae4,0x21cf3ced,0xc2a820e4, +0xb8013ee9,0x008f3ce0,0xb80213e0,0xb8017eed,0x008efcec,0xb80193e8,0x21ce3ae1,0xc30000e4, +0xb801bee9,0x008f3be0,0xb80113e1,0xc1007ce0,0xb801fee4,0x21ce3ae1,0x008414e0,0xb80093e0, +0x21ce7be9,0x008efce0,0x034e3de4,0x034e5539,0x008f3be4,0xb8004ae8,0x21cebae1,0xc1ffffec, +0xb80392e5,0x008f3ce8,0xb8008ae8,0x21ce79e1,0xc2a820e0,0xb80312e4,0x21cf39e1,0x008fbce4, +0xb800cae8,0xb80292e5,0x02ae7bf8,0xb8010ae8,0x21cefae5,0x108fb904,0xb80212e5,0x008f3ef0, +0xb8014ae8,0x21ce7ae5,0x008efcec,0xb80192e4,0x21cefae5,0x008f3be4,0xb8018ae8,0xb80112e5, +0x008f3cec,0xb801cae4,0x21cefae5,0xc30000e0,0xb80092e1,0x008efcec,0x00000000,0x21ce3ae5, +0x0093b860,0x00000000,0x21cebae5,0x008efbe1,0xc2a820e0,0x21ce79e0,0x008ebbe9,0xc30000e1, +0x0092b8f4,0x008e7ae5,0xc100013c,0x900014e4,0x10851411,0xd6018386,0xc10080e0,0xb80011fc, +0xb80051e9,0x008659e0,0xb80091f4,0xb800d1e5,0x00829960,0xb80111ec,0x034f9961,0x00000000, +0xb8038ae0,0xb8030af1,0x00000000,0xb8028ae0,0xb8020aea,0x00000000,0xb80151e4,0xb8018ae1, +0x00000000,0x21cfbae0,0x21cffff9,0x00000000,0xb80191e4,0xb8010ae1,0x008fbff8,0x21cf39e0, +0x21cf7df1,0x00000000,0xb801d1e4,0xb8008ae1,0x008ebef4,0x21ceb9e0,0x21cefbe9,0x008f3af1, +0x008efcec,0x21ce39e1,0x008e7be8,0x21ce39e1,0x008e79e1,0xc1ffffe0,0x008e79e0,0x10834d05, +0xc10040e4,0x02aeb8e4,0x108e1705,0xe8fffd54,0x1295f83c,0x108e3a05,0x04900d58,0x900014e0, +0x008514e5,0xc1000019,0x1091c77d,0x1091c725,0x00000000,0xb800c704,0xb8010061,0x00000000, +0xb8004054,0xb8000051,0x00000000,0xb800c05d,0x00000000,0xb8008058,0xb8018069,0x00000000, +0xb8014064,0xb800871d,0x07000100,0x00000000,0x1082477d,0x10824925,0x00100901,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1004c25,0x00900724,0x00924725,0x00000000, +0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055, +0x0015c200,0x00158301,0xc21f05e0,0xc20124e8,0xc2012ce5,0xc30000e0,0xc30382e8,0xc30382e5, +0x00000000,0xa00038e0,0xb8003a67,0x00000000,0xb8003961,0x129e3805,0xe8000429,0x14003801, +0xc20030e1,0xc30382e1,0x00000000,0xb8003857,0x00000001,0xc2001ce4,0xc2003ce1,0xc30382e4, +0xc30000e1,0x00000000,0xb80039e7,0x00000001,0x129e7909,0x122e7905,0xe8000020,0x900038e5, +0x14003901,0xc20034e4,0xc10002e1,0xc30000e5,0x00000000,0x800039e1,0xc20004e4,0xc2001ce0, +0xc20004e9,0xc30382e4,0xc30382e0,0xc30382e9,0x00000000,0xb80039e4,0xb80038e3,0x00000001, +0x129ef93c,0x129e3804,0x129e7861,0xe8000030,0x128efb41,0x14103800,0x122f390c,0x90003aed, +0xc2a39ce1,0xc30000e1,0x00000000,0xb80038e3,0x00000001,0xe8000381,0x14103801,0xe8000379, +0x14103c05,0xc2a39ce1,0xc30000e1,0x00000000,0xb80038e3,0x00000001,0xe8000031,0x14003801, +0xd1ffdda9,0xc1000111,0xc1000408,0xc100000c,0xc1000115,0xe8000015,0x14000601,0xd1ffde86, +0xc1000208,0xc1301f0d,0xc2001ce0,0xc2a39ce8,0xc10000e5,0xc30382e0,0xc30000e9,0x00000000, +0xb80038e0,0x90003ae7,0x00000001,0x12953805,0xc20034e0,0xc20020ec,0x109e8951,0xc30000e0, +0xc30000ec,0x109e4961,0x00000000,0xa00038e4,0xb8003b15,0x00000000,0x90003960,0x90003a65, +0xd1000334,0x109e4970,0x109e0981,0x0010d700,0x90003951,0x00109500,0x900038e4,0x00111601, +0xe800001d,0x14001401,0xc20020e4,0xc10000e1,0xc30000e5,0x00000000,0x900039e1,0xc2a39ce0, +0xc20034e8,0xc10000e5,0xc30000e0,0xc30000e9,0x00000000,0xb80038e0,0x80003ae7,0x00000001, +0xe800002d,0x14103801,0xc20010ec,0xc20008e4,0xc100c4e9,0xc30382ec,0xc30382e4,0xc10001e1, +0x00000000,0x900039e0,0x90003be9,0xc2000ce4,0xc2000ce0,0xc1012c09,0xc30382e4,0xc30382e1, +0x00000000,0xb80039e7,0xd1ff8411,0x128e7905,0x00000000,0x900038e5,0xc2a39ce0,0xc2000ce8, +0xc10000e5,0xc30000e0,0xc30382e9,0x00000000,0xb80038e0,0x90003ae7,0x00000001,0xe8000031, +0x14103801,0xd1ffdc45,0xc1000111,0xc1000408,0xc100000c,0xc1000115,0xe8000015,0x14000601, +0xd1ffdd22,0xc1000208,0xc1301f0d,0xc20020e4,0xc20038e1,0xc30383e4,0xc30000e1,0x001e7901, +0x00000000,0xb80039ea,0xc20000e5,0xc30030e5,0x029f3ae5,0x122e7c51,0x129e790d,0xe80001d8, +0x900038e5,0x14103905,0xc21f05e4,0xc10000e1,0xc30000e5,0x00000000,0x800039e1,0xc20020e0, +0xc20020e5,0xc30383e0,0xc30383e5,0x001eb800,0xc2003ce1,0x00000000,0xb8003aee,0xc20000e9, +0xc30003e9,0x001e7900,0x028ebbe9,0xc30000e0,0x900039e9,0x00000000,0xb80038e3,0x00000001, +0xe80000e1,0x14003801,0xd1ff5936,0xc1000109,0xc2001ce0,0xc2001ce9,0xc30382e0,0xc30382e9, +0x00000000,0xb80038e7,0xc2001ce1,0xc30382e0,0x128e7911,0x00000000,0x900038e5,0x00000000, +0xb8003ae3,0x00000001,0x129f3819,0xe8fffff1,0x14103c01,0xd1ff589a,0xc1000109,0xc20020e4, +0xc20020e1,0xc20000ec,0xc30383e0,0xc30383e5,0xc30003ec,0xc20030e8,0x001e7901,0x001f7800, +0xb80039f8,0xc21f10e1,0xc20034e4,0xc30000e0,0xc30382e9,0xc2003428,0xc21f05f0,0xc10001fd, +0xc3000028,0x00000000,0xc30000f1,0xc10001ec,0x80000afc,0x028fbeed,0xc30382e4,0x80003cec, +0x90003df9,0x00000000,0xb800390c,0xb8003a09,0x00000000,0xb8003811,0xd1ff58c6,0xc1000115, +0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800805a,0x00000000,0xb8014064,0xb800871d, +0x00000000,0xb8004054,0xb8000051,0x10824740,0xb8010060,0xb800c05d,0x07000102,0x00100901, +0xc20034e1,0xc30382e1,0x00000000,0xb8003855,0xd2fffbe7,0xc2001ce0,0xc2a39cec,0xc10001e9, +0xc30382e0,0xc30000ed,0x00000000,0xb80038e0,0x90003beb,0x00000001,0x129e3805,0xe8000011, +0x14003800,0xc10000e5,0x110e7c09,0xd2fffcc6,0x00153901,0xe8fffe49,0x14103909,0xd2fffe40, +0xc21f05e5,0xc30000e4,0xc10001e1,0x00000000,0x800039e1,0x1092497d,0x10924945,0x1081c97c, +0x9000891c,0x9000c905,0x1081c744,0xc100f425,0x00900724,0x00924725,0x00000000,0x9007c0cc, +0x900800d1,0x00000000,0x900740c4,0x900780c9,0x00000000,0x9006c0bc,0x900700c1,0x00000000, +0x900640b4,0x900680b9,0x00000000,0x9005c0ac,0x900600b1,0x00000000,0x900540a4,0x900580a9, +0x00000000,0x9004c09c,0x900500a1,0x00000000,0x90044094,0x90048099,0x00000000,0x9003c08c, +0x90040091,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c,0x90030081,0x00000000, +0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069, +0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051, +0xc1ffece8,0xc1ffe8e0,0xc1ffe4e5,0xc1ffe0e0,0x034c87e8,0x034c47e1,0x00000000,0x034c07e4, +0x034bc7e1,0x001e8200,0x0015c501,0x001d0301,0x001cc401,0xc25cece4,0x001b8201,0xd1ff4e1c, +0xc21200e0,0xc30000e5,0xc1000208,0x008b79e1,0x12214304,0x0010ed00,0x00113a01,0xc2001ce1, +0xc30382e1,0x00000000,0xb80038e7,0xc22000e1,0x029e39e1,0x122e7835,0xe800061d,0x14103901, +0xc10001b1,0xe8000255,0x14003001,0xc20020e1,0xc30382e1,0x00000000,0xb80038e7,0x00000001, +0xee00012c,0x122fb921,0x122e3904,0x122f7930,0x122ff915,0x129ab83c,0x122eb94c,0x122e3925, +0x122f393c,0x129af904,0x122ef949,0x122e7950,0x1295b81c,0x122e3955,0x129a7f1c,0x1299fb04, +0x129a3e05,0x12957d1c,0x1299380c,0x12953c1d,0x14102a3c,0x1299ba04,0x12997905,0xc20024e0, +0xc2013439,0xc30382e0,0xc2013429,0xc2013440,0xb80038fc,0xc2013431,0xc20134f0,0xc3000140, +0xc20134f9,0xc20134e8,0xc3000128,0xc20134e1,0xc3000138,0x00000000,0xc3000131,0xc30001f0, +0x1222ff30,0xc30001f9,0x122e7f10,0x122eff60,0x12237f21,0x122e7f40,0x1293f93c,0x122f7f51, +0x122e7f70,0x129ff93c,0x12947f3d,0x12934d3c,0x129e793c,0x1292cb3d,0x129f7d3c,0x10934d18, +0x129efb3d,0x10945118,0x109f7d18,0x1093cf19,0x1092cb18,0x109e7918,0x109fff19,0x109efb18, +0x84004e3c,0x84001045,0xc30001e8,0x8400ca2c,0x84008c35,0xc30001e0,0x84017cf4,0x84013efd, +0x00000000,0x8401f8e4,0x8401baed,0xe80004d1,0x14001701,0xc1003fe5,0xc20128e1,0xc30001e1, +0x00000000,0xb80038e3,0x00000001,0xe800000d,0x04002ae1,0xc1003fe5,0xc2012ce1,0xc30001e1, +0x00000000,0xb80038e3,0x00000001,0xe800000d,0x040029e1,0xc1003fe5,0xc20130e1,0xc30001e1, +0x00000000,0xb80038e3,0x00000001,0xe800000d,0x040028e1,0xc1003fe5,0xc20014e1,0xc30000e1, +0x00000000,0xb80038e3,0x00000001,0xe800000d,0x04002be1,0xc1003fe5,0xc1003fe1,0xe800007d, +0x041039e1,0x111e6a00,0x111e2919,0x029e39e1,0xe800000d,0x14003801,0xd1002e7f,0xe8000045, +0x14002901,0xc24db4e8,0xc100008d,0xc30001e9,0x001eba01,0x1088e304,0xc21940e0,0xc10000e5, +0xe8fffff4,0x00000000,0x90003ae5,0x048023e0,0x108eba11,0xe80003f1,0x14102905,0xd1004553, +0x111e6800,0x110e2b05,0x029e39e1,0xe800000d,0x14003801,0xd1009623,0xe8000425,0x14102f09, +0xc20000e0,0xc11c7189,0xc30100e1,0x00187801,0xc10000e1,0xe8000265,0x04e038cc,0xc100008d, +0x111fea00,0x120e2b41,0x111fa918,0xc2001064,0x108f6b05,0xc2000c68,0x120e9640,0x111f2801, +0x110eeb04,0x12083404,0x120e5541,0x120e1440,0x0297fff8,0x12277841,0x1207b440,0xc3000068, +0x12072441,0x1206fd40,0x1225fa40,0x02963ced,0xc3000064,0x12257840,0x1225b941,0xd1ff5122, +0xc1000209,0x129e2305,0xe8000409,0x14003800,0x00152d01,0xc25cece4,0xc21200e1,0xc30000e5, +0x008b79e1,0xd1ff4ad5,0x00812e80,0x0010ed00,0x12217405,0xc1000209,0xe8000079,0x14003001, +0xe8000039,0x14001f01,0xc20134e4,0x109e0961,0xd1003084,0x109e8950,0x00109401,0xc30001e4, +0x90003aac,0x00113401,0x0010d400,0x900038e4,0x00116a01,0xd100313b,0xe8000039,0x14002901, +0xe80003a5,0x14102905,0x00109400,0x00000000,0x12211e41,0xd1004648,0x109e0951,0x00000000, +0x90003874,0x0010d401,0xc1000115,0xd100471b,0x00000000,0xa800142c,0xa800542a,0xe8000431, +0x14102f05,0xe8000429,0x14102301,0xc10000e1,0xe8000081,0x04e038d0,0xc10000fd,0xc10004f8, +0xc10006f4,0x108f1409,0xc138e4e4,0xc27fffe1,0x00000000,0x20ce79fe,0x00000000,0x20ce79c4, +0x20cef9ca,0x00000000,0x218e4ae4,0x218ecbed,0xc27fffe9,0x109e7c08,0x093ebaec,0x093e38e5, +0x00000000,0x84003ce0,0x840039e9,0x00000000,0x032294f4,0x0322d4f9,0x108fff08,0x108f3c11, +0xe8ffffa8,0x108f7d10,0x108fbe11,0x04803fd1,0xe800007d,0x14003001,0xe8000075,0x14001801, +0x109e0950,0x109e4971,0x12211e40,0x9000385d,0xd1009810,0x109e8960,0x109e0981,0x00109400, +0x90003954,0x90003a59,0xc1000114,0x900038b0,0x0010d401,0xc2c1c0ec,0x109e8951,0xc2c1d4e4, +0x109e0960,0xc30001ed,0xd1009978,0xc30001e4,0xc2c1ac15,0x00112500,0x900038e4,0x90003aed, +0xc3000114,0x0010a700,0x0010e601,0xd1ff4abc,0x0010ee01,0x12217404,0x00111401,0xc1000409, +0xd1ff4f3e,0xc1000409,0x1088e304,0x008bae81,0xe8fffe0d,0x048023cd,0xc2000ce4,0xc20010e1, +0xe8000050,0xc30000e0,0xc30000e5,0x14003000,0x900038c4,0x900039c9,0xc2012cec,0xc20128e8, +0xc20130e5,0xc20014e0,0xc30001ec,0xc30001e9,0xc30001e4,0x90003ba4,0xc30000e1,0x00000000, +0x900039a0,0x90003aa9,0x00000000,0x900038ad,0xc1000019,0x00000000,0xb8004055,0x1091c77c, +0xb8000050,0xb800c05d,0x1091c744,0xb8008058,0xb8010061,0x00000000,0xb800c704,0xb8018069, +0x00000000,0xb8014064,0xb8020071,0x00000000,0xb801c06c,0xb8028079,0x00000000,0xb8024074, +0xb8030081,0x00000000,0xb802c07c,0xb8038089,0x00000000,0xb8034084,0xb8040091,0x00000000, +0xb803c08c,0xb8048099,0x00000000,0xb8044094,0xb80500a1,0x00000000,0xb804c09c,0xb80580a9, +0x00000000,0xb80540a4,0xb80600b1,0x00000000,0xb805c0ac,0xb80680b9,0x00000000,0xb80640b4, +0xb80700c1,0x00000000,0xb806c0bc,0xb80780c9,0x00000000,0xb807c0cc,0xb80800d1,0x1082477c, +0xb80740c4,0xb800871d,0x07000101,0x10824945,0x00100901,0xd2fff9f2,0xc10000b1,0xd2fffb3e, +0xc10000e5,0xe8000019,0x14102909,0xe8fffc15,0x14002401,0xd1008d4b,0xd2fffc0b,0xe8000011, +0x1410290d,0xd1007cff,0xd2fffbfb,0xe8000011,0x14102911,0xd100466f,0xd2fffbeb,0xe8000011, +0x14102915,0xd1006b4b,0xd2fffbdb,0xe8fffbd5,0x14102919,0xd100b34b,0xd2fffbcb,0xe8fffbf5, +0x14002f05,0xc2000ce8,0xc20010e4,0x008e32c5,0xc30000e8,0xc30000e4,0x1228f805,0x00000000, +0xb8003ae4,0xb80039e3,0x00000001,0x008e39e1,0x122ff805,0x009e63fd,0xc2a000e0,0x1928b901, +0xe8fffbb1,0x04a022e1,0xe8000021,0x14a03901,0xc10003bd,0xd2fffb9c,0xc11c71e1,0x00000000, +0x2188a2e1,0xc1000085,0xd2ffffee,0xc10004bd,0xd2fffc14,0xc25cece5,0xc30000e4,0xc21b00e1, +0x008b79e1,0xe800002d,0x14102909,0xe8fffc85,0x14002401,0xd1008ea4,0x00109401,0x12211e40, +0x0010d400,0x12215c42,0xd1008f47,0xd2fffc67,0xe8000021,0x1410290d,0xd1007ca1,0x0010d400, +0x00109400,0x12211e42,0xd1007d63,0xd2fffc47,0xe8000025,0x14102911,0xd10047f8,0x00109401, +0x12211e40,0x0010d400,0x12215b42,0xd1004893,0xd2fffc23,0xe8000035,0x14102915,0x00109400, +0x00000000,0x12211e41,0xd1006cd8,0x109e0951,0x00000000,0x90003874,0x0010d401,0xc1000115, +0xd1006d97,0xd2fffbef,0xe8fffbe9,0x14102919,0xd100b7c4,0x00109401,0x12211e40,0x0010d400, +0x12215b42,0xd100b85f,0xd2fffbcb,0xe8000089,0x14102f09,0xc10000e1,0xe8fffc59,0x04e038d0, +0xc10000fd,0xc10004f8,0xc10006f4,0x108f1409,0x182e6100,0xc27fffe1,0x00000000,0x218e79c4, +0x218ef9ca,0xc27fffe8,0x218e4ae4,0x218ecbed,0x00986189,0x109e7c08,0x093ebaec,0x093e38e5, +0x00000000,0x84003ce0,0x840039e9,0x00000000,0x032294f4,0x0322d4f9,0x108fff08,0x108f3c11, +0xe8ffffb0,0x108f7d10,0x108fbe11,0x04803fd1,0xd2fffbe3,0xe8000011,0x14002f0d,0xe80000b5, +0x14102f11,0xe8000011,0x14102f10,0xc10001e5,0xc1ffffe5,0xc10000e1,0xe8fffbb9,0x04e038d0, +0xc10000fd,0x00000000,0xb8001ae8,0xb80019e5,0x00000000,0x0603a2e4,0x060e21e5,0xc10004f9, +0xc10006f5,0x108f1408,0x008378e8,0x008338e5,0x182ecd00,0x182e4c00,0xc27fffe9,0x00000000, +0x218e4ae4,0x218ecbed,0xc27fffe1,0x109e7c08,0x093ebaec,0x093e38e5,0x108fff08,0x84003ce0, +0x840039e9,0x00886188,0x032294f4,0x0322d4f9,0x108f7d10,0x00830c38,0x00834d39,0xe8ffffb4, +0x108f3c10,0x108fbe11,0x04803fd1,0xd2fffb27,0xc10000e1,0xe8fffb1d,0x04e038d0,0xc10000fd, +0xc10004f8,0xc10006f4,0x108f1409,0xc27fffe8,0x218e4ac4,0x218ecbc9,0xc27fffe1,0x109e7c08, +0x093ebaec,0x093e38e5,0x00000000,0x84003ce0,0x840039e9,0x00000000,0x032294f4,0x0322d4f9, +0x108fff08,0x108f3c11,0xe8ffffc4,0x108f7d10,0x108fbe11,0x04803fd1,0xd2fffabb,0x10924941, +0x1081c940,0x9000891c,0xc1002025,0x00924725,0x001ec200,0x001e8300,0x001e4401,0x00000000, +0xb8003ae2,0x109e7905,0xe8fffff4,0x00000000,0x108eba11,0x14c03900,0x108efb10,0x90003be1, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924761,0x001e4200,0x001e0401,0x109e3804,0x9000390d,0xe8fffff9,0x14c03800,0x108e7911, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924925,0x1081c97c, +0x9000891c,0xc1007425,0x1081c725,0x00900724,0x00924725,0x00000000,0x90000051,0xc1ffece4, +0xc1ffe8e0,0x00150201,0x00000000,0x034487e4,0x034447e3,0x0014c301,0x00000000,0xa80044e1, +0x00000000,0xa80004e7,0x1293b805,0x12943904,0x12237804,0x1223f905,0x00000000,0xb8001332, +0x1084d311,0xe800004c,0x00000000,0x001fc501,0x14001000,0x00129200,0x0012cc01,0x00000000, +0xb80012f8,0xa80005f7,0x00000001,0x00000000,0x20ee3dfa,0x009e4ce1,0x00000000,0x900012e4, +0x20ee39f6,0x108fc510,0x0082f8f8,0x10829221,0xe8000071,0x14a00f00,0x109f0f05,0x00000000, +0xb8000af8,0xb8004aed,0x00000000,0xa8003ff4,0xa8007feb,0x00000001,0x00000000,0x20ee3aec, +0x20ee7df9,0x00000000,0x20ee3ef5,0x008e79e1,0x009e4be5,0x00000000,0x90000ae4,0x20ee79e9, +0x109f3c04,0x90004af9,0xe8ffffb4,0x108fff10,0x008e39e1,0x14c03cfc,0x10828a20,0x0082f8ed, +0xe800004c,0x00000000,0x9000142d,0x14000e00,0x10851410,0x0012cc01,0x00000000,0xb8000af8, +0xa8003ff7,0x00000001,0x00000000,0x20ee3dfa,0x009e4ce1,0x00000000,0x90000ae4,0x20ee39f6, +0x108fff10,0x0082f8f8,0x10828a21,0xe8000071,0x14a00d00,0x109f0d05,0x00000000,0xb8000af8, +0xb8004aed,0x00000000,0xa8003ff4,0xa8007feb,0x00000001,0x00000000,0x20ee3aec,0x20ee7df9, +0x00000000,0x20ee3ef5,0x008e79e1,0x009e4be5,0x00000000,0x90000ae4,0x20ee79e9,0x109f3c04, +0x90004af9,0xe8ffffb4,0x108fff10,0x008e39e1,0x14c03cfc,0x10828a20,0x0082f8ed,0x10945104, +0x9000142d,0xe8fffe75,0x14c01100,0x10851411,0x1091c77d,0x1091c725,0x00000000,0xb8000050, +0xb800871d,0x07000100,0x1082477d,0x10824925,0x00100901,0x1092497d,0x10924925,0x1081c97c, +0x9000891c,0xc1006425,0x1081c725,0x00924725,0xc1ffece4,0xc1ffe8e0,0x00140201,0x00000000, +0x034347e4,0x034e87e3,0x0013c301,0xc2f028e4,0x00000000,0xc2f080e1,0xc30000e4,0x00000000, +0xc30000e1,0xe80001d0,0x1603ba0d,0x04e039e1,0xc2f080e1,0xc30000e1,0x009e4de1,0x122e397d, +0x129e380d,0x008e39e1,0x122e3809,0xe8000195,0x14e03801,0xc2f0d8e1,0xc30000e1,0x00000000, +0xb80038fb,0x00000001,0x00000000,0xa800452d,0x00000000,0xa8000530,0xa80105fd,0x00000000, +0xa8008528,0xa80145f7,0x00000001,0x00000000,0xb8000dec,0xb8004de9,0x110f3e00,0xb8000fe1, +0x108e3e04,0x120ebc08,0x118e7e09,0x0083fa3c,0x00000000,0x060fb9e1,0x00000000,0x20ee0be8, +0x20ee4ced,0x00000000,0x90004dec,0x060efce1,0x008e39e0,0x20ee3b31,0x009e7be1,0x00000000, +0x20ee792c,0x90000de5,0x00000000,0xb8008de5,0x008e39e1,0x008f38ea,0x00000000,0x20ee0ae6, +0x009e3be1,0x00000000,0x20ee3828,0x90008de1,0x00000000,0xb8010de0,0xb8014de9,0x008ef8e7, +0x00000000,0x20ee3de8,0x20ee7fe1,0x00000000,0x90014de0,0x20ee38fd,0x008e79e1,0x009e7be5, +0x00000000,0x90010de4,0x20ee79f6,0x008e39e1,0x008e38e9,0x008e3ce1,0x00000000,0x160e380d, +0x10938e05,0xe8ffff28,0x122e3805,0x14c00e00,0x10841010,0x900010e1,0xc2f028e4,0xc2f080e1, +0xc30000e4,0xc30000e1,0xe80000cd,0x04e039e1,0xc2f080e1,0xc30000e1,0x009e4de1,0x122e397d, +0x129e380d,0x008e39e1,0x122e3809,0xe8000095,0x14e03801,0xc2f0d8e1,0xc30000e1,0x00000000, +0x900038f9,0x1091c77d,0x1091c725,0x00000000,0xb800871d,0x07000101,0x1082477d,0x10824925, +0xc2f0dce1,0xc30000e1,0x00000000,0xb80038f9,0xd2fffe7b,0xc2f028e1,0xc30000e1,0x009e4de1, +0x122e397d,0x129e380d,0x008e39e1,0x122e3809,0xe800001d,0x14e03801,0xc2f0dce1,0xc30000e1, +0x00000000,0xb80038f9,0xd2fffe43,0xc2f0d8e1,0xc30000e1,0x00000000,0xb80038f9,0xd2fffe2f, +0xd2ffff84,0xc2f0dce1,0xc30000e1,0x00000000,0x900038f9,0xc2f028e1,0xc30000e1,0x009e4de1, +0x122e397d,0x129e380d,0x008e39e1,0x122e3809,0xe800001d,0x14e03801,0xd2ffff4c,0xc2f0dce1, +0xc30000e1,0x00000000,0x900038f9,0xd2ffff38,0xc2f0d8e1,0xc30000e1,0x00000000,0x900038f9, +0x1092497d,0x10924925,0x1081c97c,0x9000891c,0xc1007025,0x1081c725,0x00924725,0xc1ffece4, +0xc1ffe8e0,0x0012c201,0x00000000,0x034f87e4,0x034e87e3,0x00128301,0xc2f028e4,0x00000000, +0xc2f080e1,0xc30000e4,0x00000000,0xc30000e1,0xe800021c,0x160ffa0d,0x04e039e1,0xc2f080e1, +0xc30000e1,0x009e7ee1,0x122e397d,0x129e380d,0x008e39e1,0x122e3809,0xe80001e1,0x14e03801, +0xc2f0d8e1,0xc30000e1,0x00000000,0xb80038f7,0x00000001,0x00000000,0xa8004549,0x00000000, +0xa800054c,0xa800c541,0x00000000,0xa8008544,0xa8018539,0x00000000,0xa801053c,0xa801c537, +0x00000001,0x00000000,0xb8003eec,0xb8007ee9,0x110f3d00,0xb8000ae1,0x108e3d04,0x120ebc08, +0x118e7d09,0x0082ba28,0x00000000,0x060f79e1,0x00000000,0x20ee12e8,0x20ee53ed,0x00000000, +0x90007eec,0x06033ce1,0x008e39e0,0x20ee3b4d,0x009e4ce1,0x00000000,0x20ee7948,0x90003ee5, +0x00000000,0xb800bee0,0xb800fee9,0x008e39e1,0x008ef8ea,0x00000000,0x20ee10e8,0x20ee51e1, +0x00000000,0x20ee3844,0x9000fee1,0x008e79e1,0x009e7be5,0x00000000,0x20ee7940,0x9000bee5, +0x00000000,0xb8013ee5,0x008e39e1,0x008f38ea,0x00000000,0x20ee0fe6,0x009e0ce1,0x00000000, +0x20ee383c,0x90013ee1,0x00000000,0xb801bee0,0xb801fee9,0x008ef8e7,0x00000000,0x20ee0de8, +0x20ee4ee1,0x00000000,0x9001fee0,0x20ee3839,0x008e79e1,0x009e7be5,0x00000000,0x9001bee4, +0x20ee7936,0x008e39e1,0x008e38e9,0x008e3ce1,0x00000000,0x160e380d,0x109fff05,0xe8fffee8, +0x122e3805,0x14c03f00,0x1082cb10,0x90000be1,0xc2f028e4,0xc2f080e1,0xc30000e4,0xc30000e1, +0xe80000cd,0x04e039e1,0xc2f080e1,0xc30000e1,0x009e7ee1,0x122e397d,0x129e380d,0x008e39e1, +0x122e3809,0xe8000095,0x14e03801,0xc2f0d8e1,0xc30000e1,0x00000000,0x900038f5,0x1091c77d, +0x1091c725,0x00000000,0xb800871d,0x07000101,0x1082477d,0x10824925,0xc2f0dce1,0xc30000e1, +0x00000000,0xb80038f5,0xd2fffe2f,0xc2f028e1,0xc30000e1,0x009e7ee1,0x122e397d,0x129e380d, +0x008e39e1,0x122e3809,0xe800001d,0x14e03801,0xc2f0dce1,0xc30000e1,0x00000000,0xb80038f5, +0xd2fffdf7,0xc2f0d8e1,0xc30000e1,0x00000000,0xb80038f5,0xd2fffde3,0xd2ffff84,0xc2f0dce1, +0xc30000e1,0x00000000,0x900038f5,0xc2f028e1,0xc30000e1,0x009e7ee1,0x122e397d,0x129e380d, +0x008e39e1,0x122e3809,0xe800001d,0x14e03801,0xd2ffff4c,0xc2f0dce1,0xc30000e1,0x00000000, +0x900038f5,0xd2ffff38,0xc2f0d8e1,0xc30000e1,0x00000000,0x900038f5,0x1092497d,0x10924925, +0x1081c97c,0x9000891c,0xc1009025,0x1081c725,0x00900724,0x00924725,0x00000000,0x90018068, +0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000, +0x90000050,0x90004055,0xc1ffece4,0xc1ffe8e0,0x00140201,0x00000000,0x034307e4,0x034e87e3, +0x0013c301,0xc2f028e4,0x00000000,0xc2f080e1,0xc30000e4,0x00000000,0xc30000e1,0xe8000380, +0x1603ba0d,0x04e039e1,0xc2f080e1,0xc30000e1,0x009e4ce1,0x122e397d,0x129e380d,0x008e39e1, +0x122e3809,0xe8000345,0x14e03801,0xc2f0d8e1,0xc30000e1,0x00000000,0xb80038f3,0x00000001, +0x00000000,0xa8004561,0x00000000,0xa8000564,0xa800c559,0x00000000,0xa800855c,0xa8014551, +0x00000000,0xa8010554,0xa801c549,0x00000000,0xa801854c,0xa8028535,0x00000000,0xa8020544, +0xa8030529,0x00000000,0xa802c52c,0xa80385f9,0x00000000,0xa80345fc,0xa803c5f7,0x00000001, +0x110ebc00,0xb8000fe4,0xb8000ce1,0x120e3a08,0xb8004ce8,0x118e7c09,0x108e3c04,0x0083f83c, +0x10938e05,0x00000000,0x00000000,0x060f39e1,0x00000000,0x20eed9e0,0x0606fae5,0x00000000, +0x20ee3864,0x20ee58e9,0x00000000,0x90004ce1,0x008e7be5,0x009e5be5,0x00000000,0x90000ce4, +0x20ee7961,0x00000000,0xb8008ce0,0xb800cce9,0x008e39e1,0x008ef8ea,0x00000000,0x20ee16e8, +0x20ee57e1,0x00000000,0x9000cce0,0x20ee385d,0x008e79e1,0x009e7be5,0x00000000,0x90008ce4, +0x20ee7959,0x00000000,0xb8010ce0,0xb8014ce9,0x008e39e1,0x008ef8ea,0x00000000,0x20ee14e8, +0x20ee55e1,0x00000000,0x90014ce0,0x20ee3855,0x008e79e1,0x009e7be5,0x00000000,0x90010ce4, +0x20ee7951,0x00000000,0xb8018ce0,0xb801cce9,0x008e39e1,0x008ef8ea,0x00000000,0x20ee12e8, +0x20ee53e1,0x00000000,0x9001cce0,0x20ee384d,0x008e79e1,0x009e7be5,0x00000000,0x90018ce4, +0x20ee7949,0x00000000,0xb8020ce5,0x008e39e1,0x0086b8ea,0x00000000,0x20ee11e6,0x009e1be1, +0x00000000,0x90020ce0,0x20ee3845,0x00000000,0xb8028ce0,0xb802cce9,0x008ef8e7,0x00000000, +0x20ee0be8,0x20ee4de1,0x00000000,0x9002cce0,0x20ee3835,0x008e79e1,0x009e7be5,0x00000000, +0x90028ce4,0x20ee792d,0x00000000,0xb8030ce0,0xb8034ce9,0x008e39e1,0x008ef8ea,0x00000000, +0x20ee3fe8,0x20ee4ae1,0x00000000,0x90034ce0,0x20ee3829,0x008e79e1,0x009e7be5,0x00000000, +0x90030ce4,0x20ee79fd,0x00000000,0xb8038ce0,0xb803cce9,0x008e39e1,0x008ef8ea,0x00000000, +0x20ee3de8,0x20ee7ee1,0x00000000,0x9003cce0,0x20ee38f9,0x008e79e1,0x009e7be5,0x00000000, +0x90038ce4,0x20ee79f6,0x008e39e1,0x008e38e9,0x008e1ae1,0x00000000,0x160e380e,0xe8fffde4, +0x122e3805,0x14c00e00,0x10841010,0x900010e1,0xc2f028e4,0xc2f080e1,0xc30000e4,0xc30000e1, +0xe80000fd,0x04e039e1,0xc2f080e1,0xc30000e1,0x009e4ce1,0x122e397d,0x129e380d,0x008e39e1, +0x122e3809,0xe80000c5,0x14e03801,0xc2f0d8e1,0xc30000e1,0x00000000,0x900038f1,0x00000000, +0xb8000050,0xb8004055,0x00000000,0xb8008058,0xb800c05d,0x1091c77c,0x00000000,0xb8014065, +0x1091c724,0xb8010060,0xb801c06d,0x00000000,0xb8018068,0xb800871d,0x07000100,0x1082477d, +0x10824925,0x00100901,0xc2f0dce1,0xc30000e1,0x00000000,0xb80038f1,0xd2fffccb,0xc2f028e1, +0xc30000e1,0x009e4ce1,0x122e397d,0x129e380d,0x008e39e1,0x122e3809,0xe800001d,0x14e03801, +0xc2f0dce1,0xc30000e1,0x00000000,0xb80038f1,0xd2fffc93,0xc2f0d8e1,0xc30000e1,0x00000000, +0xb80038f1,0xd2fffc7f,0xd2ffff54,0xc2f0dce1,0xc30000e1,0x00000000,0x900038f1,0xc2f028e1, +0xc30000e1,0x009e4ce1,0x122e397d,0x129e380d,0x008e39e1,0x122e3809,0xe800001d,0x14e03801, +0xd2ffff1c,0xc2f0dce1,0xc30000e1,0x00000000,0x900038f1,0xd2ffff08,0xc2f0d8e1,0xc30000e1, +0x00000000,0x900038f1,0x1092497d,0x10924945,0x1081c97c,0x9000891c,0x9000c905,0x1081c744, +0xc1007825,0x00900724,0x00924725,0x00000000,0x90030080,0x90034085,0x00000000,0x90028078, +0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000, +0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055, +0xc1ffece8,0xc1ffe8e0,0xc1ffe4e5,0xc1ffe0e0,0x034747e8,0x034707e1,0x00000000,0x0346c7e4, +0x034e47e1,0x001e8301,0x00178501,0x0017c401,0x129e0405,0xe800017d,0x14003800,0xc1000080, +0x00187901,0xc2ecd464,0x00168201,0xc3000065,0x00165901,0x00163900,0x001e5901,0x00000000, +0xa8003ae2,0x10961805,0xe8fffff4,0x00000000,0x108eba09,0x14c01800,0x108e7910,0x900039e1, +0xc10000e1,0xe80000bd,0x04e03810,0xc1000061,0xc2e0405c,0xc1000055,0xc1000058,0xc1000250, +0xc300005d,0x00000000,0x032e1e5b,0x00000001,0xe8000111,0x14103809,0x120ea008,0x120ee004, +0x109e4951,0xd1fff210,0x109e0960,0x00811575,0x008e1be8,0x90003884,0x00815ced,0x0010d900, +0x900039e0,0x00109a01,0x00000000,0x032e1d50,0x032e5d55,0xedffffb0,0x032e1e58,0x10861805, +0x001e5a00,0x10855510,0x00169901,0x00167901,0x108eb904,0x00000000,0x108e7805,0x129e7af8, +0x060861e0,0x129e39f9,0x10859608,0x00000000,0x008e39e1,0x0480187c,0x10851410,0x008820e1, +0x0011a101,0x1091c77c,0xb8000050,0xb8004055,0x1091c744,0xb8008058,0xb800c05d,0x00000000, +0xb800c704,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c,0xb8020071, +0x00000000,0xb8024074,0xb8028079,0x00000000,0xb802c07c,0xb8030081,0x1082477c,0xb8034084, +0xb800871d,0x07000101,0x10824945,0x00100901,0xd2fffea5,0xc2ecd469,0x00164200,0xc3000069, +0x00000000,0xb80017e7,0xc27d00e1,0xe800003d,0x041039e1,0x120ea008,0x120ee004,0x109e4951, +0xd1fff8f8,0x109e0960,0x00811575,0x008e1be8,0x90003884,0x00815ced,0x0010d900,0x900039e0, +0x00109a01,0xd2fffee7,0xc23e80e1,0xe800003d,0x041039e1,0x120ea008,0x120ee004,0x109e4951, +0xd1fff5a0,0x109e0960,0x00811575,0x008e1be8,0x90003884,0x00815ced,0x0010d900,0x900039e0, +0x00109a01,0xd2fffea7,0xc21f40e1,0xe8fffe9d,0x041039e1,0x120ea008,0x120ee004,0x109e4951, +0xd1fff294,0x109e0960,0x00811575,0x008e1be8,0x90003884,0x00815ced,0x0010d900,0x900039e0, +0x00109a01,0xd2fffe67,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002425, +0x00900724,0x00924725,0x001f0400,0x001ec501,0xc2f020e0,0xc2f018e8,0xc2f01ce5,0xc30000e0, +0xc30000e8,0xc30000e5,0x00000000,0xb80038e8,0xb8003a11,0x00000000,0xb8003915,0x109e4951, +0xc2f024e1,0xc30000e0,0x900039e9,0x109e0980,0xb80038e4,0x109e4971,0x00000000,0x900038ec, +0x900039f1,0xd1fffc85,0x109e0961,0x00000000,0x900038e5,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824742,0x07000102,0x00100901,0x1092497d,0x10924915,0x1081c97c,0x9000891c, +0xc1009c25,0x1081c715,0x00900724,0x00924725,0x00000000,0x90028078,0x9002c07d,0x00000000, +0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065, +0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece1,0x00000000, +0x034287e3,0x00000001,0xc2e040e4,0xc25622e1,0xc30000e5,0x00000000,0xb80039e8,0xb80005f7, +0xc22b11e4,0xb8000439,0x010e3ae0,0xb800036c,0x010e7ae5,0x028e39e1,0xe80000b9,0x14003800, +0x00000000,0x00168201,0x00000000,0xb8001be7,0x10928a04,0x00000000,0xc27fffe1,0xe8ffffec, +0x1086db10,0x093e38e5,0x14c00a00,0x10869a08,0x84001ae1,0x009e5a08,0x90000439,0x122e397c, +0x900005f5,0x129e3804,0x9000036d,0x008e39e1,0x1221b805,0x00000000,0xb8004055,0x00000000, +0xb8000050,0xb800c05d,0x00000000,0xb8008058,0xb8014065,0x00000000,0xb8010060,0xb801c06d, +0x1091c77c,0xb8018068,0xb8024075,0x1091c714,0xb8028078,0xb802c07d,0x1082477c,0xb8020070, +0xb800871d,0x07000101,0x10824915,0x00100901,0xc2e058e1,0xc30000e1,0x00000000,0xb8003867, +0x00000001,0x00000000,0xa8003df0,0xa8000e2d,0xc2fea8e4,0xa8004e70,0xa800cefd,0xc2f0e0e0, +0xa8010eec,0xa8008e5d,0x10877d08,0xa8014e4c,0xa8018ef9,0x120ebc08,0xa801ce40,0xa8020ef5, +0x0086dbe8,0xa8024e34,0xa8028e29,0x0097caf0,0xb8001b30,0xb8005b79,0x108f0e60,0xb800db58, +0xb8011b55,0xc30000e4,0xb8009b60,0xb8015b51,0xc30000e0,0xb8019b48,0xb801db45,0x01ee9d64, +0xb8021b3c,0xb8025b39,0x009e7974,0xb8029b30,0xb802db2d,0x009e38f0,0xa802cefe,0x00000000, +0x00000000,0x20f70c2d,0x11c79f00,0x20f556fc,0x20f59e71,0xc27fffec,0x20f4d85c,0x20f495ed, +0x008f9c58,0x20f3d2f8,0x20f4144d,0x008f5548,0x20f30ff4,0x20f35141,0x0082be4c,0x20ff4c28, +0x20ff8e35,0x008ffd40,0x20f2cbfd,0x008f7ef4,0x06029e7c,0x008f8f35,0x008e4afc,0x060e3ae4, +0x008fbe31,0x008e79f8,0x060e3ae0,0x008ebd2d,0x008f7874,0x00000000,0x008e79e9,0xe8fffee8, +0x093e3be4,0x0083b8f1,0x14c00a00,0x10869a08,0x84001ae1,0xd2fffe43,0x1092497d,0x10924915, +0x1081c97c,0x9000891c,0x9000c905,0x1081c714,0xc1004425,0x00900724,0x00924725,0x00000000, +0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece0, +0x0015c301,0x00000000,0x034547e3,0x00160200,0x00000000,0x00158501,0xd1fffc50,0xc2e05ce1, +0x0010c400,0xc2f02810,0xc30000e1,0xc3000010,0x1080b8e0,0x00115501,0xc2e044e1,0xc30000e1, +0x00000000,0xb80038e3,0x00000001,0xe8000031,0x14003800,0x00150601,0xd1fffc10,0xc2e698e1, +0xc30000e0,0xc2f08010,0x0010d601,0xc3000010,0x1080b8e0,0x00115501,0x00150601,0xc2f010e4, +0x109e0951,0xc30000e4,0xc2f0100d,0x00000000,0xb80039e9,0x00000000,0x00109801,0xc2e05ce5, +0xc30000e5,0x009ebae5,0x122e7a7d,0x129e790d,0x008e7ae5,0xd1fffc5c,0xc2e04810,0x122e7909, +0xc2e05014,0x009e54e4,0xc3000011,0xc300000c,0x900038e4,0xc3000015,0xc2e044e1,0xc30000e1, +0x00000000,0xb80038e3,0x00000001,0xe800006d,0x14003800,0x00154601,0xc2f014e0,0x109e8951, +0xc30000e0,0xc2f0140d,0x00000000,0xb80038e5,0x00000000,0x00109701,0xc2e698e1,0xc30000e1, +0x009e79e1,0x122e397d,0x129e380d,0x008e39e1,0xd1fffbe0,0xc2e04c10,0x122e3809,0xc2e05414, +0x009e14e0,0xc3000011,0xc300000c,0x90003ae0,0xc3000015,0x00154601,0xd1ffeac4,0xc2e05ce1, +0xc30000e0,0x12051408,0xc2e05c09,0xc3000008,0x0080d4e0,0xc1000e11,0xc2e044e1,0xc30000e1, +0x00000000,0xb80038e3,0x00000001,0xe8000025,0x14003801,0xd1ffea88,0xc2e698e1,0xc30000e0, +0xc2e69809,0xc3000008,0x0080d4e0,0xc1000e11,0xc2f010e4,0xc2f014e1,0xc30000e4,0xc30000e1, +0x00119500,0xb80039eb,0xc2f010e5,0xc30000e4,0x009eba51,0x00000000,0x900039e9,0x00000000, +0xb80038e7,0xc2f014e1,0xc30000e0,0x009e7951,0x00000000,0x900038e5,0x1091c77d,0x1091c715, +0x00000000,0xb800c704,0xb8010062,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800c05d, +0x00000000,0xb8008058,0xb800871d,0x07000100,0x00000000,0x1082477d,0x10824915,0x00100901, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1004825,0x00900724,0x00924725, +0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050, +0x90004055,0x00164200,0x00160400,0x0015c501,0xe80000dd,0x14100300,0x12250305,0xc20124e1, +0xc30001e0,0xc10000fd,0x00000000,0xb80038fb,0xc10000e1,0xe8000065,0x04e038f9,0xc2014cf0, +0xc20780ec,0xc10000f5,0xc30001f0,0xc30001ec,0xc10002e9,0x00000000,0xa8003ce7,0x008e3d09, +0x00000000,0x840038e5,0x00000000,0x00000000,0xa8003be5,0x108fff05,0x108f7d10,0x108f3c08, +0x008e3a09,0xe8ffffd0,0x108eba11,0x04803ff8,0x108efb08,0x840038e5,0xc20124e4,0xc1ffff19, +0xc10000e0,0xc30001e5,0x00000000,0x900039e1,0x1091c741,0x00000000,0xb800c704,0xb800805a, +0x00000000,0xb8014064,0xb800871d,0x00000000,0xb8004054,0xb8000051,0x10824740,0xb8010060, +0xb800c05d,0x07000102,0x00100901,0xc20120e1,0xc30001e1,0x00000000,0xb80038e3,0x00000001, +0xe8000071,0x14103801,0xc20120e4,0xc10000e1,0xe8000060,0xc30001e5,0x04e03850,0xc10000fc, +0x90003951,0xc10000f0,0xc10000ec,0xc10002e9,0x00000000,0x032e7b0b,0x008e3c11,0x00000000, +0x840038e5,0x00000000,0x00000000,0x032e7a0a,0x108fff04,0x008e3c14,0x108efb11,0xe8ffffd4, +0x108f3c09,0x04803f50,0x108eba10,0x840038e5,0xc2e044e4,0xc2012054,0xc10001e1,0xc30000e4, +0xc2012458,0xc3000155,0xc3000158,0x900039e0,0x00155501,0x00000000,0xb80015e0,0xb80016e5, +0xc2014ced,0xc10020e4,0x109e0950,0xc20780e9,0xc30001e8,0x900038e5,0xd1fffb80,0x120e7904, +0x009e14e1,0xc30001ec,0x0080f9e8,0x120e3805,0x0080b9ec,0x008118e0,0x008157e1,0x00000000, +0xb80016e3,0x00000001,0x008eb819,0x00000000,0x900016e9,0x00000000,0xb80015e3,0x00000001, +0xe8000154,0x109e7881,0x04a03a50,0x900015e5,0xc10000e1,0xe800005d,0x04e03850,0xc10000fd, +0xc2014cf0,0xc20780ec,0x108e9909,0xc30001f0,0xc30001ed,0x00000000,0xa8003ce7,0x109e3a09, +0x00000000,0x840038e5,0x00000000,0x00000000,0xa8003be2,0x108fff04,0x108f3c09,0xe8ffffd8, +0x108efb09,0x04803f50,0x108eba10,0x84003ae1,0xc20124e1,0xc30001e0,0xc10000fd,0x00000000, +0xb80038e3,0x00000001,0xc10000e0,0x009f7851,0xe8000075,0x04e038f5,0xc2014ce4,0x120e9405, +0xc20780e0,0xc20780ec,0xc30001e5,0xc2014cf0,0xc30001ec,0xc30001e1,0xc30001f0,0x008ebae4, +0x008e7ae1,0x00000000,0xa8003ae3,0x00000001,0x00000000,0x84003ce1,0x00000000,0x00000000, +0xa80039e2,0x108fff04,0x108f3c08,0x108eba09,0xe8ffffd4,0x108e7909,0x04803ff4,0x108efb08, +0x84003be1,0xc20124e4,0xc20120e1,0xc30001e4,0xc30001e1,0x00000000,0xb80039eb,0xc20124e5, +0xc30001e4,0x009eba51,0x00000000,0x900039e9,0x00000000,0xb80038e3,0x00000001,0xe8000011, +0x14103801,0xd2fffd6e,0xc1000019,0xd2fffd66,0xc1000119,0x00000000,0xb80016e3,0x00000001, +0xe80000a5,0x04103851,0xc10000e1,0xe800005d,0x04e03850,0xc10000fd,0xc2014cf0,0xc20780ec, +0x108e9909,0xc30001f0,0xc30001ed,0x00000000,0xa8003ce7,0x109e3a09,0x00000000,0x840038e5, +0x00000000,0x00000000,0xa8003be2,0x108fff04,0x108f3c09,0xe8ffffd8,0x108efb09,0x04803f50, +0x108eba10,0x84003ae1,0xc20124e8,0xc20120e1,0xc10000e4,0xc30001e9,0xc30001e0,0x90003ae5, +0x00000000,0xb80038e3,0x00000001,0xe8000011,0x14103801,0xd2fffcbe,0xc1000019,0xd2fffcb6, +0xc1000119,0xe8000019,0x14103901,0xe8000011,0x04e03851,0xd2fffc9e,0xc1ffff19,0xe8fffd79, +0x14103901,0xd2fffc8c,0x1201b807,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002825,0x00900724,0x00924725,0x00000000,0x90000051,0x00150201,0xc20124ec,0xc10000e0, +0xc20120e5,0xc30001ec,0xc2f028e8,0xc30001e5,0xc10000e0,0x90003be0,0xc2f080ed,0xc30000e8, +0x900039e0,0xc10000f1,0xc30000ec,0x001eba01,0xc10000e4,0x108f3c04,0xc10000e1,0xe8fffff4, +0x108efb10,0x90003be5,0x14803c58,0x108eba10,0x90003ae1,0xc2e04cec,0xc2f0e0e8,0xc2e048e5, +0xc30000ec,0xc30000e8,0xc2f0e0e1,0xc30000e4,0x90003be8,0xc30000e1,0xc2e054e8,0x900039e0, +0xc2fea8e1,0xc30000e8,0xc30000e0,0xc2e050e5,0xc2fea8e0,0x90003ae0,0xc2fea8e9,0xc30000e4, +0xc30000e0,0xc30000e9,0xc10126e4,0x900039e0,0xc2e058e1,0xc30000e0,0x008e7ae4,0xc2f010ed, +0xc2e05ce8,0x900038e4,0xc30000ed,0xc30000e8,0xc2f014e4,0xc2e698e1,0xd1ffe4bc,0xc30000e0, +0x90003be9,0xc100000c,0xc2e05c08,0xc30000e5,0xc3000008,0x900039e0,0xc1000b11,0xd1ffe499, +0xc2e69809,0xc1000b10,0xc100000c,0xc3000009,0xc2f0dcec,0xc2f0d8e5,0xc10000e8,0xc10000e0, +0xc30000ed,0xe8000070,0xc30000e4,0x90003be9,0x14001420,0x900039e1,0xe80000c1,0x1400141d, +0xe800011d,0x14001419,0xe8000179,0x14001415,0xe80001d5,0x14001411,0xe8000231,0x1400140d, +0xe800028d,0x14001409,0xe80002e9,0x14001401,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901,0xc2f018ec,0xc10003e8,0xc2f01ce5, +0xc30000ec,0xc2ffd0e0,0xc30000e5,0xc30000e0,0x90003be8,0xc2f020e9,0xc2ffd8e4,0x900039e0, +0xc30000e9,0xc30000e4,0xc2ffe4e1,0xc2f024e8,0x90003ae4,0xc30000e1,0xd2ffff98,0xc30000e8, +0xc2e040e5,0xc30000e4,0x90003ae0,0xc11f40e1,0x00000000,0x900039e1,0xc2f018ec,0xc10002e8, +0xc2f01ce5,0xc30000ec,0xc20008e0,0xc30000e5,0xc30001e0,0x90003be8,0xc2f020e9,0xc2000ce4, +0x900039e0,0xc30000e9,0xc30001e4,0xc20014e1,0xc2f024e8,0x90003ae4,0xc30001e1,0xd2ffff34, +0xc30000e8,0xc2e040e5,0xc30000e4,0x90003ae0,0xc12b11e1,0x00000000,0x900039e1,0xc2f018ec, +0xc10003e8,0xc2f01ce5,0xc30000ec,0xc20034e0,0xc30000e5,0xc30001e0,0x90003be8,0xc2f020e9, +0xc2003ce4,0x900039e0,0xc30000e9,0xc30001e4,0xc20048e1,0xc2f024e8,0x90003ae4,0xc30001e1, +0xd2fffed0,0xc30000e8,0xc2e040e5,0xc30000e4,0x90003ae0,0xc12ee0e1,0x00000000,0x900039e1, +0xc2f018ec,0xc10002e8,0xc2f01ce5,0xc30000ec,0xc20070e0,0xc30000e5,0xc30001e0,0x90003be8, +0xc2f020e9,0xc20074e4,0x900039e0,0xc30000e9,0xc30001e4,0xc2007ce1,0xc2f024e8,0x90003ae4, +0xc30001e1,0xd2fffe6c,0xc30000e8,0xc2e040e5,0xc30000e4,0x90003ae0,0xc13e80e1,0x00000000, +0x900039e1,0xc2f018ec,0xc10001e8,0xc2f01ce5,0xc30000ec,0xc2009ce0,0xc30000e5,0xc30001e0, +0x90003be8,0xc2f020e9,0xc200a0e4,0x900039e0,0xc30000e9,0xc30001e4,0xc200a4e1,0xc2f024e8, +0x90003ae4,0xc30001e1,0xd2fffe08,0xc30000e8,0xc2e040e5,0xc30000e4,0x90003ae0,0xc25622e1, +0x00000000,0x900039e1,0xc2f018ec,0xc10002e8,0xc2f01ce5,0xc30000ec,0xc200bce0,0xc30000e5, +0xc30001e0,0x90003be8,0xc2f020e9,0xc200c0e4,0x900039e0,0xc30000e9,0xc30001e4,0xc200c8e1, +0xc2f024e8,0x90003ae4,0xc30001e1,0xd2fffda4,0xc30000e8,0xc2e040e5,0xc30000e4,0x90003ae0, +0xc25dc0e1,0x00000000,0x900039e1,0xc2f018ec,0xc10001e8,0xc2f01ce5,0xc30000ec,0xc200e0e0, +0xc30000e5,0xc30001e0,0x90003be8,0xc2f020e9,0xc200e4e4,0x900039e0,0xc30000e9,0xc30001e4, +0xc200e8e1,0xc2f024e8,0x90003ae4,0xc30001e1,0xd2fffd40,0xc30000e8,0xc2e040e5,0xc30000e4, +0x90003ae0,0xc27d00e1,0x00000000,0x900039e1,0xc2f018ec,0xc10001e8,0xc2f01ce5,0xc30000ec, +0xc20108e0,0xc30000e5,0xc30001e0,0x90003be8,0xc2f020e9,0xc2010ce4,0x900039e0,0xc30000e9, +0xc30001e4,0xc20110e1,0xc2f024e8,0x90003ae4,0xc30001e1,0xd2fffcdc,0xc30000e8,0xc2e040e5, +0xc30000e4,0x90003ae0,0xc2bb80e1,0x00000000,0x900039e1,0x1092497d,0x10924925,0x1081c97c, +0x9000891c,0xc1005025,0x1081c725,0x00924725,0xc1ffece0,0xc1ffe8e5,0x00000000,0x034e07e0, +0x0342c7e7,0x00000001,0x00000000,0xa80004fc,0xa80002e9,0x00000000,0xa80042f9,0xc10000e4, +0xc1000029,0xe80000b1,0x04e0390c,0x00000000,0xc10000f1,0x009f782d,0x192e3a00,0x192efe00, +0x108ebc09,0x00000000,0x01ee78ec,0x009e38ed,0x00000000,0x060e39e2,0x00000000,0x00000000, +0x008e38ed,0x00000000,0x009e78fd,0x11ce3901,0x00000000,0x060e38f6,0x008e382d,0x00000000, +0x20ee38e6,0x108e3805,0x108efc0c,0x122e3804,0x120f3a05,0xc27fffe4,0x008ebfe0,0x120e3a41, +0x120e7b04,0x032ebc08,0x093ff9e9,0x009e7f28,0x032fb908,0x01cebf29,0x122f3840,0x00000000, +0x060e3ae5,0xe8ffff75,0x04803c0c,0x00000000,0x0082b829,0xc1003fe4,0x840004fc,0xc27fffe1, +0x00000000,0x200e4ae6,0xc27fffe0,0x029ef9e0,0x122e793d,0x108eb904,0x120e3904,0x009e78ed, +0x120e3a04,0x032e3815,0x00000000,0x032e3817,0x00000000,0x200e39e1,0x00000000,0x200e7be2, +0x008e39e1,0x1201b805,0x1091c77d,0x1091c725,0x00000000,0xb800871d,0x07000101,0x1082477d, +0x10824925,0x1092497d,0x10924935,0x1081c97c,0x9000891c,0xc1006425,0x1081c735,0x00924725, +0xc1ffe8e4,0x00000000,0xc1ffe4e1,0xc1ffece4,0x034387e5,0x00000000,0x0343c7e4,0x034347e3, +0x00000001,0x00000000,0xb8000e30,0xa800022d,0x00000000,0x00000000,0xa8004229,0xc10000e1, +0xe800009d,0x04e0380c,0xc10000fd,0x009f853d,0x009e4430,0x120e3f05,0x11ce3900,0x008f3809, +0x00000000,0x060e38fa,0x00000000,0x008e383d,0x00000000,0x20fe39e2,0x00830ce1,0x00000000, +0x21ee4d31,0xc27fffec,0x00000000,0x108e3f05,0x120e3804,0x20ce8ae4,0x20cf4be5,0xc27fffe5, +0x108ebf08,0x093e7bf4,0x093ef9e9,0x008e7808,0x84003ce4,0x108e3f0d,0x120e7a04,0x840039ec, +0x120e3805,0x120e3a40,0x0322f908,0x0322b809,0x122ff841,0xe8ffff7d,0x04803f0d,0xc1000018, +0x90000e31,0x1091c77d,0x1091c735,0x00000000,0xb800871d,0x07000101,0x1082477d,0x10824935, +0x10924941,0x1081c940,0x9000891c,0xc1007025,0x00900724,0x00924725,0x00000000,0x90010060, +0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0x00000000, +0xb8004429,0x00000000,0xb8000464,0xb800c4f9,0x00000000,0xb80084fc,0xb80005f1,0x00000000, +0xb80104f4,0xb80085e9,0x00000000,0xb80045ec,0xb80145e1,0x00000000,0xb800c5e4,0xb8020561, +0x00000000,0xb8018530,0xa800025d,0xc100002c,0xb8024540,0xa8004259,0xc1000055,0xe80000d5, +0x04e00b0d,0xc1000449,0xc1000050,0xc1000644,0xc100024d,0xc27fff38,0x20f2f828,0x20f31765, +0x00835408,0x20f2d664,0x20f3ccfd,0x00830c2c,0x21c3fcf8,0x20fed829,0x00830c3c,0x21c43bf4, +0x20fed0fd,0x008e4bec,0x21c2f9f4,0x21c33af9,0x0083cc3d,0x001efc00,0x008e79ec,0x008f0f41, +0x12233c34,0x008eb930,0x001e7a01,0xc27fff30,0x008eba2c,0x0932ce31,0x12237a34,0x84000d2c, +0x0082d309,0x00000000,0x09330c35,0x00000000,0x84000b31,0x10855508,0x0325d208,0x00141801, +0x00133800,0x03259108,0x00161601,0x001e1700,0x10845110,0x10849211,0xe8ffff5c,0x00000000, +0x10851411,0x0480150c,0x00000000,0x1084d311,0x00000000,0x900005f1,0x00000000,0x900045ed, +0x00000000,0x900085e9,0x00000000,0x9000c5e5,0x00000000,0x9001055d,0x00000000,0x900145e1, +0x00000000,0x90018531,0x00000000,0x9001c559,0x00000000,0x90020561,0xc1000018,0x90024541, +0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x1091c740,0xb8010060,0xb8014065, +0x00000000,0xb8008058,0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940, +0x9000891d,0x10924761,0xe8000021,0x14100201,0xc1ffff19,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0xc10000e4,0xc1ffffe1,0xc1ffffe4,0x900002e5,0x00000000,0x840082e5, +0xc10000e0,0x840102e1,0xc10000e0,0x840202e1,0xc1058ee0,0x9000c2e1,0xc10002e0,0x840282e1, +0xd2ffffb4,0xc1001fe0,0x8402c2e1,0xc10007e0,0x840302e1,0xc1000018,0x840342e1,0x10924941, +0x1081c940,0x9000891d,0x10924741,0xe8000021,0x14100201,0xc1ffff19,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0xd2ffffee,0xc1000018,0x9000020d,0x10924941,0x1081c940, +0x9000891d,0x10924741,0xe8000021,0x14100201,0xc1ffff19,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0xd2ffffee,0xc1000018,0x8400820d,0x10924941,0x1081c940,0x9000891d, +0x10924761,0xe8000021,0x14100201,0xc1ffff19,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0xe800004c,0x8401020d,0x14e00300,0x8402420d,0xc10000e1,0x009e780d,0xe8000015, +0x14c03925,0xe800000d,0x14e00301,0xc10000e5,0xc2bbf0e0,0xc1000019,0xd2ffffb8,0x120e791c, +0xc30001e1,0x008e39e1,0x00000000,0x9001c2e1,0xd2ffffce,0x001e4301,0x1092497d,0x10924915, +0x1081c97c,0x9000891c,0x9000c905,0x1081c714,0xc1003425,0x00900724,0x00924725,0x00000000, +0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece0,0x00154401,0x00000000,0x034507e3, +0x00158201,0xe8000041,0x14100201,0xc1ffff19,0x1091c77d,0x1091c715,0x00000000,0xb800c704, +0xb800871f,0x1082477c,0xb8004055,0x00000000,0xb8000050,0xb8008059,0x07000101,0x10824915, +0x00100901,0xd1fffe7b,0xd1fffeb0,0x00109600,0x0010d503,0xd1fffee0,0x00109600,0x0010d403, +0xd2ffffb2,0xc1000019,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002425, +0x00900724,0x00924725,0x00000000,0x90000051,0x00150201,0x00000000,0xa80294e4,0xb8000209, +0x00000000,0xb801d414,0xa800940d,0x10811441,0x109e0951,0x00000000,0x900038e5,0x00000000, +0xa802d4e6,0xd1fff8f1,0x109e0961,0x00000000,0x900038e5,0x109ec950,0xa80354e4,0xb8001409, +0x108e9430,0xa8031414,0xa800940d,0xd1fffa38,0xc27fffe4,0x109e0971,0x109e0960,0x900038e5, +0x00110600,0x900038e8,0x90003be5,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d, +0x1081c940,0x9000c904,0xc1002425,0x00900724,0x00924725,0xc2b8ace8,0xc1ffffe0,0xc2b8b0ed, +0xc30001e8,0xc30001ec,0xc10000e5,0xc2b8b0e8,0x84003ae0,0xc10000e1,0xc30001e8,0x90003be4, +0xc2b8b0e5,0xc30001e4,0x90007ae0,0xc1ffffe1,0xc2b8b0e4,0x9000b9e0,0xc1ffffe1,0xc30001e4, +0xc2b8b0e9,0xc2b8b0ec,0x9000f9e0,0xc30001e9,0xc30001ec,0xc1ffffe0,0xc1ffffe5,0x108e7b60, +0x84033ae5,0xc1ffffe0,0x840079e1,0xc1ffffe0,0x8400b9e1,0xc1ffffe0,0x8400f9e1,0xc1ffffe0, +0x840139e1,0xc2b6acec,0x840179e0,0xc1ffffe1,0xc30001ec,0x8401b9e0,0xc1ffffe1,0x001efb00, +0x8401f9e0,0xc10000f1,0xc10000e8,0x001e7b01,0x108eba04,0xc10000e1,0xe8fffff8,0x900039e1, +0x14903a28,0x108e7911,0x108f3c05,0xe8ffffdd,0x14903c20,0x108efba1,0xd1fffc01,0xc2b88c09, +0xc3000109,0xd1fffcf1,0xc2b88c09,0xc100060c,0xc3000109,0xc1000019,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c, +0xc1002425,0x00924725,0xe8000011,0x14800201,0xe8000021,0x14a0023d,0xc1ffff19,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0xc2b8ace8,0xc2b8b0e1,0xc10001e4,0xc30001e9, +0xe8000100,0xc30001e0,0x84003ae5,0x1410023c,0x9000f809,0xc2b8b0e0,0xc10000f1,0xc30001e1, +0x108eb861,0x120e3c05,0x00000000,0x032e780f,0x00000001,0xe8000091,0x14803919,0xc10006e0, +0x008e7ae1,0x00000000,0x840039e1,0x108e3c05,0x120e3841,0x122f3841,0xe8ffffcd,0x14803c21, +0xc2b8b0e1,0xc30001e1,0x00000000,0xb80138e3,0x00000001,0xe8000049,0x14103805,0x00000000, +0xa8003ae7,0x00000001,0xe8000069,0x14803901,0xc10000e1,0x00000000,0x84003ae1,0x00000000, +0xa8007ae7,0x00000001,0xe8000051,0x14803901,0xc10000e1,0x00000000,0x84007ae1,0xd2ffff22, +0xc1000019,0xe800001d,0x14c039e9,0xd2ffff80,0xc1fffae0,0x008e7ae1,0x00000000,0x840039e2, +0xd2ffff6c,0x008e3ae1,0x00000000,0x840038e6,0xd2ffffa6,0x001e3901,0xd2ffffbe,0x001e3901, +0xc2b8b0e1,0xc30001e1,0x00000000,0xb80138e3,0x00000001,0xe8000051,0x14103801,0xc2b8d8e4, +0xc2b8b0e0,0x120e8211,0xc30001e4,0xc30001e0,0xc10000f1,0x108eb860,0x008efae5,0x120e3c05, +0x108e3c04,0x032e3be0,0x008e7ae1,0x120e3841,0x122f3841,0xe8ffffe9,0x14803c20,0x840039e1, +0xd2ffff5f,0xc2b8d8e8,0xc2b8b0e1,0xc100f0e4,0xc30001e0,0xc30001e9,0x120e4210,0x008ebae5, +0x108eb860,0x008efae4,0xc10000f1,0x120e3c05,0x108e3c04,0x032e3be0,0x008e7ae1,0x120e3841, +0x122f3841,0xe8ffffe9,0x14803c20,0x840039e1,0xd2ffff0f,0x1092497d,0x10924925,0x1081c97c, +0x9000891c,0x9000c905,0x1081c724,0xc1003c25,0x00900724,0x00924725,0xc1ffece4,0xc1ffe8e1, +0x00000000,0x034f07e4,0x034ec7e3,0x00000001,0xc2b8b0e8,0xc2b8b0e5,0xc2b8b0e0,0xc30001e4, +0xc30001e9,0xc30001e0,0x90003a09,0xd1fffda8,0xc2b8b0e0,0x9000780d,0xc30001e0,0x9000b911, +0x00108500,0x900138f0,0x0010fb01,0xc2b8b0ec,0xc2b8b0e8,0xc10006e5,0xc30001ec,0xc30001e8, +0x109e0951,0x00000000,0xb800ba10,0xb8007b0d,0xd1fffaa9,0xc2b88c08,0xc1000115,0xc3000108, +0x900038e5,0xc1000019,0x1091c77d,0x1091c725,0x00000000,0xb800c704,0xb800871f,0x1082477e, +0x07000101,0x10824925,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1003825,0x00900724,0x00924725,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050, +0x90004055,0xc2b8b0e0,0xc2b8b0e5,0xc30001e0,0xc30001e5,0x00000000,0xb800b8e3,0x00000001, +0xe8000041,0x14c03800,0x1085f921,0xc1ffff19,0x1091c741,0x00000000,0xb800c704,0xb8008059, +0x00000000,0xb800c05c,0xb800871f,0x10824740,0xb8004054,0xb8000051,0x07000102,0x00100901, +0xc2b8ace1,0xc30001e1,0x00000000,0xa80038e3,0x00000001,0xe8000021,0x14103805,0xd1000267, +0xc2b8ace4,0xc10000e1,0xc30001e5,0x00000000,0x840039e1,0xc2b8b0e1,0xc30001e1,0x00000000, +0xb800f8f7,0x00000001,0xe80000c5,0x14103d3d,0xc2b8b0e0,0xc2b8b0e9,0xc30001e0,0xc30001e9, +0x00000000,0xa80338e3,0x00000001,0xe80000a1,0x14103800,0x108e7a61,0x00000000,0xa80079e3, +0x00000001,0xe8000089,0x14103801,0x00000000,0xa800b9e3,0x00000001,0xe8000075,0x14103801, +0x00000000,0xa800f9e3,0x00000001,0xe8000061,0x14103801,0x00000000,0xa80139e3,0x00000001, +0xe800004d,0x14103801,0x00000000,0xa80179e3,0x00000001,0xe8000039,0x14103801,0x00000000, +0xa801b9e3,0x00000001,0xe8000025,0x14103801,0x00000000,0xa801f9e3,0x00000001,0xe8000011, +0x14103801,0xd2fffece,0xc1000019,0xc2b8b0e8,0xc2b8b0e0,0xc2b8b0e5,0xc30001e8,0xc30001e0, +0xc30001e5,0x00000000,0xb8003af0,0xb80078ee,0xe80000bc,0x1085b911,0x14003d01,0xd1fff7a1, +0xc2b88c08,0x0010fb01,0xc3000109,0x00000000,0xb800170d,0xd1fff7c5,0xc2b88c09,0xc3000109, +0x00000000,0xb80017f3,0xc10000e1,0xe80000d1,0x048038f0,0xc1000055,0xc2b6ace4,0xc1000055, +0xc10140e0,0xc30001e5,0x008539e1,0xc10028e0,0xb80017e8,0xb8001609,0x00000000,0x060e55e1, +0xc2b6ace1,0xd1fff4bc,0x160e9551,0xc30001e0,0x00000000,0x120efa41,0x008114e8,0x1220fb40, +0x008179e1,0x108e1505,0x120e3841,0x12257841,0xe8ffffbd,0x14801521,0xd1fff8b1,0xc2b88c09, +0xc3000109,0xd2fffdee,0xc1000019,0x00000000,0xb80017eb,0xc10000e1,0xe800003d,0x04e038e8, +0xc1000055,0x00000000,0xa8003ce6,0x108e1505,0x120e3841,0x12257840,0x120e3941,0xe8ffffe8, +0x108f3c08,0x122e3841,0x048015e8,0x108efb08,0x84003be1,0xd2fffd9e,0xc1000019,0xc2b8b0e1, +0xc30001e1,0x00000000,0xb80016e8,0xb80038ef,0x00000001,0x120e1505,0x008e7ae0,0x032e3be1, +0x108e1505,0x120e3841,0x12257841,0xe8ffffe8,0x122e3805,0x048015f0,0x840039e1,0xd2fffeff, +0x10924941,0x1081c940,0x9000891c,0xc1002c25,0x00924725,0xc2b8b0e1,0xc30001e1,0x00000000, +0xb800f8e3,0x00000001,0xe80002c1,0x14003805,0xc2b8b0e4,0xc2c7e8f4,0xc100a0e1,0xc30001e4, +0xc30001f4,0xc100a0ed,0xc2b6ace8,0xa80339e4,0xc2b8b0f1,0xc30001e8,0x008efdec,0xc10140e5, +0x00000000,0x00000000,0x008ebae6,0x108e7931,0x00000000,0x060e39e1,0xc30001f1,0xc10000f8, +0x008e7be0,0x108f3c61,0x108e3e04,0xb80039e1,0x120e3840,0x108e7911,0x122fb841,0xe8ffffed, +0x14803e14,0x108eba10,0x90003ae1,0x00000000,0xa8007ce3,0x00000001,0xc100a0e0,0x108e7831, +0x00000000,0x060e39e2,0x108e3851,0xc10000f8,0x008e78ed,0x108e3e04,0xb80039e1,0x120e3840, +0x108e7911,0x122fb841,0xe8ffffed,0x14803e14,0x108eba10,0x90003ae1,0x00000000,0xa800bce3, +0x00000001,0xc100a0e0,0x108e7831,0x00000000,0x060e39e2,0x108e38a1,0xc10000f8,0x008e78ed, +0x108e3e04,0xb80039e1,0x120e3840,0x108e7911,0x122fb841,0xe8ffffed,0x14803e14,0x108eba10, +0x90003ae1,0x00000000,0xa800fce3,0x00000001,0xc100a0e0,0x108e7831,0x00000000,0x060e39e2, +0x108e38f1,0xc10000f8,0x008e78ed,0x108e3e04,0xb80039e1,0x120e3840,0x108e7911,0x122fb841, +0xe8ffffed,0x14803e14,0x108eba10,0x90003ae1,0x00000000,0xa8013ce3,0x00000001,0xc100a0e0, +0x108e7831,0x00000000,0x060e79e1,0xc10050e1,0x008e39e1,0xc10000f8,0x008e78ed,0x108e3e04, +0xb80039e1,0x120e3840,0x108e7911,0x122fb841,0xe8ffffed,0x14803e14,0x108eba10,0x90003ae1, +0x00000000,0xa8017ce3,0x00000001,0xc100a0e0,0x108e7831,0x00000000,0x060e79e1,0xc10064e1, +0x008e39e1,0xc10000f8,0x008e78ed,0x108e3e04,0xb80039e1,0x120e3840,0x108e7911,0x122fb841, +0xe8ffffed,0x14803e14,0x108eba10,0x90003ae1,0x00000000,0xa801bce3,0x00000001,0xc100a0e0, +0x108e7831,0x00000000,0x060e79e1,0xc10078e1,0x008e39e1,0xc10000f8,0x008e78ed,0x108e3e04, +0xb80039e1,0x120e3840,0x108e7911,0x122fb841,0xe8ffffed,0x14803e14,0x108eba10,0x90003ae1, +0x00000000,0xa801fce3,0x00000001,0xc100a0e0,0x108e7831,0x00000000,0x060e79e1,0xc1008ce1, +0x008e39e1,0xc10000f8,0x008e78ed,0x108e3e04,0xb80039e1,0x120e3840,0x108e7911,0x122fb841, +0xe8ffffed,0x14803e14,0x108eba10,0x90003ae1,0xc1000019,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0xc2b6ace4,0xc10000f9,0xc10140e0,0xc30001e5,0x008f79e1,0xc2c7e8e0, +0x160e7e50,0xc10000f1,0xc30001e1,0x008ebde4,0x008ef9e1,0x120e3c09,0x108e3c04,0x034e3be0, +0x008e7ae1,0x120e3841,0x122f3841,0xe8ffffe9,0x14803c14,0x900039e1,0x108e3e05,0x120e3841, +0x122fb841,0xe8ffffb9,0x14803e21,0xd2ffff87,0x1092497d,0x10924915,0x1081c97c,0x9000891c, +0xc1004c25,0x1081c715,0x00924725,0xc1ffece1,0x00000000,0x034f07e3,0x00000001,0xe8000024, +0x8400bc0d,0x14100404,0x84003c11,0xe8000015,0x14100505,0xc10004e1,0x00000000,0x84003ce1, +0x00000000,0xa8003ce3,0x00000001,0xe80000f9,0x14103811,0xc10040e1,0x00000000,0x84007ce1, +0x00000000,0xa8003ce3,0x00000001,0xe80000e9,0x14103805,0xc2c1e8e8,0xc2c1e8e4,0xc10100e1, +0xc30001e8,0xc30001e5,0x008e39e0,0x9000bce9,0x00000000,0x9000fce1,0x00000000,0xa8007c2b, +0xc10000e1,0xe8000081,0x04e03828,0xc100002d,0x00000000,0xb800bcfc,0xb800fcf7,0x109f8a05, +0xc24db4e0,0x009e7e2c,0x120e8b09,0x120f3908,0xc30001e0,0xc10080e5,0x108e0b04,0x034e7ff0, +0x008efae1,0xc24db4e4,0x008e8be4,0x120e3841,0x120e3a08,0xc30001e4,0x1222f841,0x00000000, +0x00000000,0x008e38e5,0x00000000,0x90003be5,0x00000000,0x034e7df3,0xe8ffffa9,0x04800b28, +0x900038e5,0xc1000019,0x1091c77d,0x1091c715,0x00000000,0xb800871d,0x07000101,0x1082477d, +0x10824915,0xd2ffff1c,0xc1002ce1,0x00000000,0x84007ce2,0xe8ffff45,0x14103811,0xc2c1e8ec, +0xc2c1e8e5,0xc10200e8,0xc10400e0,0xc30001ed,0xd2ffff28,0xc30001e4,0x008ebbe9,0x008e39e0, +0x9000bce9,0x00000000,0x9000fce1,0x1092497d,0x10924915,0x1081c97c,0x9000891c,0xc100ac25, +0x1081c715,0x00900724,0x00924725,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080, +0x90034085,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000, +0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d, +0x00000000,0x90000050,0x90004055,0xc1ffece1,0x00000000,0x034747e3,0x00000001,0x00000000, +0xa800028c,0xa8008289,0xc1007ee0,0xa8004284,0xa800c281,0xc10000e0,0x00835de0,0xc1007e55, +0xe80000a5,0x04e03875,0xc100fc38,0xc101002d,0xc100fe30,0xc1000cf8,0xc1010229,0xc10008fc, +0xc1000ef0,0xc1000af5,0x122e6304,0x122e2104,0x008e8e15,0x008e0c14,0x008ef9e0,0x009e79e1, +0x122ee204,0x84003aec,0x122ea005,0x008e0b14,0x840038e4,0x008e7be9,0x008e0a14,0x840038e4, +0x009e7be9,0xedffffc4,0x840038e5,0x10855510,0x0328ff08,0x0328be09,0x10828a20,0x03287d08, +0x03283c09,0x1082cb20,0x108f3c20,0x10830c21,0x10838e21,0x108f7d21,0x04801534,0x108fbe20, +0x108fff21,0xc10000e1,0xe8000155,0x04e03874,0xc1000055,0xc100007c,0xc1000279,0xc1000070, +0xc100006c,0xc1000069,0x00165f00,0xc1000060,0x0015de01,0x10859f10,0xc1000450,0x1084df19, +0x10849f20,0xc1000844,0x10841f29,0x1083df30,0xc1000c38,0x10835f39,0x10869a10,0x0328d914, +0x0342980d,0xc10040e0,0x03285714,0x034fd811,0x00000000,0x03289614,0x034e940d,0x10851440, +0x03281314,0x034e5411,0x10861840,0x03231214,0x0342d10d,0x10845140,0x032f9014,0x034f1111, +0x1083cf40,0x032f4f14,0x034ece0d,0x10838e40,0x03228d14,0x034fce11,0x10834d41,0x10841041, +0x10849240,0x20ee61fc,0x20eea329,0x1084d340,0x20eea0e4,0x20ef22e9,0x008f9ce8,0x20ee7ef0, +0x20eecc2d,0x008f5be4,0x20eebded,0x008f3de8,0x20ee4afc,0x008f7ef1,0x008efce4,0x00000000, +0x008f3ded,0x10859640,0x1085d740,0x10865941,0xe8ffff49,0x04801ae0,0x00873ce8,0x0086fbe5, +0xc27fffe0,0x008e5c6c,0x008e9f09,0xc27fffe0,0x093ef8e4,0x009e5c6d,0x10855508,0x84003aec, +0x093e78e5,0xe8fffed8,0x008e1e08,0x10879e11,0x04801574,0x1087df10,0x840038e5,0x108e1d04, +0xc1000054,0xc10000f9,0x120f5d04,0xc10002f0,0x120ef805,0x00000000,0x032e7d17,0x008e3e15, +0x00000000,0x840038e5,0x00000000,0x00000000,0x032ebb15,0x10855504,0xc1003fe1,0x008e7c14, +0x108fbe10,0x108f7d11,0xe8ffffcc,0x108f3c11,0x048015e0,0x108efb10,0x840039e9,0xc1000019, +0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x00000000,0xb8008058,0xb8014065, +0x00000000,0xb8010060,0xb801c06d,0x00000000,0xb8018068,0xb8024075,0x00000000,0xb8020070, +0xb802c07d,0x1091c77c,0xb8028078,0xb8034085,0x1091c714,0xb8038088,0xb803c08d,0x1082477c, +0xb8030080,0xb800871d,0x07000101,0x10824915,0x00100901,0x1092497d,0x10924915,0x1081c97c, +0x9000891c,0xc100ac25,0x1081c715,0x00900724,0x00924725,0x00000000,0x90038088,0x9003c08d, +0x00000000,0x90030080,0x90034085,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070, +0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000, +0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece1,0x00000000,0x034747e3, +0x00000001,0x00000000,0xa800028c,0xa8008289,0xc10056e0,0xa8004284,0xa800c281,0xc10000e0, +0x00835de0,0xc1005655,0xe80000a5,0x04e03875,0xc100ac38,0xc100b02d,0xc100ae30,0xc1000cf8, +0xc100b229,0xc10008fc,0xc1000ef0,0xc1000af5,0x122e6304,0x122e2104,0x008e8e15,0x008e0c14, +0x008ef9e0,0x009e79e1,0x122ee204,0x84003aec,0x122ea005,0x008e0b14,0x840038e4,0x008e7be9, +0x008e0a14,0x840038e4,0x009e7be9,0xedffffc4,0x840038e5,0x10855510,0x0328ff08,0x0328be09, +0x10828a20,0x03287d08,0x03283c09,0x1082cb20,0x108f3c20,0x10830c21,0x10838e21,0x108f7d21, +0x04801534,0x108fbe20,0x108fff21,0xc10000e1,0xe8000155,0x04e03874,0xc1000055,0xc100007c, +0xc1000279,0xc1000070,0xc100006c,0xc1000069,0x00165f00,0xc1000060,0x0015de01,0x10859f10, +0xc1000450,0x1084df19,0x10849f20,0xc1000844,0x10841f29,0x1083df30,0xc1000c38,0x10835f39, +0x10869a10,0x0328d914,0x0342980d,0xc1002ce0,0x03285714,0x034fd811,0x00000000,0x03289614, +0x034e940d,0x10851440,0x03281314,0x034e5411,0x10861840,0x03231214,0x0342d10d,0x10845140, +0x032f9014,0x034f1111,0x1083cf40,0x032f4f14,0x034ece0d,0x10838e40,0x03228d14,0x034fce11, +0x10834d41,0x10841041,0x10849240,0x20ee61fc,0x20eea329,0x1084d340,0x20eea0e4,0x20ef22e9, +0x008f9ce8,0x20ee7ef0,0x20eecc2d,0x008f5be4,0x20eebded,0x008f3de8,0x20ee4afc,0x008f7ef1, +0x008efce4,0x00000000,0x008f3ded,0x10859640,0x1085d740,0x10865941,0xe8ffff49,0x04801ae0, +0x00873ce8,0x0086fbe5,0xc27fffe0,0x008e5c6c,0x008e9f09,0xc27fffe0,0x093ef8e4,0x009e5c6d, +0x10855508,0x84003aec,0x093e78e5,0xe8fffed8,0x008e1e08,0x10879e11,0x04801574,0x1087df10, +0x840038e5,0x108e1d04,0xc1000054,0xc10000f9,0x120f5d04,0xc10002f0,0x120ef805,0x00000000, +0x032e7d17,0x008e3e15,0x00000000,0x840038e5,0x00000000,0x00000000,0x032ebb15,0x10855504, +0xc1002be1,0x008e7c14,0x108fbe10,0x108f7d11,0xe8ffffcc,0x108f3c11,0x048015e0,0x108efb10, +0x840039e9,0xc1000019,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x00000000, +0xb8008058,0xb8014065,0x00000000,0xb8010060,0xb801c06d,0x00000000,0xb8018068,0xb8024075, +0x00000000,0xb8020070,0xb802c07d,0x1091c77c,0xb8028078,0xb8034085,0x1091c714,0xb8038088, +0xb803c08d,0x1082477c,0xb8030080,0xb800871d,0x07000101,0x10824915,0x00100901,0x10924941, +0x1081c940,0x9000891d,0x10924751,0xc2b8b0e0,0xc1000019,0xc30001e1,0x00000000,0x90003809, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c, +0x9000c905,0x10900750,0x10924751,0x001e0201,0xc2b8b0e0,0x0010f801,0xd1ffea04,0xc30001e1, +0xc2b88c08,0x90007809,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900750, +0x10924751,0x001e0201,0xc2b8b0e0,0x0010f801,0xd1ffe9e8,0xc30001e1,0xc2b88c08,0x9000b809, +0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102, +0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2b8b0e0,0xc1000019,0xc30001e1, +0x00000000,0x90013809,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924751,0xc2b8b0e0,0xc1000019,0xc30001e1,0x00000000,0x90017809, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c, +0xc1002425,0x00924725,0xc10001e1,0xe8000049,0x04e03810,0xc10001f0,0xc10000ed,0x120e3c04, +0x120ebb05,0x108e3c08,0x032eb809,0x108e3b04,0x120e7841,0x120e3840,0x122f3941,0xe8ffffe0, +0x00000000,0x008e7a0d,0x04803c10,0x122ef840,0x840039e9,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002c25,0x00924725,0x00000000, +0xa80005e7,0xc10000e1,0xe8000084,0x120e7941,0x04e03810,0xc10000f4,0x122fb941,0x120f3d04, +0x120e7b05,0x00000000,0x032ebc0a,0x108e3d05,0x120e3841,0x122ebe04,0x122f7840,0x122e3a05, +0x008e390c,0x008e7ae1,0x108e3b04,0x840038e5,0x120e3840,0x032e7c09,0x122eb841,0x120e3a05, +0x008e380d,0x00000000,0x840038e5,0x00000000,0x00000000,0x032fbc09,0x108e3a05,0xe8ffffa0, +0x120e3841,0x04803d10,0x122ef841,0x00000000,0x840005f9,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002425, +0x00900724,0x00924725,0x001e0401,0xc24db4ec,0xa800b8e5,0xc24db4f0,0xc30001ed,0xc30001f0, +0x00108300,0xc10200e9,0xd1fff9ac,0x00000000,0x109e0951,0xc10400e8,0x00813ce8,0xc24db40d, +0xc300010c,0x900038e4,0x00817be9,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002425, +0x00900724,0x00924725,0x001e0401,0xc24db4ec,0xa800b8e5,0xc24db4f0,0xc30001ed,0xc30001f0, +0x00108300,0xc10200e9,0xd1fff5a4,0x00000000,0x109e0951,0xc10400e8,0x00813ce8,0xc24db40d, +0xc300010c,0x900038e4,0x00817be9,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900750,0x10924751, +0x00000000,0xa80004e3,0x00000001,0xe8000031,0x14003805,0xe8000031,0x14003811,0xc1000019, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xd1fffeaf, +0xd2ffffdf,0xd1ffff27,0xd2ffffd7,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002025,0x00900724,0x00924725,0xc2bb18e8,0xc10000e0,0xc2bb18ed,0xc30001e8,0xc30001ec, +0xc10000e5,0xc2bb18e8,0x90003ae0,0xc1ffffe1,0xc30001e8,0x90007be4,0xc2bb18e5,0xc30001e4, +0x84013ae0,0xc1ffffe1,0xc2bb18e4,0x840179e0,0xc1ffffe1,0xc30001e4,0xc1ffffe9,0xc2bb18ec, +0x8401b9e0,0xc2bb18e5,0xd1ffe570,0xc30001ec,0xc10001e1,0xc2baf808,0x8401fbe8,0xc30001e5, +0xc3000108,0x840239e1,0xd1ffe64d,0xc2baf809,0xc100060c,0xc3000109,0xc1000019,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0x001ec201,0xc2bb18e0, +0xc2bb18e5,0xc30001e0,0xc30001e5,0x00000000,0xa80138e3,0x00000001,0xe8000021,0x04003808, +0x108eb921,0xc2bb18e4,0xc10001e1,0xc30001e5,0x00000000,0x840239e1,0xd1ffe580,0x84003a09, +0xc2baf808,0x0010fb01,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924771,0xc2bb18e0, +0xc2bb18e5,0xc30001e0,0xc30001e5,0x00000000,0xa80178e3,0x00000001,0xe8000021,0x04003808, +0x108eb929,0xc2bb18e4,0xc10001e1,0xc30001e5,0x00000000,0x840239e1,0xc1000018,0x84003a09, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d, +0x10924771,0xc2bb18e0,0xc2bb18e5,0xc30001e0,0xc30001e5,0x00000000,0xa801b8e3,0x00000001, +0xe8000021,0x04003808,0x108eb931,0xc2bb18e4,0xc10001e1,0xc30001e5,0x00000000,0x840239e1, +0xc1000018,0x84003a09,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d, +0x10924915,0x1081c97c,0x9000891c,0x9000c905,0x1081c714,0xc1003c25,0x00900724,0x00924725, +0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece0,0x00158401, +0x00000000,0x034507e3,0x0015c300,0x00000000,0x00154501,0xc2bb18e4,0xc2bb18e1,0xd1fffe3c, +0xc30001e5,0xc30001e0,0x90003909,0x00108400,0x9000780d,0xd1fffeb8,0x00109503,0xd1ffff18, +0x00109403,0xd1ffe4b4,0x109e0950,0xc10006e5,0xc2baf808,0x900038e4,0x0010d701,0xc1000114, +0x00111600,0xc3000109,0xc1000019,0x1091c77d,0x1091c715,0x00000000,0xb800c704,0xb800871f, +0x1082477c,0xb8004054,0xb8000051,0x00000000,0xb800c05c,0xb8008059,0x07000101,0x10824915, +0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002825,0x00900724, +0x00924725,0xc2bb18e0,0xc2bb18e5,0xc30001e0,0xc30001e5,0x00000000,0xa80238e3,0x00000001, +0xe8000059,0x14003800,0x108ef941,0xc10000e0,0xc2bb18e8,0xc2bb18e5,0xc2bb18e0,0x84003be0, +0xc30001e9,0xc30001e4,0xa8013a0c,0xc30001e1,0x00000000,0xa801b814,0xa8017911,0xd1ffefd4, +0xc2bae8e5,0x109e0950,0x00000000,0xc30001e5,0xc1000108,0x900038e5,0xc2bb18e0,0xc2bb18e8, +0xc2bb18e5,0xc30001e0,0xc30001e8,0xc30001e5,0x00000000,0xa80178e0,0xb8003af5,0x00000000, +0x00000000,0xb80079ee,0xc2bb18e5,0xe80000b0,0xc30001e5,0x14003800,0x108f3911,0xc2bb18e1, +0xc30001e0,0xc10000e9,0x00000000,0xa80138e7,0xc10000e1,0xe8000035,0x04e038e5,0x00000000, +0xa8003de1,0x108e3a05,0x120e3841,0x122eb841,0xe8ffffec,0x108f7d08,0x122e3805,0x04803ae4, +0x108efb08,0x84003be1,0x00000000,0xb8003c0a,0xd1fffb59,0xc2bae811,0xc3000110,0x0010c201, +0xd1ffe295,0xc2baf809,0xc100080c,0xc3000109,0xd1ffe3b9,0xc2baf809,0xc3000109,0xc1000019, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xc2bb18e1, +0xc30001e0,0xc10000e9,0x00000000,0xa80138e7,0xc10000e1,0xe8ffffc9,0x04e038e5,0x108e3a04, +0xa8003de1,0x120e3840,0x108f7d09,0x122eb841,0xe8ffffed,0x04803ae4,0x108efb08,0x84003be1, +0xd2ffff9f,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900760,0x10924761,0xc2bb18e4, +0xc2bb18e1,0xd1ffe178,0xc30001e5,0xc2baf808,0x90003908,0xc30001e1,0xc3000108,0x9000780d, +0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002825,0x00900724,0x00924725, +0xc2b2f4ec,0xc1ffffe0,0xc2b2f4e5,0xc30001ec,0xc24db4e8,0xc30001e5,0xc1ffffe0,0x84017be0, +0xc30001e9,0xc1051ce4,0x840139e0,0xc2b2f4e1,0xc30001e0,0x008e7ae4,0xc2b2f4e9,0xc24db4e0, +0x9000f8e4,0xc24db4e5,0xc30001e8,0xc30001e0,0xc30001e5,0xc2b2f4e0,0x9002fae0,0xc24db4e9, +0x108e7940,0xc30001e0,0xc30001e9,0xc2b2f4e4,0x900338e4,0xc24db4e1,0x108eba80,0xc30001e4, +0xc30001e1,0xc2b2f4f0,0x900379e8,0xc24db4ed,0x108f78c0,0xc30001f0,0xc30001ed,0xc10060e8, +0xc2b2f4e4,0xc2df0ce1,0xc30001e4,0x9003bcf4,0x008f3be9,0xc30001e0,0xc2b2f4ec,0xc2df0ce9, +0x108f3860,0x9003f9f0,0xc30001ed,0xc30001e8,0xc2b2f4e0,0xc2df0ce5,0x108eba90,0x9001fbf0, +0xc30001e1,0x00000000,0x900238e9,0xd1ffdfac,0xc2b2f4e0,0xc30001e5,0xc30001e0,0x108e79c0, +0xc2b2b409,0xc3000108,0x900278e5,0xd1ffe089,0xc2b2b409,0xc100060c,0xc3000109,0xd1ffdf7d, +0xc2b2d409,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900760,0x10924761, +0xc2b2f4e4,0xc2b2f4e1,0xd1ffdfb4,0xc30001e5,0xc2b2b408,0x90003908,0xc30001e1,0xc3000108, +0x9000780d,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102, +0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924771,0xc10000e1,0xe8000011,0x04c03809, +0xe8000021,0x14a00209,0xc1ffff19,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0xc2b2f4e0,0xc2b2f4e9,0xc30001e0,0xc30001e9,0x00000000,0xa80138e3,0x00000001,0xe8000015, +0x04003808,0x108e7a21,0x00000000,0x84003909,0xd2ffffbe,0xc1000019,0x10924941,0x1081c940, +0x9000891c,0x9000c905,0x10900750,0x10924751,0x001e0201,0xc2b2f4e0,0x0010f801,0xd1ffdf1c, +0xc30001e1,0xc2b2b408,0x84017809,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940, +0x9000c904,0xc1002425,0x00900724,0x00924725,0x00000000,0x90004054,0x90008059,0x00000000, +0x90000051,0x00158300,0x00154400,0x00150501,0xd1fffe9b,0xd1ffff64,0x00109503,0xd1fffee8, +0x00109403,0xd1ffdf54,0x109e0950,0xc10006e5,0xc2b2b408,0x900038e4,0x0010d601,0xc1000114, +0x00111500,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800805b,0x00000000, +0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002c25,0x00900724,0x00924725,0xc2b2f4e1, +0xc30001e1,0x00000000,0xa80178fb,0x00000001,0xe8000029,0x14c03e01,0xc1ffff19,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xc2b2f4e0,0xc2b2f4e8, +0xc2b2f4e5,0xc30001e0,0xc30001e8,0xc30001e5,0x00000000,0xa80138e0,0xb8003af2,0x00000000, +0xb80079ee,0xe8000011,0x14003801,0xe800004d,0x14103809,0xc10000e1,0xe8000039,0x04e038f8, +0xc10000f5,0xc10000e8,0x001e7b01,0x00000000,0x032e3cea,0x108f7d05,0xe8fffff4,0x00000000, +0x108eba09,0x04803df8,0x108e7908,0x840039e1,0xd2ffff6e,0xc1000019,0xc10000e1,0xe8000039, +0x04e038f8,0xc10000f5,0xc10000e8,0x001e7b01,0x00000000,0x032e3ceb,0x108f7d05,0xe8fffff4, +0x108eba08,0x122e3805,0x04803df8,0x108e7908,0x840039e1,0xd10005c0,0xc2b2f4e4,0x0010bb01, +0xc30001e4,0xc1177010,0x109e0951,0xc1000114,0x900038e4,0xc24e200d,0xd1ffdd3d,0xc2b2b409, +0xc100070c,0xc3000109,0xd1ffde61,0xc2b2b409,0xc3000109,0xd2fffeea,0xc1000019,0x10924941, +0x1081c940,0x9000891c,0xc1003025,0x00924725,0xc10000e1,0xe800008d,0x04e0380c,0xc10000fd, +0x00000000,0xb80044f5,0x00000000,0xb80084f8,0xb80004f3,0x00000001,0x120eff04,0xa80045e4, +0xa80005e1,0x00000000,0x032e3b0b,0x00000000,0x060e38f4,0x060e79f9,0x00000000,0x840005e0, +0x060eb8f1,0xc24000e0,0x008e79e1,0x008e3ae1,0x108e3f04,0x008e78e5,0xc27fffe4,0x122eb93c, +0x120e3841,0x122ff840,0x093e79e9,0xe8ffffac,0x008e3b08,0x840045e5,0x04803f0c,0x840038e5, +0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891c,0xc1002825,0x00924725,0xc10000e1,0xe8000079,0x04e0380c,0xc10000f5,0x120f3d04, +0xc24000e1,0x00000000,0x032e7c0b,0x00000001,0x192e7900,0x060e79e4,0x118eb901,0x120ef941, +0xc10000e4,0x009efbe5,0x008e7be0,0x009e39ed,0x009e38ed,0x00000000,0x060ebae1,0x108e3d05, +0x120e3840,0x008e79e9,0xc27fffe0,0x122e793c,0x122f7841,0xe8ffffa8,0x008e3c08,0x093e78e5, +0x04803d0c,0x840038e5,0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725,0x122f0404,0xc10000e1,0xe8000059, +0x04e038f0,0xc10000ed,0x120ebb04,0x108e3b05,0x108e7a04,0x00000000,0x120e3841,0x120efb08, +0x008e7a0c,0x120eb905,0x00000000,0x032efb08,0x032eba0b,0x00000001,0x122ef840,0x122e3a04, +0x122ebb05,0xe8ffffc4,0x008e3ae1,0x04803bf0,0x840039e1,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725,0xc10003e1, +0xe8000049,0x04e03810,0xc10003f0,0xc10000ed,0x120e3c04,0x120ebb05,0x108e3c10,0x032eb809, +0x108e3b04,0x120e7841,0x120e3840,0x122f3941,0xe8ffffe0,0x00000000,0x008e7a0d,0x04803c10, +0x122ef840,0x840039e9,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1004025,0x00924725,0x00000000,0xb8000535,0xc10000e1,0xe80000cc, +0xc100002d,0x04e03810,0x00000000,0xc1000031,0x120fcb04,0x108e0c04,0x12228d05,0x120e3840, +0x032eff08,0x120f0c05,0x122e7840,0x108e0b05,0x108eb904,0x120e7904,0x120e3841,0x120e7a40, +0x00000000,0x008eb90d,0x122f7b04,0x122ef940,0x1222f841,0x108e3b04,0x008f8af5,0x122e3e04, +0x120e7841,0x008e3c0c,0x008f4ae0,0x008f38f5,0x120e3b04,0x840038f5,0x008e380c,0x84003af9, +0x00000000,0x00000000,0x840038f1,0x00000000,0x032e7f09,0x122eb941,0x120e3a05,0x008e380d, +0x00000000,0x840038e5,0x00000000,0x00000000,0x03237f09,0x108e3a05,0xe8ffff58,0x120e3841, +0x04800b10,0x12233841,0x00000000,0x90000535,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x1092497d,0x10924915,0x1081c97c,0x9000891c,0xc1003c25,0x1081c715,0x00924725, +0xc1ffece1,0x00000000,0x034f47e3,0x00000001,0xc10000e1,0xe8000065,0x04e03810,0xc10000e9, +0x120f3a04,0x108e3a05,0x00000000,0x032efc08,0x032e7c0f,0xc24c10e9,0x00000000,0x20fe45e4, +0x20febaee,0x008e7ae5,0x00000000,0x20de79f6,0x120e3840,0x108e7905,0xc27fffe0,0x122e7904, +0x122eb841,0xe8ffffbc,0x008e3c08,0x093e78e5,0x04803a10,0x840038e5,0x1091c77d,0x1091c715, +0x00000000,0xb800871d,0x07000101,0x1082477d,0x10824915,0x10924941,0x1081c940,0x9000891c, +0xc1005425,0x00924725,0xc10000e0,0xb800c4f4,0xb80104ed,0xc10000f0,0xb8000448,0xb8004445, +0xc10000e8,0xb8008440,0xb80005ed,0xeb0000ec,0xb8004534,0xb800c5f1,0x0093fcf4,0xb80105e4, +0xa8000231,0x0093baed,0xc100002d,0x04e0380d,0xc1000028,0xc10002fc,0xc10004f9,0x00000000, +0x20fe3c44,0x20fe4c49,0x00000000,0x21cebb3c,0x20fe7941,0x008e39e0,0x20fefc40,0x21ce4d39, +0x008e38e4,0x21cf7b38,0x20fe8c45,0x009e38e9,0xc27fffe0,0x009378e5,0x122e4d34,0x21ce4d3c, +0x1082cb09,0x008e0a08,0x00000000,0x093f38e5,0x00000000,0x840038f1,0x00000000,0x032f3f0b, +0x00000001,0x00000000,0x20fe3c4a,0x008e38e9,0x008e38ed,0x009e38e5,0x009ef8f5,0xc27fffe0, +0x122e7b35,0x008e3f08,0x093e78e5,0x00000000,0x840038e5,0x00000000,0x00000000,0x03233e09, +0x10828a11,0xe8ffff58,0x001e4c00,0x108fff11,0x04800b0c,0x108fbe11,0x00000000,0x900005ed, +0x00000000,0x90004535,0x00000000,0x90008531,0x00000000,0x9000c5f1,0xc1000018,0x900105e5, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924915,0x1081c97c, +0x9000891c,0x9000c905,0x1081c714,0xc1006c25,0x00900724,0x00924725,0x00000000,0x90028078, +0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000, +0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055, +0xc1ffece0,0x0017c301,0x00000000,0x034e07e3,0x0015c200,0x00000000,0x00178401,0x00000000, +0xa8017854,0xb801f851,0xc24db4e4,0xb802f874,0xb8023871,0xc30001e4,0xb802786d,0xc1009ce1, +0x0086b9e1,0xc24db4e8,0x00000000,0xc24db4e5,0xd1fffb30,0xc1051ce0,0xc30001e9,0xc252d0e0, +0xc30001e4,0x00867ae1,0x00111500,0x0010da00,0x0085b9e1,0xd1fff9a8,0x12251504,0x00111401, +0x00109a00,0x0010d400,0x00115d02,0xd1fff990,0x0010d401,0x10815d20,0x00111c00,0x00109a02, +0xd1fffb69,0x00111400,0x0010da00,0x00109a02,0x1225550c,0xc10000e1,0xe8000031,0x04e03854, +0xc1000061,0x120e1805,0x108e1804,0x032e1ae0,0x008e59e1,0x120e3841,0x12263841,0xe8ffffe9, +0x04801854,0x840039e1,0xd1fff9f0,0x00109a00,0x0010d503,0xd1fffd40,0xc24db4e5,0xc30001e4, +0xc10074e0,0x00109a01,0x00111b00,0x008179e0,0x0010d501,0x0010d900,0x00000000,0x00109a01, +0xd1fffc64,0x109e0951,0x00115e00,0x9000387c,0x00111502,0xd1fffb48,0xc24db4e5,0xc30001e4, +0xc10070e0,0x00109a01,0x00111500,0x008179e0,0x0010d901,0xc10040e1,0xd1fff8c4,0xc24db4e4, +0x12055509,0xc2df0c10,0xc30001e4,0x00109901,0xc3000110,0x0010d500,0x008179e1,0xc10000e1, +0xe8000051,0x04e03854,0xc1000061,0x120f1804,0x120e5808,0x108e1805,0x108e7c04,0x032ed9f0, +0x008e96e5,0x120e7905,0x008e56e6,0x00000000,0x84003aed,0x00000000,0x032e19f1,0x120e3841, +0x12263841,0xe8ffffc9,0x04801854,0x840039e1,0xc2b2d409,0xd1ffd5e4,0xc10000e4,0x109e0951, +0xc3000108,0x900038e5,0xc1000114,0x12011504,0x0010d601,0xd1ffd675,0xc2b2d409,0xc3000109, +0x12055504,0xc10000e1,0xe8000081,0x04e03854,0xc1000060,0xc1000051,0x120e5804,0x108e1805, +0x008ed7e4,0x032f16e4,0x032f57e5,0x120e3804,0xc27fffe9,0x008e57e2,0xc27ffff0,0x008f7df1, +0x00000000,0x093f3cf5,0x00000000,0x84003bf1,0x00000000,0x032ed6e0,0x032f17e2,0x108e1809, +0x120e3841,0x108e1404,0x008efcec,0x12263841,0xe8ffffa8,0x120e3840,0x093ebaed,0x04801854, +0x12253840,0x840039e9,0x1091c77c,0xb8000050,0xb8004055,0x1091c714,0xb8008058,0xb800c05d, +0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8014064,0xb8018069,0x00000000,0xb801c06c, +0xb8020071,0x00000000,0xb8024074,0xb8028079,0x1082477c,0xb802c07c,0xb800871d,0x07000101, +0x10824915,0x00100901,0x10924941,0x1081c940,0x9000891c,0xc100ec25,0x00900724,0x00924725, +0x00000000,0x9008c0d8,0x900900dd,0x00000000,0x900840d0,0x900880d5,0x00000000,0x9007c0c8, +0x900800cd,0x00000000,0x900740c0,0x900780c5,0x00000000,0x9006c0b8,0x900700bd,0x00000000, +0x900640b0,0x900680b5,0x00000000,0x9005c0a8,0x900600ad,0x00000000,0x900540a0,0x900580a5, +0x00000000,0x9004c098,0x9005009d,0x00000000,0x90044090,0x90048095,0x00000000,0x9003c088, +0x9004008d,0x00000000,0x90034080,0x90038085,0x00000000,0x9002c078,0x9003007d,0x00000000, +0x90024070,0x90028075,0x00000000,0x9001c068,0x9002006d,0x00000000,0x90014060,0x90018065, +0x00000000,0x9000c058,0x9001005d,0x00000000,0x90004050,0x90008055,0x00000000,0xb80085e3, +0x00000001,0x00000000,0x900000e1,0x00000000,0xa80002e8,0xa80042e5,0x00000000,0xb801c588, +0xb8030585,0xc10000e0,0xb80105a4,0xb80245ed,0xc1000094,0xb8038529,0x008e7ae5,0xe80006f1, +0x04e03810,0x00000000,0x12283905,0x00000000,0xb805458c,0xb805857d,0x00000000,0xb805c578, +0xb8064575,0x00000000,0xb8068570,0xb806c56d,0x00000000,0xb8004568,0xb8018565,0x00000000, +0xb802c560,0xb800c55d,0x00000000,0xb8020558,0xb8034557,0x00000001,0x00000000,0xa80029f5, +0x00000000,0xa8000ae9,0xc26000e8,0xc13800f1,0xc26000e0,0x00000000,0xc13800e5,0xc130002c, +0x20f3fde8,0x20f4bdf1,0xc13800f8,0x20f43ae0,0x20f3bae5,0xc26000f4,0xa8003bfc,0xa80e8535, +0xc13000e8,0xa80f05f8,0xa80ec5f5,0xc13000e0,0x10832908,0xc24000e5,0xc24000f1,0x108fca08, +0x20f4fff4,0x20ffbff9,0xc10000e0,0x20febee0,0x20ff4d2d,0xc2400044,0x20fe7de9,0x00950ee8, +0x20feb934,0x009912f5,0x120e5404,0x00000000,0x009fbee5,0x120ebe04,0x008f4fe8,0x008e7991, +0x009378e4,0x840029f4,0x0083ba91,0x1082fb08,0xa80f05f4,0x120aa505,0x1204a508,0x008e3e50, +0x1083ea05,0x120eb804,0x008e24f8,0x008e6451,0x120e7904,0x00000000,0x120e3805,0x009f7ee4, +0x20febcf4,0x009e64e9,0xc25555e0,0x00000000,0x009f94e1,0xc27fffe4,0x20ff39e0,0x008e10e9, +0xc25555e0,0x84000ae0,0xc27fffe9,0x093f79f0,0x20ff3de0,0xa80ec5f9,0xc25555e4,0x00000000, +0xc27fffe1,0x120f0f04,0x20fe7ee4,0x093ebaf1,0x00841209,0x008ba0f4,0x20fe51f8,0x093e38e5, +0xc27fff44,0x00000000,0x008b60e9,0xc27fff3c,0x008e53e4,0x0082bc09,0x108f6208,0x84003be4, +0x008b20e1,0x108fa108,0xa800454c,0x03249209,0x01cf3d7c,0xa8000538,0x03237c09,0x01ce4b70, +0x01cefe78,0x01ce8c75,0x01ce3f6d,0x09ba3c64,0x20c38d4c,0x20c48e4d,0x09c9fcf4,0x20cf0d38, +0x20c35239,0x008f689d,0x10834d04,0x108f3c04,0x09b9bb61,0x09c93bf8,0x008f0d48,0x008efc39, +0x122fbc04,0x122efb04,0x008f2691,0x09bafa5c,0x093f91f8,0x093ecfed,0x09b4f958,0x840010f8, +0x09c53a31,0x09c4b92c,0x84000aec,0x008eeb51,0x008e9348,0xb80000e0,0xa80f85fd,0x09b47854, +0xa80022f8,0xa80fc5e1,0x09c438fc,0xa80021f8,0xa81005e1,0x008e5141,0x00000000,0xa80038e1, +0x008c3ee0,0xa80285e1,0x00000000,0x00000000,0x008bfee2,0x008cb8fd,0x00000000,0x20be38ca, +0x00000000,0x840e85e1,0x00000000,0xa80505e1,0x00000000,0x00000000,0x0083eb51,0x00000000, +0x00000000,0x00839141,0x00835349,0x00000000,0x20be38c2,0x00000000,0x840ec5e1,0x00000000, +0xa80785e1,0x108cfb09,0x108c7908,0x0083289c,0x108a7a09,0x108f7d08,0x00000000,0x108f3c09, +0x01cefd7c,0x20be38bc,0x0082e691,0x01ce7374,0x00000000,0x01cebc79,0x01c2b16c,0x840f05e0, +0x01ce2971,0x09cfbbf4,0xa802c5e0,0x09bffb65,0x09bef95c,0x09bf7a60,0x09cf3af1,0x09ce38a4, +0x09ceb9cc,0x09be7859,0x008ef9e0,0x00000000,0x008a7be9,0x09ce0ac4,0x20fe32e0,0x09be4a55, +0x00000000,0x00000000,0x0082b9e1,0x00000000,0x840f85e1,0x00000000,0xa80545e3,0x00000001, +0x00000000,0x20fe30e2,0x00000000,0x840fc5e1,0x00000000,0xa807c5e3,0x00000001,0xc10080e0, +0x20fe6fe1,0x008e05e1,0x122b6e10,0x840038e4,0x122dad11,0x122eac10,0xb80000e0,0x108e2a09, +0x120c7804,0x108e2a0c,0xc13800d1,0xc26000cc,0xc26000bc,0x120c3805,0xc13800c8,0x00000000, +0xc26000e5,0xc13800d4,0x840038b4,0xc13000b5,0xc13000b8,0xb80000e0,0xc24000b1,0xc13000f8, +0x840022d8,0x0088bff9,0xc24000f4,0x840021e8,0x00887df1,0xc10000f0,0x03243108,0xc25555e9, +0x108ff808,0x032ff008,0x032e2b51,0x01ce3f8c,0x032e1348,0x032fd141,0x09c478fc,0x00000000, +0x09b4b869,0x0084d245,0x008cd0fc,0x20fbf8cc,0x20fcb8d1,0xc2555540,0x20fd3fbc,0x20fd7fc9, +0x108e5308,0x20f538e4,0x20faf8d5,0x008fd244,0xa80e85dc,0xa80f05e5,0xc27fff4c,0xa80ec5e4, +0x01ce398d,0xc27fffd8,0x09be7868,0x09ce38e5,0x008e39e1,0xc27fffb4,0x20ffb9b4,0x20fbb7b9, +0xc25555e4,0x20ffb9f9,0x009bb5f8,0x20faecdc,0x009b32b9,0x120fae04,0x00000000,0x009cabf9, +0x120af204,0x008befac,0x008fbeb1,0x009fbcf8,0x84000fbc,0x0083ebb1,0x008f2cb8,0xa80f05e8, +0x008af2b9,0x120beb04,0x120afc04,0x008f2cc9,0x120b3c04,0x009f32ac,0x009aecbd,0x00942eb0, +0x20febc40,0x20ff2be9,0x122af304,0x20ff3de9,0x093eade8,0x20fe50e4,0x093e53f1,0x008f2be4, +0x00000000,0x008f74f1,0x00000000,0x84000ef4,0x093e76e5,0x008e6be4,0xa80ec538,0x008eabeb, +0xc24000f5,0x00000000,0x20ff7d3a,0x008f54f5,0x00000000,0x84000df5,0x00000000,0xa80045f4, +0x03237109,0x00000000,0xa80005f8,0x032f700b,0x00000000,0x20c37ef4,0x20c38ff5,0x00000000, +0x20cf7df8,0x20cf8dfa,0x108fbe04,0x108f7d05,0xc27fff34,0x008fbe38,0x008f7d35,0xc27ffff4, +0x122fbd04,0x1223be05,0x008f7108,0x09334d38,0x093fbdf9,0x008f7008,0x84003d35,0x00000000, +0x84003df9,0x00000000,0xa80f85f4,0x032f9245,0x00000000,0xa80fc5f4,0x032fa89d,0x00000000, +0xa81005f4,0x032fa691,0x00000000,0xa80285f5,0x0083bef5,0x00837ef5,0x008fbef5,0x00000000, +0x20bf7d3a,0x00000000,0x840e85f5,0x00000000,0xa80505f7,0x00000001,0x00000000,0x20bf7d36, +0x00000000,0x840ec5f5,0x00000000,0xa80785f7,0x00000001,0x00000000,0x20bf7dfa,0x00000000, +0x840f05f5,0x00000000,0xa802c5f7,0x00000001,0x00000000,0x20ff4ef6,0x00000000,0x840f85f5, +0x00000000,0xa80545f7,0x00000001,0x00000000,0x20ff4df6,0x00000000,0x840fc5f5,0x00000000, +0xa807c5f7,0x00000001,0xc10080f4,0x20ffbef5,0x008f45f5,0x122f3c10,0x84003df9,0x122eba10, +0x84003ff1,0x122e7910,0x84000ce9,0x108eaa10,0x84000be4,0x108e6a15,0x120e7a04,0x900000e0, +0x120e3905,0x00000000,0x032e7908,0x032e3809,0x108e2509,0x120e3841,0x12297841,0xe8fff97c, +0x008e39e1,0x04802510,0x12283805,0x00000000,0xb80000e3,0x00000001,0x00000000,0x900085e1, +0x00000000,0x9001c589,0x00000000,0x90030585,0x00000000,0x900105a5,0x00000000,0x900245ed, +0x00000000,0x90038529,0x00000000,0xb8008055,0x00000000,0xb8004050,0xb801005d,0x00000000, +0xb800c058,0xb8018065,0x00000000,0xb8014060,0xb802006d,0x00000000,0xb801c068,0xb8028075, +0x00000000,0xb8024070,0xb803007d,0x00000000,0xb802c078,0xb8038085,0x00000000,0xb8034080, +0xb804008d,0x00000000,0xb803c088,0xb8048095,0x00000000,0xb8044090,0xb805009d,0x00000000, +0xb804c098,0xb80580a5,0x00000000,0xb80540a0,0xb80600ad,0x00000000,0xb805c0a8,0xb80680b5, +0x00000000,0xb80640b0,0xb80700bd,0x00000000,0xb806c0b8,0xb80780c5,0x00000000,0xb80740c0, +0xb80800cd,0x00000000,0xb807c0c8,0xb80880d5,0x1091c740,0xb808c0d8,0xb80900dd,0x00000000, +0xb80840d0,0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941,0x00000000,0x9000891d, +0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0xc2b5cce4,0xc2b5c0e0,0xc2b5c0e9, +0xc30001e4,0xc30001e0,0xc30001e9,0xc10000e0,0x900039e0,0xc2b5c0e5,0xc30001e4,0x90003ae0, +0xc10000e1,0xc2b5c0e4,0x900079e0,0xc1ffffe1,0xc30001e4,0xc2b5c0ec,0xc1ffffe9,0xc30001ec, +0x840139e0,0xc2b674e5,0xd1ffc990,0xc2b654e0,0xc30001e5,0xc30001e0,0x84017be8,0xc2b65409, +0xc3000108,0x900039e1,0xc2b674e0,0xc100060d,0xc30001e1,0x00000000,0xb8003809,0xd1ffca5b, +0xc2b678e4,0xc1000019,0xc10001e0,0xc30001e5,0x00000000,0x840039e1,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c, +0x9000c905,0x10900760,0x10924761,0xc2b5cce4,0xc2b674e1,0xc30001e4,0xc30001e1,0x00000000, +0xb80039e7,0x00000001,0x00000000,0x90003909,0x00000000,0x9000790d,0x00000000,0xb8003809, +0xd1ffc95f,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102, +0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900770,0x10924771,0x001e8201, +0xc2b5cce1,0xc30001e1,0x00000000,0xb80038e7,0x00000001,0x00000000,0xa80139e3,0x00000001, +0xe8000011,0x04003809,0x00000000,0x84013909,0xc2b674e0,0x0010fa01,0xc30001e1,0x00000000, +0xb8003809,0xd1ffc917,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924761,0xc2b5cce1,0xc30001e1, +0x00000000,0xb80038e7,0x00000001,0x00000000,0xa80179e3,0x00000001,0xe8000021,0x04003809, +0xc2b678e4,0x84017908,0xc10001e1,0xc30001e5,0x00000000,0x840039e1,0xc1000019,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000,0x9000891d,0x1081c940, +0x9000c904,0xc1002c25,0x00900724,0x00924725,0xc2b5cce1,0xc30001e1,0x00000000,0xb80038e7, +0x00000001,0x00000000,0xa80139e3,0x00000001,0xe8000029,0x14c03801,0xc1ffff19,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xc2b678e1,0xc30001e1, +0x00000000,0xa80038e3,0x00000001,0xe8000039,0x14003801,0x00000000,0xa801790d,0xd1000161, +0xc2b5d009,0xc1000110,0x00000000,0xc3000109,0xc2b678e4,0xc10000e1,0xc30001e5,0x00000000, +0x840039e1,0xc2b5cce1,0xc30001e1,0x00000000,0xb80038f7,0x00000001,0x00000000,0xa8017de7, +0xc10000e1,0xe8000071,0x041038e5,0x00000000,0xa8013de7,0xc10000e1,0xe8000055,0x04e038e4, +0xc10000f9,0x00000000,0xb8003dec,0xb8007deb,0x00000001,0x120e3e05,0x00000000,0x032e7be0, +0x008e3ae3,0x00000001,0x00000000,0x840038e5,0x00000000,0xa8013de1,0x108e3e05,0x120e3841, +0x122fb841,0xe8ffffd1,0x04803ee1,0xd2ffff12,0xc1000019,0x00000000,0xa8013dec,0xb8003df6, +0x00000000,0x00000000,0xb8007df1,0xc10000e1,0xe8000049,0x04e038ec,0xc10000f9,0x00000000, +0xa8003deb,0x00000001,0x108e3e04,0x122e7a7d,0x120e3840,0x129e7905,0x122fb840,0x008e3ae5, +0xe8ffffdc,0x108f7d08,0x122e3805,0x04803eec,0x108f3c08,0x84003ce1,0xc2b5cce0,0xc2b5d015, +0xc30001e0,0xc3000115,0x00000000,0xb80038e3,0x00000001,0x00000000,0xa80138e0,0xb800780b, +0x00000001,0xd1fff2a4,0x122e3805,0x120e3841,0x0010c200,0x12213841,0xd2ffff57,0x10924941, +0x1081c940,0x9000891c,0xc1003c25,0x00924725,0xc24db4e8,0xc24db431,0xc2e544e4,0x108fc210, +0xc30001e9,0xc252e0e0,0xc3000130,0xc30001e5,0xc10100e0,0x0082fae0,0xc10000f5,0xc1000028, +0x008ef8e4,0x001f3f01,0x00000000,0x90003c31,0x00000000,0xb8003beb,0xc10000e1,0xe8000031, +0x04e038e8,0xc10000f9,0x00000000,0x034e7ff7,0x00000001,0x108fbe04,0xc10000e1,0xe8fffff8, +0x840039e1,0x04803ee8,0x108e7909,0x00000000,0x034e3ff7,0x00000001,0x00000000,0x90007ce1, +0x00000000,0xb8003be3,0x10828a04,0x00000000,0x108f7d51,0xe8ffff94,0x108f3c50,0x120e3805, +0x14800a0c,0x108efb10,0x00830ce1,0xc2e544e4,0xc1000029,0xc1012ce0,0xc10008f0,0xc30001e5, +0x001f7f00,0x008ef8e5,0x00000000,0x9000bd2d,0x00000000,0xb8003beb,0xc10000e1,0xe8000031, +0x04e038e8,0xc10000f9,0x00000000,0x034e7cff,0x00000001,0x108fbe04,0xc10000e1,0xe8fffff8, +0x840039e1,0x04803ee8,0x108e7909,0x00000000,0x034e3cff,0x00000001,0x00000000,0x9000fde1, +0x00000000,0xb8003be3,0x10828a04,0x00000000,0x108f3c51,0xe8ffff94,0x108f7d50,0x120e3805, +0x14800a0c,0x108efb10,0x0082cbe1,0xc2e544e0,0xc2e544e5,0xc30001e0,0xc30001e5,0xc10120e0, +0xb810f8e8,0xc1000029,0x008e78e6,0xc2e544e1,0xc30001e0,0x840002e9,0x00000000,0xb81138e3, +0x00000001,0x001ebf00,0x840042e1,0xc1fff4e1,0x00000000,0x034e39e3,0x00000001,0x00000000, +0x84023ae1,0x00000000,0x00000000,0xb80039e2,0x10828a05,0xe8ffffd8,0x108e7911,0x14800a0c, +0x108eba50,0x84027ae1,0xc1007ce0,0xc10000f9,0x008e82e1,0xc10000e4,0x109e3a20,0x108fbe05, +0xe8fffff4,0xc10000e0,0x840038e5,0x14803e10,0x108eba08,0x84003ae1,0xc2e544e8,0x00000000, +0xc2e544e5,0xc30001e8,0xc2e544e1,0x00000000,0xb8103aea,0x00000000,0xb80042ee,0x109eba05, +0x120eba05,0x008ebbe9,0xc30001e4,0x900542e9,0x00000000,0xb81079e4,0xb80182eb,0x00000001, +0x109e7905,0x120e7905,0x008e7ae5,0xc30001e0,0x900582e5,0x00000000,0xb810b8e0,0xb802c2e7, +0x00000001,0x109e3805,0x120e3805,0xc2e544e0,0x008e79e1,0xc30001e0,0x9005c2e5,0x00000000, +0xb812f8e0,0xb800c2e7,0x00000001,0x109e3805,0x120e3805,0xc2e544e0,0x008e79e1,0xc30001e0, +0x900642e5,0x00000000,0xb81338e0,0xb80202e7,0x00000001,0x109e3805,0x120e3805,0xc2e544e0, +0x008e79e1,0xc30001e0,0x900682e5,0x00000000,0xb81378e0,0xb80342e7,0x00000001,0x109e3805, +0x120e3805,0x008e39e1,0x00000000,0x9006c2e1,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x1092497d,0x10924915,0x1081c97c,0x9000891c,0xc100ac25,0x1081c715,0x00900724, +0x00924725,0x00000000,0x90038088,0x9003c08d,0x00000000,0x90030080,0x90034085,0x00000000, +0x90028078,0x9002c07d,0x00000000,0x90020070,0x90024075,0x00000000,0x90018068,0x9001c06d, +0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050, +0x90004055,0xc1ffece1,0x00000000,0x034747e3,0x00000001,0x00000000,0xa800028c,0xa8008289, +0xc1007ee0,0xa8004284,0xa800c281,0xc10000e0,0x00835de0,0xc1007e55,0xe80000a5,0x04e03875, +0xc100fc38,0xc101002d,0xc100fe30,0xc1000cf8,0xc1010229,0xc10008fc,0xc1000ef0,0xc1000af5, +0x122e6304,0x122e2104,0x008e8e15,0x008e0c14,0x008ef9e0,0x009e79e1,0x122ee204,0x84003aec, +0x122ea005,0x008e0b14,0x840038e4,0x008e7be9,0x008e0a14,0x840038e4,0x009e7be9,0xedffffc4, +0x840038e5,0x10855510,0x0328ff08,0x0328be09,0x10828a20,0x03287d08,0x03283c09,0x1082cb20, +0x108f3c20,0x10830c21,0x10838e21,0x108f7d21,0x04801534,0x108fbe20,0x108fff21,0xc10000e1, +0xe8000155,0x04e03874,0xc1000055,0xc100007c,0xc1000279,0xc1000070,0xc100006c,0xc1000069, +0x00165f00,0xc1000060,0x0015de01,0x10859f10,0xc1000250,0x1084df19,0x10849f20,0xc1000444, +0x10841f29,0x1083df30,0xc1000638,0x10835f39,0x10869a10,0x0328d914,0x0323180d,0xc10040e0, +0x03285714,0x032fd811,0x00000000,0x03289614,0x032e940d,0x10851420,0x03281314,0x032e5411, +0x10861820,0x0322d214,0x0322910d,0x10845120,0x032f9014,0x032f1111,0x1083cf40,0x032f4f14, +0x032ece0d,0x10838e20,0x03230d14,0x032fce11,0x10834d41,0x10841041,0x10849240,0x20ee61fc, +0x20eea331,0x1084d340,0x20eea0e4,0x20ef22e9,0x008f9ce8,0x20ee7ef0,0x20eecb29,0x008f5be4, +0x20eebded,0x008f3de8,0x20ee4cfc,0x008f7ef1,0x008efce4,0x00000000,0x008f3ded,0x10859640, +0x1085d740,0x10865941,0xe8ffff49,0x04801ae0,0x00873ce8,0x0086fbe5,0xc27fffe0,0x008e5c6c, +0x008e9f09,0xc27fffe0,0x093ef8e4,0x009e5c6d,0x10855508,0x84003aec,0x093e78e5,0xe8fffed8, +0x008e1e08,0x10879e11,0x04801574,0x1087df10,0x840038e5,0x108e1d04,0xc1000054,0xc10000f9, +0x120f5d04,0xc10002f0,0x120ef805,0x00000000,0x032e7d17,0x008e3e15,0x00000000,0x840038e5, +0x00000000,0x00000000,0x032ebb15,0x10855504,0xc1003fe1,0x008e7c14,0x108fbe10,0x108f7d11, +0xe8ffffcc,0x108f3c11,0x048015e0,0x108efb10,0x840039e9,0xc1000019,0x00000000,0xb8004055, +0x00000000,0xb8000050,0xb800c05d,0x00000000,0xb8008058,0xb8014065,0x00000000,0xb8010060, +0xb801c06d,0x00000000,0xb8018068,0xb8024075,0x00000000,0xb8020070,0xb802c07d,0x1091c77c, +0xb8028078,0xb8034085,0x1091c714,0xb8038088,0xb803c08d,0x1082477c,0xb8030080,0xb800871d, +0x07000101,0x10824915,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002025,0x00900724,0x00924725,0xc2bb2ce8,0xc10000e0,0xc2bb2ced,0xc30001e8,0xc30001ec, +0xc10000e5,0xc2bb2ce8,0x90003ae0,0xc1ffffe1,0xc30001e8,0x90007be4,0xc2bb2ce5,0xc30001e4, +0x84013ae0,0xc1ffffe1,0x00000000,0x840179e1,0xc1ffffe8,0xc10001e0,0xc2bb2ced,0xd1ffbebc, +0xc30001ec,0xc2bb2ce5,0xc30001e4,0x8401bbe8,0xc2bac809,0xc3000108,0x840239e1,0xd1ffbf99, +0xc2bac809,0xc100060c,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900760, +0x10924761,0x001e0201,0xc2bb2ce4,0xc2bab8e0,0x0010f801,0xc30001e4,0xc30001e1,0xd1ffbefc, +0x84013909,0xc2bac808,0x8400b809,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924751, +0xc2bb2ce0,0xc1000019,0xc30001e1,0x00000000,0x84017809,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2bb2ce0,0xc1000019, +0xc30001e1,0x00000000,0x8401b809,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900760,0x10924761,0xc2bb2ce4,0xc2bb2ce1, +0xd1ffbdfc,0xc30001e5,0xc2bac808,0x90003908,0xc30001e1,0xc3000108,0x9000780d,0xc1000019, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1003025,0x00900724,0x00924725,0xc2bb2ce0, +0xc2bb2ce8,0xc2bb2ce5,0xc30001e0,0xc30001e8,0xc30001e5,0x00000000,0xa80178e0,0xb8003afd, +0x00000000,0x00000000,0xb80079f6,0xc2bb2ce5,0xe80000d4,0xc30001e5,0x14003800,0x108fb911, +0xc2bb2ce4,0xc10000e1,0xc30001e5,0x00000000,0xa80139eb,0xc2bb2ce5,0xe800004c,0xc30001e5, +0x04e038e8,0x108ef920,0xc10000f1,0x00000000,0xa8003ff3,0x108e3c04,0x00000000,0xc25a9de5, +0x120e3840,0x060e3ce5,0x122f3841,0xe8ffffe0,0x108fff08,0x122e383d,0x04803ce8,0x108f7d08, +0x84003de1,0x00000000,0xa8003be4,0xb8003e09,0xc2e544f4,0xc10080f0,0xc24db4ed,0xc30001ec, +0xc25b00e8,0x109e0951,0xd1fff99d,0xc30001f4,0x00817be8,0xc2e54411,0xc3000110,0x900038e4, +0x0080fdf1,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102, +0x00100901,0xc2bb2ce1,0xc30001e0,0xc10000f1,0x00000000,0xa80138e7,0xc10000e1,0xe8ffffc9, +0x04e038e5,0x108e3c04,0xa8003fe1,0x120e3840,0x108fff09,0x122f3841,0xe8ffffed,0x04803ce4, +0x108f7d08,0x84003de1,0xd2ffff9f,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002025,0x00900724,0x00924725,0xc2bb60e8,0xc10000e0,0xc2bb60ed,0xc30001e8,0xc30001ec, +0xc10000e5,0xc2bb60e8,0x90003ae0,0xc1ffffe1,0xc30001e8,0x90007be4,0xc2bb60e5,0xc30001e4, +0x84013ae0,0xc1ffffe1,0xc2bb60e8,0x840179e0,0xc1ffffe1,0xd1fff160,0xc2bb60e4,0xc30001e9, +0xc30001e4,0x8401bae0,0xc10001e1,0x00000000,0x840239e1,0xd1fffc1b,0xd1ffbb41,0xc2bb4009, +0xc3000109,0xd1ffbc31,0xc2bb4009,0xc100060c,0xc3000109,0xc1000019,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d, +0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0x00000000,0x90000051,0x00150201, +0xc2bb60e0,0xc2bb60e5,0xc30001e0,0xc30001e5,0x00000000,0xa80138e3,0x00000001,0xe8000021, +0x04003808,0x108eb921,0xc2bb60e4,0xc10001e1,0xc30001e5,0x00000000,0x840239e1,0xd1fffc30, +0x84003a0b,0xd1fff1e0,0x00109403,0xd1ffbb4d,0xc2bb4008,0x0010d401,0xc3000109,0xc1000019, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8000051,0x07000102, +0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2bb60e0,0xc1000019,0xc30001e1, +0x00000000,0x84017809,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891d,0x10924771,0xc2bb60e0,0xc2bb60e5,0xc30001e0,0xc30001e5,0x00000000, +0xa801b8e3,0x00000001,0xe8000021,0x04003808,0x108eb931,0xc2bb60e4,0xc10001e1,0xc30001e5, +0x00000000,0x840239e1,0xc1000018,0x84003a09,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724, +0x00924725,0x00000000,0x90000050,0x90004055,0x00154200,0x00150301,0xc2bb60e4,0xc2bb60e1, +0xd1fffbe0,0xc30001e5,0xc30001e0,0x90003909,0x00108300,0x9000780d,0xd1fff03c,0x00109500, +0x0010d403,0xd1ffb9d9,0xc2bb4008,0x0010d401,0xc3000109,0xc1000019,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051,0x07000102,0x00100901, +0x1092497d,0x10924915,0x1081c97c,0x9000891c,0x9000c905,0x1081c714,0xc1003c25,0x00900724, +0x00924725,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece0, +0x00158401,0x00000000,0x034507e3,0x0015c300,0x00000000,0x00154501,0xd1ffff0f,0xd1fffdb8, +0x00109603,0xd1fffe60,0x00109503,0xd1fffe90,0x00109403,0xd1ffba24,0x109e0950,0xc1000ae5, +0xc2bb4008,0x900038e4,0x0010d701,0xc1000114,0x00111600,0xc3000109,0xc1000019,0x1091c77d, +0x1091c715,0x00000000,0xb800c704,0xb800871f,0x1082477c,0xb8004054,0xb8000051,0x00000000, +0xb800c05c,0xb8008059,0x07000101,0x10824915,0x00100901,0x10924941,0x00000000,0x9000891d, +0x1081c940,0x9000c904,0xc1002825,0x00900724,0x00924725,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0xc2bb60e0,0xc2bb60e5,0xc30001e0,0xc30001e5,0x00000000,0xa80138e3, +0x00000001,0xe8000041,0x14c03800,0x1085b921,0xc1ffff19,0x1091c741,0x00000000,0xb800c704, +0xb800805b,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741, +0x00100901,0xc2bb60e4,0xc2bb60e0,0xc1000109,0xc30001e4,0xc30001e1,0x00000000,0xb8003954, +0xb8007851,0xd1fff98f,0xd1fff9c2,0xc1000109,0xd1ffef5a,0xc1000109,0xc2bb60e1,0xc30001e1, +0x00000000,0xa80178e3,0x00000001,0xe8000051,0x14003801,0xc2bb60e1,0xc30001e1,0x00000000, +0xa801b8e3,0x00000001,0xe8000035,0x14003805,0xd1ffef83,0xd1fffa0b,0xd1ffb83d,0xc2bb4009, +0xc100070c,0xc3000109,0xd1ffb961,0xc2bb4009,0xc3000109,0xd2ffff42,0xc1000019,0x00000000, +0xa80016e7,0xc10000e1,0xe8ffffed,0x04e038e4,0xc10000e9,0x108e3a04,0xa80015e1,0x120e3840, +0x10855509,0x122eb841,0xe8ffffed,0x04803ae4,0x10851408,0x840014e1,0xd2ffffbf,0x10924941, +0x1081c940,0x9000891d,0x10924751,0xc2bb2ce0,0xc1000019,0xc30001e1,0x00000000,0x8401f809, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924935,0x1081c97c, +0x9000891c,0x9000c905,0x1081c734,0xc1005025,0x00900724,0x00924725,0x00000000,0x9000c05c, +0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece8,0xc1ffe8e4, +0xc1ffe4e1,0x00000000,0x034547e8,0x034507e5,0x00000000,0x034ec7e2,0x00160201,0x00158500, +0x00000000,0x0015c301,0xc2bb2ce8,0xc2bb2ce1,0xc2bb2ce4,0xc30001e0,0xc30001e9,0xd1fff7b0, +0xc30001e4,0x90003a11,0x00000000,0x90007915,0x00108300,0x8401f8ed,0xd1fff7f8,0x00109503, +0xd1fff828,0x00109403,0xd1ffb770,0x109e0950,0xc10006e5,0xc2bac808,0x900038e4,0x0010d601, +0xc3000108,0x00111700,0x00115801,0xc1000019,0x1091c77d,0x1091c735,0x00000000,0xb800c704, +0xb8010062,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x00000000,0xb8008058, +0xb800871d,0x07000100,0x00000000,0x1082477d,0x10824935,0x00100901,0x1092497d,0x10924915, +0x1081c97c,0x9000891c,0x9000c905,0x1081c714,0xc1003c25,0x00900724,0x00924725,0x00000000, +0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece0,0x00158401,0x00000000, +0x034507e3,0x0015c300,0x00000000,0x00154501,0xd1ffec07,0xd1ffec70,0x00109503,0xd1ffecec, +0x00109403,0xc2b674e4,0x109e0951,0xc30001e4,0x00111500,0x0010d701,0x00115600,0xb8003909, +0xd1ffb679,0xc10006e5,0x00000000,0x900038e5,0xc1000019,0x1091c77d,0x1091c715,0x00000000, +0xb800c704,0xb800871f,0x1082477c,0xb8004054,0xb8000051,0x00000000,0xb800c05c,0xb8008059, +0x07000101,0x10824915,0x00100901,0x10924941,0x1081c940,0x9000891c,0xc1003425,0x00924725, +0xc10000e8,0xc2e694e4,0xc2e694e1,0xc30001e4,0x840002e8,0xc30001e1,0xc2e694e4,0x900042e4, +0x108e3851,0xc30001e4,0x900082e0,0xc2e694e1,0x108e79a0,0xc30001e0,0xc2e694e9,0x108e38f0, +0x9000c2e4,0xc30001e9,0xc10078e0,0x900102e0,0xc2e694e5,0xc30001e4,0x008ebae0,0xc10064e1, +0xc2e694e4,0x900142e8,0x008e39e1,0xc30001e4,0x900182e0,0xc1008ce1,0xc10098e0,0x008e79e0, +0xc1000029,0x008fc2e0,0x9001c2e4,0x108f8281,0x00000000,0x160e0a52,0xc10000e8,0x008f7fe0, +0x008f3ee1,0x108e3a04,0x120e7a08,0xc10000e9,0x120e3840,0x008e7ce4,0x008efde5,0x122eb840, +0x90003be8,0xc10000e1,0xe8ffffdc,0x900039e1,0x14803a19,0x108e0a05,0x120e3841,0x1222b841, +0xe8ffffb1,0x14800a19,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0x9000c905,0x10900760,0x10924761,0x00000000,0x90000050,0x90004055, +0x00154300,0x00150401,0xd100020b,0xd100003d,0x00111400,0x0010d500,0x00109502,0xc1000019, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000,0xb8004054,0xb8000051, +0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1004025, +0x00900724,0x00924725,0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061, +0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0x00160300,0x00168401,0x00000000, +0xa80004e0,0xb801c455,0xc24db4e5,0xc30001e4,0xc20900e1,0x0085b9e1,0xc10000e0,0xc1000050, +0x12267805,0xe8000060,0xc24db45d,0x04e03864,0xc300015d,0x120e1408,0xc24db4e4,0x120ed405, +0xc30001e4,0x032ef808,0x108e3b05,0x00000000,0x008ebbe5,0x00000000,0x00000000,0x008e56ee, +0x120e3804,0x84003aed,0x108e1404,0x032e3809,0x120e3841,0x12253841,0xe8ffffbd,0x04801464, +0x840039e1,0xc10084e4,0xc24db409,0xd1000520,0x109e0950,0xc3000109,0xc24db40c,0x00111900, +0x008e44e5,0xc300010c,0x900038e4,0x00115501,0xd10004fc,0xc100fce0,0x00109601,0x109e0950, +0x008e5ae0,0x00111901,0x0010d600,0x900038e4,0x00115501,0xc10000e1,0xe8000051,0x04e03864, +0xc1000051,0x120f1404,0x120e5408,0x108e1405,0x108e7c04,0x032ed7f0,0x008e98e5,0x120e7905, +0x008e58e6,0x00000000,0x84003aed,0x00000000,0x032e16f1,0x120e3841,0x12253841,0xe8ffffc9, +0x04801464,0x840039e1,0x1091c741,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb8004055, +0x00000000,0xb8014064,0xb8018069,0x00000000,0xb8000050,0xb8010061,0x00000000,0xb800c05c, +0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940, +0x9000c904,0xc1005025,0x00900724,0x00924725,0x00000000,0x9001c06c,0x90020071,0x00000000, +0x90014064,0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0x00160200,0x00164300,0x00168401,0xc24db4f8,0xa80004e4,0xc24db4f1, +0xc24db4e8,0xc10000e0,0xc24db459,0xc30001f8,0xc20900f4,0xc30001f1,0xc21200ec,0x00000000, +0xc30001e9,0xe9000074,0xc21b00e4,0x1225f905,0xc3000158,0x00873cec,0x00857ef5,0x04e0385c, +0xc1000050,0x0086fae5,0xc10000f0,0x001ed500,0xc10002e9,0xc20900e0,0x032e7c08,0x10851405, +0x00000000,0x00000000,0x009e3be3,0x00000000,0x840038e5,0x00000000,0x00000000,0x032e3a0a, +0x108f3c11,0xe8ffffd0,0x108eba11,0x0480145c,0x108efb08,0x84003be1,0x00000000,0xb8004415, +0xd10004ac,0x109e0950,0x108e4481,0xc24db408,0x00111700,0xc24db40d,0xc300010c,0x900038e4, +0xc3000109,0x00000000,0xb8005a15,0xd1000480,0x109e0950,0x108e5ad1,0xc24db408,0x00111700, +0xc24db40d,0xc300010c,0x900038e4,0xc3000109,0x00000000,0xb8005a15,0xd1000454,0xc10098e1, +0x109e0950,0x008e5ae0,0x0010d501,0x00109500,0x900038e4,0x00111701,0x00000000,0xb8005a15, +0xd100042c,0xc100ace1,0x109e0950,0x008e5ae0,0x0010d501,0x00109500,0x900038e4,0x00111701, +0x00000000,0xb800da15,0xd1000404,0x109e0950,0xc10048e5,0xc24db408,0x0010dc00,0x008e5ae5, +0xc3000108,0x900038e4,0x00111701,0x00000000,0xb8011a15,0xd10003d8,0x109e0950,0xc1005ce5, +0xc24db408,0x0010db00,0x008e5ae5,0xc3000108,0x900038e4,0x00111701,0xc10000e1,0xe8000055, +0x04e0385c,0xc1000051,0xc24db4e8,0xc10000ed,0xc30001e9,0x001eba01,0x00000000,0x032e1bec, +0x032e5cef,0x00000001,0x122e7908,0x122e3805,0x10851404,0x008e39e1,0xe8ffffe0,0x108efb08, +0x192e3801,0x0480145c,0x108eba08,0x84003ae1,0x00000000,0xb800da15,0xd1000354,0xc100c0e1, +0x109e0950,0x008e5ae0,0x0010dc01,0x00109500,0x900038e4,0x00111701,0x00000000,0xb8011a15, +0xd100032c,0xc100d4e1,0x109e0950,0x008e5ae0,0x0010db01,0x00109500,0x900038e4,0x00111701, +0xc10000e1,0xe800004d,0x04e0385c,0xc1000051,0xc10000ec,0x001e9501,0x00000000,0x032e1bec, +0x032e5cef,0x00000001,0x122e7908,0x122e3805,0x10851404,0x008e39e1,0xe8ffffe0,0x108efb08, +0x192e3801,0x0480145c,0x108eba08,0x84003ae1,0x109e0950,0xb8015a15,0xd10002b4,0xc10070e4, +0xc24db40d,0xc300010c,0xc24db408,0x008e5ae5,0xc3000108,0x900038e4,0x00111701,0x00000000, +0xb8015a15,0xd1000288,0xc100e8e1,0x109e0950,0x008e5ae0,0x0010d501,0x00109500,0x900038e4, +0x00111701,0xc10000e1,0xe8000095,0x04e0385c,0xc1000051,0xc10002f1,0xc10000f8,0x108ed908, +0xc10000f5,0x00000000,0x032e18f0,0x032e98f5,0x00000000,0x032e16fb,0x009e7ae1,0x122eb908, +0x008e3ae1,0xc27fffe0,0x008e78e9,0x109e3b08,0x093e78e5,0x00000000,0x840038e5,0x00000000, +0x032e15f8,0x032e58f3,0x00000001,0xc27fffe0,0x008e79e0,0x108f7d11,0x10851404,0x009e79e8, +0x108fbe09,0xe8ffffa0,0x108f3c10,0x093e38e5,0x0480145c,0x108efb10,0x84003be1,0x1091c740, +0xb8004055,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb8000050,0xb8010061,0x00000000, +0xb800c05c,0xb8018069,0x00000000,0xb801c06c,0xb8020071,0x00000000,0xb8014064,0xb800871d, +0x07000101,0x10824741,0x00100901,0x1092497d,0x10924915,0x1081c97c,0x9000891c,0xc1006c25, +0x1081c715,0x00924725,0xc1ffece1,0x00000000,0x0344c7e3,0x00000001,0xc10000e0,0xb800c5f4, +0xb80105ed,0xc10000f0,0xb8000548,0xb8004545,0xc10000e8,0xb8008540,0xb80013ed,0xeb0000ec, +0xb8005334,0xb800d3f1,0x0093fcf4,0xb80113e4,0xa8000231,0x0093baed,0xc100002d,0x04e03811, +0xc1000028,0xc10002fc,0xc10004f9,0x00000000,0x20fe3c44,0x20fe4c49,0x00000000,0x21cebb3c, +0x20fe7941,0x008e39e0,0x20fefc40,0x21ce4d39,0x008e38e4,0x21cf7b38,0x20fe8c45,0x009e38e9, +0xc27fffe0,0x009378e5,0x122e4d34,0x21ce4d3c,0x1082cb09,0x008e0a0c,0x00000000,0x093f38e5, +0x00000000,0x840038f1,0x00000000,0x032f3f0b,0x00000001,0x00000000,0x20fe3c4a,0x008e38e9, +0x008e38ed,0x009e38e5,0x009ef8f5,0xc27fffe0,0x122e7b35,0x008e3f0c,0x093e78e5,0x00000000, +0x840038e5,0x00000000,0x00000000,0x03233e09,0x10828a11,0xe8ffff58,0x001e4c00,0x108fff11, +0x04800b10,0x108fbe11,0x00000000,0x900013ed,0x00000000,0x90005335,0x00000000,0x90009331, +0x00000000,0x9000d3f1,0xc1000018,0x900113e5,0x1091c77d,0x1091c715,0x00000000,0xb800871d, +0x07000101,0x1082477d,0x10824915,0x1092497d,0x10924915,0x1081c97c,0x9000891c,0xc1006425, +0x1081c715,0x00924725,0xc1ffece1,0x00000000,0x034447e3,0x00000001,0x00000000,0xb800c5f0, +0xb80105e9,0xc10000e0,0xb8000540,0xb800853d,0xc10000ec,0xb80011e8,0xb8005131,0xc10000e4, +0xb800d1ec,0xb80111e5,0x0093bbf0,0xa800022d,0x009379e9,0xe80000c9,0x04e03810,0x00000000, +0xc1000029,0xc10000fc,0xc10002f8,0xc10004f5,0x00000000,0x20fe393c,0x20fe4b41,0x00000000, +0x21ce4c34,0x21ceba39,0x008e39e0,0x21cf3a34,0x20febb3d,0x009e38e9,0xc27fffe0,0x009338e5, +0x122e4c34,0x21ce4c38,0x10828a09,0x008e3f0c,0x00000000,0x093ef8e5,0x00000000,0x840038ed, +0x00000000,0x032efe0b,0x00000001,0x00000000,0x20fe3b42,0x008e38e9,0x009e38e5,0x009eb8f1, +0xc27fffe0,0x122e7a35,0x008e3e0c,0x093e78e5,0x00000000,0x840038e5,0x00000000,0x00000000, +0x0322fd09,0x108fff11,0xe8ffff68,0x001e4b00,0x108fbe11,0x04800a10,0x108f7d11,0x00000000, +0x900011e9,0x00000000,0x90005131,0x00000000,0x9000912d,0x00000000,0x9000d1ed,0xc1000018, +0x900111e5,0x1091c77d,0x1091c715,0x00000000,0xb800871d,0x07000101,0x1082477d,0x10824915, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725, +0xc2b3c8e4,0xc2b3c8ed,0xc10000e0,0xc10000e8,0xc30001e5,0xc30001ec,0x840139e1,0xd1fff550, +0xc10000e0,0xc2b3c8e5,0xc30001e4,0x90003be8,0xc2b3d409,0xc3000108,0x900079e1,0xd1ffa9dd, +0xc2b4e409,0xc3000109,0xd1ffaacd,0xc2b4e409,0xc100060c,0xc3000109,0xc1000019,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0xe8000011,0x14000201, +0xe8000029,0x14100301,0xc1000119,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0xe8000011,0x14c00401,0xd2ffffde,0xc1000119,0xc2b3c8e4,0xc2b3c8e0, +0xc2b3c8ed,0xc30001e4,0xc30001e0,0xc2e694e9,0xc30001ec,0x90003908,0xc30001e9,0xc1008ce4, +0x9000780c,0xc2b3d4e1,0xc30001e0,0x84013b10,0x008e7ae5,0xc2b3d4e0,0x9001f8e4,0xc10006e5, +0xd1ffaa78,0xc30001e1,0x109e0950,0x84003810,0xc2b4e409,0xc3000108,0x900038e4,0xc1000115, +0xd2ffff6e,0xc1000019,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002c25, +0x00900724,0x00924725,0xc2b3c8e0,0xc2b3c8ec,0xc2b3c8e5,0xc30001e0,0xc30001ec,0xc30001e5, +0x00000000,0xa80138e4,0xb8003bf9,0x00000000,0xb80079ef,0xc2b3c8f4,0x00000000,0x109e3905, +0xe800004c,0xc30001f4,0x120e3841,0x14003900,0x108f3d10,0x122eb841,0x00000000,0xa8003eea, +0x109e3a04,0x001e7a01,0x108fbe08,0x00000000,0x120e3841,0xe8ffffe4,0x122eb840,0x122e3a05, +0x14103900,0x108efb08,0x84003be1,0x00000000,0xb8003c0a,0xd1fff489,0xc2b3d411,0xc3000110, +0x0010c201,0xd1ffaa45,0xc2b4e409,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905, +0x10900760,0x10924761,0xe8000011,0x14000201,0xe8000029,0x14100301,0xc1000119,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xc2b3c8e4,0xc2b3c8e1, +0xd1ffa81c,0xc30001e5,0xc2b4e408,0x90003908,0xc30001e1,0xc3000108,0x9000780d,0xd2ffffc2, +0xc1000019,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900760,0x10924761,0x001e0201, +0xe8000029,0x14c00201,0xc1000119,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0xc2b3c8e4,0xc2b3d4e0,0x0010f801,0xc30001e4,0xc30001e1,0xd1ffa7dc, +0x84013909,0xc2b4e408,0x84003809,0xc3000109,0xd2ffffbe,0xc1000019,0x10924941,0x1081c940, +0x9000891c,0xc100ec25,0x00900724,0x00924725,0x00000000,0x9008c0d8,0x900900dd,0x00000000, +0x900840d0,0x900880d5,0x00000000,0x9007c0c8,0x900800cd,0x00000000,0x900740c0,0x900780c5, +0x00000000,0x9006c0b8,0x900700bd,0x00000000,0x900640b0,0x900680b5,0x00000000,0x9005c0a8, +0x900600ad,0x00000000,0x900540a0,0x900580a5,0x00000000,0x9004c098,0x9005009d,0x00000000, +0x90044090,0x90048095,0x00000000,0x9003c088,0x9004008d,0x00000000,0x90034080,0x90038085, +0x00000000,0x9002c078,0x9003007d,0x00000000,0x90024070,0x90028075,0x00000000,0x9001c068, +0x9002006d,0x00000000,0x90014060,0x90018065,0x00000000,0x9000c058,0x9001005d,0x00000000, +0x90004050,0x90008055,0x00000000,0xb80085e3,0x00000001,0x00000000,0x900000e1,0x00000000, +0xa80002e8,0xa80042e5,0x00000000,0xb801c588,0xb8030585,0xc10000e0,0xb80105a4,0xb80245ed, +0xc1000094,0xb8038529,0x008e7ae5,0xe80006f1,0x04e03810,0x00000000,0x12283905,0x00000000, +0xb805458c,0xb805857d,0x00000000,0xb805c578,0xb8064575,0x00000000,0xb8068570,0xb806c56d, +0x00000000,0xb8004568,0xb8018565,0x00000000,0xb802c560,0xb800c55d,0x00000000,0xb8020558, +0xb8034557,0x00000001,0x00000000,0xa80029f5,0x00000000,0xa8000ae9,0xc26000e8,0xc13800f1, +0xc26000e0,0x00000000,0xc13800e5,0xc130002c,0x20f3fde8,0x20f4bdf1,0xc13800f8,0x20f43ae0, +0x20f3bae5,0xc26000f4,0xa8003bfc,0xa80e8535,0xc13000e8,0xa80f05f8,0xa80ec5f5,0xc13000e0, +0x10832908,0xc24000e5,0xc24000f1,0x108fca08,0x20f4fff4,0x20ffbff9,0xc10000e0,0x20febee0, +0x20ff4d2d,0xc2400044,0x20fe7de9,0x00950ee8,0x20feb934,0x009912f5,0x120e5404,0x00000000, +0x009fbee5,0x120ebe04,0x008f4fe8,0x008e7991,0x009378e4,0x840029f4,0x0083ba91,0x1082fb08, +0xa80f05f4,0x120aa505,0x1204a508,0x008e3e50,0x1083ea05,0x120eb804,0x008e24f8,0x008e6451, +0x120e7904,0x00000000,0x120e3805,0x009f7ee4,0x20febcf4,0x009e64e9,0xc25555e0,0x00000000, +0x009f94e1,0xc27fffe4,0x20ff39e0,0x008e10e9,0xc25555e0,0x84000ae0,0xc27fffe9,0x093f79f0, +0x20ff3de0,0xa80ec5f9,0xc25555e4,0x00000000,0xc27fffe1,0x120f0f04,0x20fe7ee4,0x093ebaf1, +0x00841209,0x008ba0f4,0x20fe51f8,0x093e38e5,0xc27fff44,0x00000000,0x008b60e9,0xc27fff3c, +0x008e53e4,0x0082bc09,0x108f6208,0x84003be4,0x008b20e1,0x108fa108,0xa800454c,0x03249209, +0x01cf3d7c,0xa8000538,0x03237c09,0x01ce4b70,0x01cefe78,0x01ce8c75,0x01ce3f6d,0x09ba3c64, +0x20c38d4c,0x20c48e4d,0x09c9fcf4,0x20cf0d38,0x20c35239,0x008f689d,0x10834d04,0x108f3c04, +0x09b9bb61,0x09c93bf8,0x008f0d48,0x008efc39,0x122fbc04,0x122efb04,0x008f2691,0x09bafa5c, +0x093f91f8,0x093ecfed,0x09b4f958,0x840010f8,0x09c53a31,0x09c4b92c,0x84000aec,0x008eeb51, +0x008e9348,0xb80000e0,0xa80f85fd,0x09b47854,0xa80022f8,0xa80fc5e1,0x09c438fc,0xa80021f8, +0xa81005e1,0x008e5141,0x00000000,0xa80038e1,0x008c3ee0,0xa80285e1,0x00000000,0x00000000, +0x008bfee2,0x008cb8fd,0x00000000,0x20be38ca,0x00000000,0x840e85e1,0x00000000,0xa80505e1, +0x00000000,0x00000000,0x0083eb51,0x00000000,0x00000000,0x00839141,0x00835349,0x00000000, +0x20be38c2,0x00000000,0x840ec5e1,0x00000000,0xa80785e1,0x108cfb09,0x108c7908,0x0083289c, +0x108a7a09,0x108f7d08,0x00000000,0x108f3c09,0x01cefd7c,0x20be38bc,0x0082e691,0x01ce7374, +0x00000000,0x01cebc79,0x01c2b16c,0x840f05e0,0x01ce2971,0x09cfbbf4,0xa802c5e0,0x09bffb65, +0x09bef95c,0x09bf7a60,0x09cf3af1,0x09ce38a4,0x09ceb9cc,0x09be7859,0x008ef9e0,0x00000000, +0x008a7be9,0x09ce0ac4,0x20fe32e0,0x09be4a55,0x00000000,0x00000000,0x0082b9e1,0x00000000, +0x840f85e1,0x00000000,0xa80545e3,0x00000001,0x00000000,0x20fe30e2,0x00000000,0x840fc5e1, +0x00000000,0xa807c5e3,0x00000001,0xc10080e0,0x20fe6fe1,0x008e05e1,0x122b6e10,0x840038e4, +0x122dad11,0x122eac10,0xb80000e0,0x108e2a09,0x120c7804,0x108e2a0c,0xc13800d1,0xc26000cc, +0xc26000bc,0x120c3805,0xc13800c8,0x00000000,0xc26000e5,0xc13800d4,0x840038b4,0xc13000b5, +0xc13000b8,0xb80000e0,0xc24000b1,0xc13000f8,0x840022d8,0x0088bff9,0xc24000f4,0x840021e8, +0x00887df1,0xc10000f0,0x03243108,0xc25555e9,0x108ff808,0x032ff008,0x032e2b51,0x01ce3f8c, +0x032e1348,0x032fd141,0x09c478fc,0x00000000,0x09b4b869,0x0084d245,0x008cd0fc,0x20fbf8cc, +0x20fcb8d1,0xc2555540,0x20fd3fbc,0x20fd7fc9,0x108e5308,0x20f538e4,0x20faf8d5,0x008fd244, +0xa80e85dc,0xa80f05e5,0xc27fff4c,0xa80ec5e4,0x01ce398d,0xc27fffd8,0x09be7868,0x09ce38e5, +0x008e39e1,0xc27fffb4,0x20ffb9b4,0x20fbb7b9,0xc25555e4,0x20ffb9f9,0x009bb5f8,0x20faecdc, +0x009b32b9,0x120fae04,0x00000000,0x009cabf9,0x120af204,0x008befac,0x008fbeb1,0x009fbcf8, +0x84000fbc,0x0083ebb1,0x008f2cb8,0xa80f05e8,0x008af2b9,0x120beb04,0x120afc04,0x008f2cc9, +0x120b3c04,0x009f32ac,0x009aecbd,0x00942eb0,0x20febc40,0x20ff2be9,0x122af304,0x20ff3de9, +0x093eade8,0x20fe50e4,0x093e53f1,0x008f2be4,0x00000000,0x008f74f1,0x00000000,0x84000ef4, +0x093e76e5,0x008e6be4,0xa80ec538,0x008eabeb,0xc24000f5,0x00000000,0x20ff7d3a,0x008f54f5, +0x00000000,0x84000df5,0x00000000,0xa80045f4,0x03237109,0x00000000,0xa80005f8,0x032f700b, +0x00000000,0x20c37ef4,0x20c38ff5,0x00000000,0x20cf7df8,0x20cf8dfa,0x108fbe04,0x108f7d05, +0xc27fff34,0x008fbe38,0x008f7d35,0xc27ffff4,0x122fbd04,0x1223be05,0x008f7108,0x09334d38, +0x093fbdf9,0x008f7008,0x84003d35,0x00000000,0x84003df9,0x00000000,0xa80f85f4,0x032f9245, +0x00000000,0xa80fc5f4,0x032fa89d,0x00000000,0xa81005f4,0x032fa691,0x00000000,0xa80285f5, +0x0083bef5,0x00837ef5,0x008fbef5,0x00000000,0x20bf7d3a,0x00000000,0x840e85f5,0x00000000, +0xa80505f7,0x00000001,0x00000000,0x20bf7d36,0x00000000,0x840ec5f5,0x00000000,0xa80785f7, +0x00000001,0x00000000,0x20bf7dfa,0x00000000,0x840f05f5,0x00000000,0xa802c5f7,0x00000001, +0x00000000,0x20ff4ef6,0x00000000,0x840f85f5,0x00000000,0xa80545f7,0x00000001,0x00000000, +0x20ff4df6,0x00000000,0x840fc5f5,0x00000000,0xa807c5f7,0x00000001,0xc10080f4,0x20ffbef5, +0x008f45f5,0x122f3c10,0x84003df9,0x122eba10,0x84003ff1,0x122e7910,0x84000ce9,0x108eaa10, +0x84000be4,0x108e6a15,0x120e7a04,0x900000e0,0x120e3905,0x00000000,0x032e7908,0x032e3809, +0x108e2509,0x120e3841,0x12297841,0xe8fff97c,0x008e39e1,0x04802510,0x12283805,0x00000000, +0xb80000e3,0x00000001,0x00000000,0x900085e1,0x00000000,0x9001c589,0x00000000,0x90030585, +0x00000000,0x900105a5,0x00000000,0x900245ed,0x00000000,0x90038529,0x00000000,0xb8008055, +0x00000000,0xb8004050,0xb801005d,0x00000000,0xb800c058,0xb8018065,0x00000000,0xb8014060, +0xb802006d,0x00000000,0xb801c068,0xb8028075,0x00000000,0xb8024070,0xb803007d,0x00000000, +0xb802c078,0xb8038085,0x00000000,0xb8034080,0xb804008d,0x00000000,0xb803c088,0xb8048095, +0x00000000,0xb8044090,0xb805009d,0x00000000,0xb804c098,0xb80580a5,0x00000000,0xb80540a0, +0xb80600ad,0x00000000,0xb805c0a8,0xb80680b5,0x00000000,0xb80640b0,0xb80700bd,0x00000000, +0xb806c0b8,0xb80780c5,0x00000000,0xb80740c0,0xb80800cd,0x00000000,0xb807c0c8,0xb80880d5, +0x1091c740,0xb808c0d8,0xb80900dd,0x00000000,0xb80840d0,0xb800871d,0x07000101,0x10824741, +0x00100901,0x10924941,0x1081c940,0x9000891c,0xc1004c25,0x00924725,0x00000000,0x1602c430, +0x1603430e,0xc24db4e0,0x008e8b34,0xc2e734e5,0xc30001e0,0x12033a08,0xc252e0e9,0xc24db4e0, +0x008438e8,0x10838211,0xc30001e4,0x001f4e00,0xc30001e1,0xc100003c,0x008f0ce4,0xc10000fd, +0x00000000,0x90003de1,0x00000000,0xb8003cef,0xc10000e5,0xe8000031,0x04e039ec,0xc10000f9, +0x00000000,0x034e8eff,0x00000001,0x108fbe04,0xc10000e5,0xe8fffff8,0x84003ae5,0x04803eec, +0x108eba09,0x00000000,0x034e4eff,0x00000001,0x00000000,0x90007de5,0x00000000,0xb8003ce7, +0x1083cf04,0x00000000,0x108fff51,0xe8ffff94,0x108f7d50,0x120e7905,0x14800f0c,0x108f3c10, +0x008e38e5,0x00000000,0x160fc40e,0xc2e734e0,0xc10008f0,0x108e7fb1,0xc30001e0,0x1202b909, +0xc100003c,0x008ecae0,0x001f4e01,0x00000000,0x9000bd41,0x00000000,0xb8003beb,0xc10000e1, +0xe8000031,0x04e038e8,0xc10000f9,0x00000000,0x034e7c3b,0x00000001,0x108fbe04,0xc10000e1, +0xe8fffff8,0x840039e1,0x04803ee8,0x108e7909,0x00000000,0x034e3c3b,0x00000001,0x00000000, +0x9000fde1,0x00000000,0xb8003be3,0x1083cf04,0x00000000,0x108f3c51,0xe8ffff94,0x108f7d50, +0x120e3805,0x14800f0c,0x108efb10,0x008410e1,0x108e4330,0xc2e734e0,0x108f4341,0x120e7908, +0xc30001e0,0xc2e734f1,0x00000000,0x034fb9e1,0x108e8b50,0x108e0b80,0xc2e734e5,0xc30001f0, +0x008efa34,0x008eb835,0x120f7d08,0x00000000,0xc2e734e1,0x120eba08,0x840002f8,0x120efb09, +0xc30001e0,0x034e3df0,0xc30001e5,0x008e7ae0,0x008ebbe7,0x001ece00,0x840042e0,0xc100003d, +0x00000000,0xb8003ae3,0x00000001,0x00000000,0x84023be1,0x00000000,0x00000000,0xb80039e2, +0x1083cf04,0x108eba11,0xe8ffffd8,0x108e7911,0x14800f0c,0x108efb50,0x84027be1,0xc1007ce0, +0xc10000f9,0x008e82e1,0xc10000e4,0x109e3a20,0x108fbe05,0xe8fffff4,0xc10000e0,0x840038e5, +0x14803e10,0x108eba08,0x84003ae1,0xc2e734e4,0x00000000,0x108e0d05,0xc30001e4,0xc2e734ec, +0x008f382d,0x00000000,0x034e0ce5,0x108e0d08,0x00000000,0xc2e734e5,0x008eb82c,0xb80042fa, +0x109f7804,0xc2e734e1,0x120f7d04,0x00000000,0xc30001e1,0x00000000,0x008f7ef5,0xc30001ec, +0x900542f4,0x120f3c09,0x00000000,0x00000000,0x034efcee,0x00000000,0xb80182f2,0x109efb05, +0x120efb05,0x008efced,0xc30001e4,0x900582ec,0x120eba09,0x00000000,0x00000000,0x034e7ae6, +0x00000000,0xb802c2ea,0x109e7905,0x120e7905,0xc2e734e4,0x008ebae5,0xc30001e4,0x9005c2e9, +0x00000000,0x00000000,0x034e4ae6,0x00000000,0xb800c2ea,0x109e7905,0x120e7905,0x108e7fb4, +0x008ebae5,0x120e7908,0x900642e9,0x00000000,0x00000000,0x034e39e2,0x00000000,0xb80202e6, +0x109e3805,0x120e3805,0xc2e734e0,0x008eb9e0,0x108e7fb9,0xc30001e0,0x900682e8,0x120e7909, +0x00000000,0x00000000,0x034e39e2,0x00000000,0xb80342e6,0x109e3805,0x120e3805,0x008e39e1, +0x00000000,0x9006c2e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0xc2b510e4, +0xc2b504e0,0xc2b504e9,0xc30001e4,0xc30001e0,0xc30001e9,0xc10000e0,0x900039e0,0xc2b504e5, +0xc30001e4,0x90003ae0,0xc10000e1,0xc2b504e4,0x900079e0,0xc1ffffe1,0xc30001e4,0xc2b504ec, +0xc1ffffe9,0xc30001ec,0x840139e0,0xc2b5b8e5,0xd1ff9988,0xc2b598e0,0xc30001e5,0xc30001e0, +0x84017be8,0xc2b59809,0xc3000108,0x900039e1,0xc2b5b8e0,0xc100060d,0xc30001e1,0x00000000, +0xb8003809,0xd1ff9a53,0xc2b5bce4,0xc1000019,0xc10001e0,0xc30001e5,0x00000000,0x840039e1, +0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941, +0x1081c940,0x9000891c,0x9000c905,0x10900760,0x10924761,0xc2b510e4,0xc2b5b8e1,0xc30001e4, +0xc30001e1,0x00000000,0xb80039e7,0x00000001,0x00000000,0x90003909,0x00000000,0x9000790d, +0x00000000,0xb8003809,0xd1ff9957,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900770, +0x10924771,0x001e8201,0xc2b510e1,0xc30001e1,0x00000000,0xb80038e7,0x00000001,0x00000000, +0xa80139e3,0x00000001,0xe8000011,0x04003809,0x00000000,0x84013909,0xc2b5b8e0,0x0010fa01, +0xc30001e1,0x00000000,0xb8003809,0xd1ff990f,0xc1000019,0x1091c741,0x00000000,0xb800c704, +0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924761, +0xc2b510e1,0xc30001e1,0x00000000,0xb80038e7,0x00000001,0x00000000,0xa80179e3,0x00000001, +0xe8000021,0x04003809,0xc2b5bce4,0x84017908,0xc10001e1,0xc30001e5,0x00000000,0x840039e1, +0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x00000000, +0x9000891d,0x1081c940,0x9000c904,0xc1002425,0x00900724,0x00924725,0x00000000,0x90004054, +0x90008059,0x00000000,0x90000051,0x00158300,0x00154400,0x00150501,0xd1fffe67,0xd1fffed0, +0x00109503,0xd1ffff4c,0x00109403,0xc2b5b8e4,0x109e0951,0xc30001e4,0x00111500,0x0010d601, +0x00000000,0xb8003909,0xd1ff98d1,0xc10006e5,0xc1000114,0x900038e5,0xc1000019,0x1091c741, +0x00000000,0xb800c704,0xb800805b,0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d, +0x07000101,0x10824741,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002825,0x00900724,0x00924725,0xc2b510e1,0xc30001e1,0x00000000,0xb80038e7,0x00000001, +0x00000000,0xa80139e3,0x00000001,0xe8000029,0x14c03801,0xc1ffff19,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0xc2b5bce1,0xc30001e1,0x00000000, +0xa80038e3,0x00000001,0xe8000039,0x14003801,0x00000000,0xa801790d,0xd1fff8cd,0xc2b51409, +0xc1000010,0x00000000,0xc3000109,0xc2b5bce4,0xc10000e1,0xc30001e5,0x00000000,0x840039e1, +0xc2b510e1,0xc30001e1,0x00000000,0xb80038f7,0x00000001,0x00000000,0xa8017de7,0xc10000e1, +0xe8000071,0x041038e5,0x00000000,0xa8013de7,0xc10000e1,0xe8000055,0x04e038e4,0xc10000f1, +0x00000000,0xb8003dec,0xb8007deb,0x00000001,0x120e3c05,0x00000000,0x032e7be0,0x008e3ae3, +0x00000001,0x00000000,0x840038e5,0x00000000,0xa8013de1,0x108e3c05,0x120e3841,0x122f3841, +0xe8ffffd1,0x04803ce1,0xd2ffff12,0xc1000019,0x00000000,0xa8013de4,0xb8003dee,0x00000000, +0x00000000,0xb8007de9,0xc10000e1,0xe8000039,0x04e038e4,0xc10000f1,0x00000000,0xa8003be1, +0x108e3c05,0x120e3841,0x122f3841,0xe8ffffec,0x108efb08,0x122e3805,0x04803ce4,0x108eba08, +0x84003ae1,0xc2b510e0,0xc2b51415,0xc30001e0,0xc3000115,0x00000000,0xb80038e3,0x00000001, +0x00000000,0xa80138e0,0xb800780b,0x00000001,0xd1ffee48,0x122e3805,0x120e3841,0x0010c200, +0x12213841,0xc2b5b8e0,0xc100060d,0xc30001e1,0x00000000,0xb8003809,0xd1ff961f,0xc2b5b8e1, +0xc30001e1,0x00000000,0xb8003809,0xd1ff973f,0xd2ffff3b,0x10924941,0x00000000,0x9000891d, +0x1081c940,0x9000c904,0xc1003025,0x00900724,0x00924725,0xc2b67ce8,0xc10000e0,0xc2b67ced, +0xc30001e8,0xc30001ec,0xc10000e5,0xc2b67ce8,0x90003ae0,0xc1ffffe1,0xc30001e8,0x90007be4, +0xc2b67ce5,0xc30001e4,0x84013ae0,0xc1ffffe1,0xc2b67cec,0x840179e0,0xc1ffffe9,0xc30001ec, +0xc2b67ce4,0xc10000e1,0xc30001e4,0x8401fbe8,0xc10000fd,0x00000000,0x8401b9e1,0x108e7f40, +0xc2c0f0e0,0xc2c0f0e9,0x120e7908,0xc30001e0,0xc10000f5,0x120f3f08,0x008fb9e0,0xc30001e9, +0x108e7f20,0xc2c0f0ec,0x108e3f05,0xc10000f4,0x90003ef4,0x008fbce9,0x120f3908,0xc30001ec, +0x108ebf61,0xc2c0f0e4,0x90003ef4,0x120e3841,0xc10000ec,0x008f3cec,0x120eba09,0xc30001e4, +0x90003cec,0x122ff841,0xe8ffff94,0xc10000e0,0x008e7ae5,0x14803f20,0x900039e1,0xd10009e7, +0xd1000c02,0xc1fff409,0xd1000ad2,0xc1000109,0xd10014f1,0xc2b69009,0xc3000109,0xd10015e1, +0xc2b69009,0xc100060c,0xc3000109,0xd100011a,0xc1000109,0xc1000019,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d, +0x1081c940,0x9000c904,0xc1002025,0x00900724,0x00924725,0x00000000,0x90000051,0x00150201, +0xc2b67ce0,0xc2b67ce9,0xc30001e0,0xc30001e9,0x00000000,0xa80138e3,0x00000001,0xe8000015, +0x04003808,0x108e7a21,0x00000000,0x84003909,0xd1000a87,0xd100150d,0xc2b69008,0x0010d401, +0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824741,0x00000000, +0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924771,0xc2b67ce0, +0xc2b67ce9,0xc30001e0,0xc30001e9,0x00000000,0xa80178e3,0x00000001,0xe8000015,0x04003808, +0x108e7a29,0x00000000,0x84003909,0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x10924941,0x1081c940,0x9000891d,0x10924751,0xe8000011,0x14800201,0xe8000021, +0x14a00219,0xc1ffff19,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0xd2ffffec, +0xc2b67ce1,0xc30001e1,0xc1000018,0x8401f809,0x10924941,0x1081c940,0x9000891c,0x9000c905, +0x10900770,0x10924771,0xc2b67ce0,0xc2b67ce9,0xc30001e0,0xc30001e9,0x00000000,0xa801b8e3, +0x00000001,0xe8000021,0x04003808,0x108e7a31,0x0010c200,0x84003908,0xc2b69009,0xd1001422, +0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102, +0x00100901,0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900760,0x10924761,0xc2b67ce4, +0xc2b67ce1,0xd100087c,0xc30001e5,0xc30001e0,0x90003909,0x00108300,0x9000780d,0xc2b67ce0, +0xc2b69009,0xc30001e0,0xc3000109,0x00000000,0xb800780d,0xd1001333,0xc1000019,0x1091c741, +0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x1081c940, +0x9000891d,0x10924771,0xc2b67ce0,0xc2b67ce9,0xc30001e0,0xc30001e9,0x00000000,0xa80238e3, +0x00000001,0xe8000025,0x04003808,0x108e7a41,0xe8000019,0x14800201,0xe8000011,0x14c00219, +0x00000000,0x84003909,0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x1092497d,0x10924945,0x1081c97c,0x9000891c,0x9000c905,0x1081c744,0xc1005425,0x00900724, +0x00924725,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000, +0x90000050,0x90004055,0xc1ffece8,0xc1ffe8e0,0xc1ffe4e5,0xc1ffe0e0,0x0345c7e8,0x034587e1, +0x00000000,0x034547e4,0x034507e2,0x00164401,0x00160501,0xd1fffeb3,0xd1fffcfc,0x00109903, +0xd1fffd8c,0x00109803,0xd1ffff10,0x00109503,0xe8000075,0x14001401,0xd1fffdcc,0x108e1711, +0x120e3841,0x1220b841,0xd1fffe08,0x00109603,0xc1000019,0x1091c77d,0x1091c745,0x00000000, +0xb800c704,0xb8010061,0x00000000,0xb8004055,0x00000000,0xb8000051,0x00000000,0xb800c05c, +0xb8008059,0x00000000,0xb800871c,0xb8014065,0x07000100,0x00000000,0x1082477d,0x10824945, +0x00100901,0xd1fffd60,0x00109703,0xd2ffff9f,0x10924941,0x1081c940,0x9000891d,0x10924741, +0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891d,0x10924771,0xc10000e1,0xe800004d,0x04e0380c,0xc10000e9,0xc10000e5,0x00000000, +0x032e390b,0x00000001,0xe8000021,0x14003801,0xc1000019,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x108eba05,0xe8ffffd1,0x04803a0c,0x108e7909,0xd2ffffde,0xc1000119, +0x1092497d,0x10924925,0x1081c97c,0x9000891c,0x9000c905,0x1081c724,0xc1006025,0x00900724, +0x00924725,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069,0x00000000, +0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece4, +0xc1ffe8e0,0x00170201,0x00000000,0x034607e4,0x0345c7e2,0x0016c300,0x00164501,0x00168401, +0xc2b67ce0,0xc2b67ce8,0xc2b67ced,0xc30001e0,0xc30001e8,0xc2b67ce5,0x00000000,0xa80138e0, +0xb8007aeb,0x00000001,0xe8000070,0xc30001ec,0xc30001e5,0x14c03800,0x1085bb10,0x10857921, +0xc1ffff19,0x1091c77d,0x1091c724,0xb8004055,0x00000000,0xb800c704,0xb8010061,0x00000000, +0xb8000050,0xb800c05d,0x00000000,0xb801c06c,0xb8020071,0x00000000,0xb8008058,0xb8018069, +0x1082477c,0xb8014064,0xb800871d,0x07000101,0x10824925,0x00100901,0xd1fffe80,0x0010ba00, +0x0010f803,0xc2b67ce1,0xc30001e1,0x00000000,0xa80178e3,0x00000001,0xe80000b1,0x14003800, +0x00150601,0xc2b67ce0,0xa800150c,0xb8001609,0xc30001e0,0xc2c0f0e5,0xc30001e4,0xa801f8e1, +0xc10040e1,0x008179e2,0x00000000,0x00000000,0x160e7815,0xd1001238,0xc2df50e1,0xc30001e0, +0x120e7909,0x008139e1,0xc2b67ce1,0xc30001e1,0x00000000,0xa80238eb,0x00000001,0xe800003d, +0x14a03a01,0xc10176e4,0xb8001608,0xc2df50e1,0x00000000,0xa800150c,0x008e7ae5,0xc30001e0, +0x120e7909,0x00000000,0x034e39e3,0xd10013c9,0x120e3841,0x12213841,0xd1001031,0xc2b69009, +0xc3000109,0xd100062b,0xe8000025,0x14001c01,0x00000000,0xa800150c,0xb8001609,0xd10011b0, +0xc2c0f015,0xc3000115,0x00111901,0xe8000029,0x14001b01,0x00000000,0xa800150c,0xb8001609, +0xd100118c,0xc2c0f0e1,0xc30001e0,0x00111801,0x10817881,0xe800002d,0x14001a01,0x00000000, +0xa800150c,0xb8001609,0xd1001164,0xc2c0f0e5,0xc10060e0,0xc30001e4,0x00111701,0x008179e1, +0xe800005d,0x14101405,0x00000000,0xa80015f3,0xc10000e1,0xe8000041,0x04e038f0,0xc10000e5, +0x00000000,0xb80016ef,0x00000001,0x108e3904,0x120eb904,0xc10000e5,0x120e3840,0x00000000, +0x008ebbe9,0x122e7840,0x84003ae5,0xe8ffffe1,0x048039f1,0xd2fffe12,0xc1000019,0xd2fffe0a, +0xc1000019,0x1092497d,0x10924925,0x1081c97c,0x9000891c,0xc1005025,0x1081c725,0x00924725, +0xc1ffece0,0xc1ffe8e5,0x00000000,0x034e07e0,0x0342c7e7,0x00000001,0x00000000,0xa80004fc, +0xa80002e9,0x00000000,0xa80042f9,0xc10000e4,0xc1000029,0xe80000b1,0x04e0390c,0x00000000, +0xc10000f1,0x009f782d,0x192e3a00,0x192efe00,0x108ebc09,0x00000000,0x01ee78ec,0x009e38ed, +0x00000000,0x060e39e2,0x00000000,0x00000000,0x008e38ed,0x00000000,0x009e78fd,0x11ce3901, +0x00000000,0x060e38f6,0x008e382d,0x00000000,0x20ee38e6,0x108e3805,0x108efc0c,0x122e3804, +0x120f3a05,0xc27fffe4,0x008ebfe0,0x120e3a41,0x120e7b04,0x032ebc08,0x093ff9e9,0x009e7f28, +0x032fb908,0x01cebf29,0x122f3840,0x00000000,0x060e3ae5,0xe8ffff75,0x04803c0c,0x00000000, +0x0082b829,0xc1003fe4,0x840004fc,0xc27fffe1,0x00000000,0x200e4ae6,0xc27fffe0,0x029ef9e0, +0x122e793d,0x108eb904,0x120e3904,0x009e78ed,0x120e3a04,0x032e3815,0x00000000,0x032e3817, +0x00000000,0x200e39e1,0x00000000,0x200e7be2,0x008e39e1,0x1201b805,0x1091c77d,0x1091c725, +0x00000000,0xb800871d,0x07000101,0x1082477d,0x10824925,0x1092497d,0x10924935,0x1081c97c, +0x9000891c,0xc1006425,0x1081c735,0x00924725,0xc1ffe8e4,0x00000000,0xc1ffe4e1,0xc1ffece4, +0x034387e5,0x00000000,0x0343c7e4,0x034347e3,0x00000001,0x00000000,0xb8000e30,0xa800022d, +0x00000000,0x00000000,0xa8004229,0xc10000e1,0xe80000ad,0x04e0380c,0xc10000fd,0x009ec430, +0x120e3f05,0x11ce3b00,0x008f3809,0x09beb814,0xc27fffe4,0x09ce383d,0x00000000,0x008e3ae1, +0x00000000,0x20fe3be2,0x00000000,0x00830ce1,0x00000000,0x21ee0d32,0x00000000,0x20be0ae0, +0x20be8be1,0xc27ffff5,0x108e3f04,0x108eb804,0x108efa05,0x108ebf08,0x122efa04,0x122fbb05, +0x120e3804,0x093e7df8,0x093ef9ed,0x108e3f0c,0x84003ce4,0x008e7809,0x120e3804,0x840039ec, +0x120e7a05,0x120e3a40,0x0322f908,0x0322b809,0x122ff841,0xe8ffff69,0x04803f0d,0xc1000018, +0x90000e31,0x1091c77d,0x1091c735,0x00000000,0xb800871d,0x07000101,0x1082477d,0x10824935, +0x10924941,0x1081c940,0x9000891c,0xc1002025,0x00924725,0xc2bb74e8,0xc10000e0,0xc2bb74ed, +0xc30001e8,0xc30001ec,0xc1ffffe5,0xc2bb74e8,0x90003ae0,0xc10000e1,0xc30001e8,0x8400bbe4, +0xc2bb74e5,0xc30001e4,0x8400fae0,0xc10000e1,0xc2bb74ec,0x840139e0,0xc10064e5,0xc30001ec, +0xc2bb74e8,0xc10000e1,0xc30001e8,0x84027be4,0xc2bb74e5,0xc30001e4,0x9000fae0,0xc10001e1, +0xc2bb74ec,0x840239e0,0xc10127e9,0xc30001ec,0xc2bb74e4,0xc1004ae1,0xc30001e4,0x8402fbe8, +0xc1000019,0x00000000,0x840339e1,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2bb74e0,0xc1000019,0xc30001e1,0x00000000, +0x90003809,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891d,0x10924771,0xc2bb74e0,0xc2bb74e9,0xc30001e0,0xc30001e9,0x00000000,0xa80138e3, +0x00000001,0xe8000025,0x04103808,0x108e7a21,0xc1000019,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0xd2ffffec,0x8400390a,0xc1000019,0x10924941,0x1081c940,0x9000891d, +0x10924771,0xe8000021,0x14c00201,0xc1ffff19,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0xc2bb74e0,0xc2bb74e9,0xc30001e0,0xc30001e9,0x00000000,0xa800b8e3,0x00000001, +0xe8000015,0x04103808,0x108e7a11,0xd2ffffc6,0xc1000019,0x00000000,0x84003909,0xc28000e0, +0xc10000e4,0x122e8205,0x00000000,0x00000000,0x009e38e9,0xe8fffff5,0x14e03800,0x108e7905, +0x109e7904,0xc27fffe1,0xe8000025,0x04a039e1,0xc2bb74e4,0xc27fffe1,0xc30001e5,0x00000000, +0x840379e1,0xd2ffff6e,0xc1000019,0xd2fffff8,0xc2bb74e1,0xc30001e1,0x00000000,0x840378e5, +0x10924941,0x1081c940,0x9000891d,0x10924771,0xc2bb74e0,0xc2bb74e9,0xc30001e0,0xc30001e9, +0x00000000,0xa80278e3,0x00000001,0xe8000025,0x04103808,0x108e7a49,0xc1000019,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0xe8000028,0x84003909,0x14800201,0xc2bb74e4, +0xc10000e1,0xc30001e5,0x00000000,0x8402b9e1,0xd2ffffce,0xc1000019,0xd2fffff8,0xc2bb74e1, +0xc30001e1,0x00000000,0x8402b809,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904, +0xc1002425,0x00900724,0x00924725,0xc2bb74e1,0xc30001e1,0x00000000,0xa80138e3,0x00000001, +0xe80000e5,0x14103805,0xc2bb74e0,0xc2bb74ec,0xc2bb74e9,0xc30001e0,0xc2bb74e4,0xc30001ed, +0xc30001e8,0xa80238f0,0xc30001e5,0x109ec950,0xa800ba0c,0xb8003b09,0xc2bb74e0,0xa8037910, +0xc2bbace5,0xc30001e0,0x00000000,0x109e8961,0xc30001e4,0x90003bf1,0x109e0970,0xa802b8e0, +0xc2bb9015,0x00000000,0x900038e7,0xd1000468,0x120e3841,0x122e3841,0xc3000114,0x90003ae1, +0xc2bb74e0,0xc2bb74ec,0xc2bb74e9,0xc2bb74e4,0xc30001e0,0xc30001ed,0xc30001e8,0xa80338ec, +0xc30001e5,0xc2bb74e0,0xa800ba0c,0xb8003b09,0xc30001e0,0xa802f914,0x109e8951,0x108e7830, +0x00000000,0x109e0961,0xd1000659,0x109e0970,0x900038e4,0xc27fffe5,0x00110600,0x90003aec, +0x900038e5,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742,0x07000102, +0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924741,0xc1000019,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924915,0x1081c97c,0x9000891c,0x9000c905, +0x1081c714,0xc1003825,0x00900724,0x00924725,0x00000000,0x90008058,0x9000c05d,0x00000000, +0x90000050,0x90004055,0xc1ffece0,0x00158401,0x00000000,0x034507e3,0x0015c300,0x00000000, +0x00154501,0xd1fffc5f,0xd1fffcec,0x00109703,0xd1fffdb0,0x00109503,0xd1ffff6c,0x00109603, +0xd1fffc78,0x00109403,0xc1000019,0x1091c77d,0x1091c715,0x00000000,0xb800c704,0xb800871f, +0x1082477c,0xb8004054,0xb8000051,0x00000000,0xb800c05c,0xb8008059,0x07000101,0x10824915, +0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924751,0xc2ffffe1,0xc37fffe1,0xe8000021, +0x04b002e1,0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0xc2ffffe1, +0xc33fffe1,0xe8000011,0x04b002e1,0xd2ffffde,0xc1000119,0xc2ffffe1,0xc31fffe1,0xe8000011, +0x04b002e1,0xd2ffffc6,0xc1000219,0xc2ffffe1,0xc30fffe1,0xe8000011,0x04b002e1,0xd2ffffae, +0xc1000319,0xc2ffffe1,0xc307ffe1,0xe8000011,0x04b002e1,0xd2ffff96,0xc1000419,0xc2ffffe1, +0xc303ffe1,0xe8000011,0x04b002e1,0xd2ffff7e,0xc1000519,0xc2ffffe1,0xc301ffe1,0xe8000011, +0x04b002e1,0xd2ffff66,0xc1000619,0xc2ffffe1,0xc300ffe1,0xe8000011,0x04b002e1,0xd2ffff4e, +0xc1000719,0xc2ffffe1,0xc3007fe1,0xe8000011,0x04b002e1,0xd2ffff36,0xc1000819,0xc2ffffe1, +0xc3003fe1,0xe8000011,0x04b002e1,0xd2ffff1e,0xc1000919,0xc2ffffe1,0xc3001fe1,0xe8000011, +0x04b002e1,0xd2ffff06,0xc1000a19,0xc2ffffe1,0xc3000fe1,0xe8000011,0x04b002e1,0xd2fffeee, +0xc1000b19,0xc2ffffe1,0xc30007e1,0xe8000011,0x04b002e1,0xd2fffed6,0xc1000c19,0xc2ffffe1, +0xc30003e1,0xe8000011,0x04b002e1,0xd2fffebe,0xc1000d19,0xc2ffffe1,0xc30001e1,0xe8000011, +0x04b002e1,0xd2fffea6,0xc1000e19,0xc2ffffe1,0xe8000011,0x04b002e1,0xd2fffe92,0xc1000f19, +0xc27fffe1,0xe8000011,0x04b002e1,0xd2fffe7e,0xc1001019,0xd2fffe76,0xc1001119,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1003425,0x00900724,0x00924725,0x00000000, +0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055, +0x0015c401,0x00164200,0x00158500,0x00160301,0xd1fffdf6,0xc100000d,0xd1fffded,0x00000000, +0x12009945,0xc100000c,0x10954605,0x108e4640,0x111e1401,0x110e9540,0x009e7955,0x00000000, +0x060e7ae6,0x008e7955,0x00000000,0x060e79e1,0xc1001ee1,0xc27fffe0,0x020e99e4,0x009e78e5, +0x122eba64,0x840018e4,0x122e7a29,0x109e3a80,0x029eb9e1,0x120e3841,0x122e3841,0x108e3804, +0x120e7805,0x120e3804,0x032e56e5,0x00000000,0x032e16e3,0x00000001,0x009e39e1,0x00000000, +0x060e38e9,0x120e7941,0x009e39e1,0x122e3841,0xc1000018,0x840017e1,0x1091c741,0x00000000, +0xb800c704,0xb800805a,0x00000000,0xb8014064,0xb800871d,0x00000000,0xb8004054,0xb8000051, +0x10824740,0xb8010060,0xb800c05d,0x07000102,0x00100901,0x1092497d,0x10924935,0x1081c97c, +0x9000891c,0x9000c905,0x1081c734,0x90004920,0xc1002c25,0x00920724,0xc1006425,0x00900724, +0x00924725,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffe8e4,0xc1ffe4e0, +0x00150501,0x00000000,0x034547e4,0x034287e3,0x00000001,0xc10000e4,0x109e0808,0xc10000ed, +0x109e4810,0x840038e4,0xc10000e1,0x00000000,0x00000000,0x840039ed,0x00000000,0xa80002ec, +0xa80042e6,0xc10000fc,0xc10000f4,0xc10000f9,0xe8000079,0x04e0380c,0xc1000158,0x008ebbe5, +0xc20000ec,0x201e7ae8,0x108ebd09,0x108e3d0c,0x00000000,0xc34000ed,0x120e7a04,0x022f3958, +0x120e3805,0xc10001e4,0x032e7908,0x008f7ef1,0x122e3d04,0x032e3808,0x01cf3ded,0x120e3a40, +0x009e79f0,0x060efce1,0x122f7840,0x00000000,0x060eb9f5,0xe9ffffad,0x008eb9e0,0x008fbbe8, +0x0085bc59,0x04803d0d,0x00000000,0x20efbe11,0x109e1605,0xe8000114,0x120e3841,0x14003e00, +0x1225b841,0x0010be01,0xd1fffd94,0xc1fffee4,0xc1fffce1,0x00114a00,0x008108e0,0x0080c8e6, +0xc1fffee8,0xc1fffce4,0xc26054e1,0x00000000,0x032e88e8,0x032e48e7,0x00000001,0x109e8808, +0x008efa59,0x109ebb78,0x84003aed,0x122e7918,0x120eba25,0x008ebae5,0x00000000,0x20fe3ae2, +0x120ff825,0x122e3f41,0xe80000a9,0x04803855,0x120e1540,0x109ec811,0xc27fffe0,0x009e7fe1, +0xc27fffe4,0x122eb944,0x122f3909,0x108eba04,0x029f3ce0,0x120e3a05,0x120e7a04,0x84003bf0, +0x009eb9f1,0x00000000,0x032e14e0,0x032e94e6,0x120efc05,0x120e7a05,0x00000000,0x060e39e0, +0x060e7bea,0x008ff9e1,0x0011bf01,0x1091c77d,0x1091c735,0x00000000,0xb800c704,0xb8004723, +0x00000000,0xb8004054,0xb8000051,0x00000000,0xb8008058,0xb800871d,0x07000100,0x1082477d, +0x10824935,0x00100901,0xd2ffff62,0xc1ffa6e1,0xd2ffffb8,0xc20000e1,0xc37fffe1,0x001ff801, +0x1092497d,0x10924935,0x1081c97c,0x9000891c,0xc1006825,0x1081c735,0x00924725,0xc1ffe8e4, +0x00000000,0xc1ffe4e1,0xc1ffece4,0x0343c7e5,0x00000000,0x034407e4,0x034387e3,0x00000001, +0x00000000,0xb8000f34,0xa8000231,0x00000000,0x00000000,0xa800422d,0xc10000e1,0xe80000a1, +0x04e0380c,0xc1000029,0x009e8434,0x120e0a05,0x11ce3a00,0x008f7809,0x09be7814,0xc27fffec, +0x09ce3841,0x00000000,0x008e39e1,0x00000000,0x20fe3ae1,0x108e4a09,0x108e8a04,0x00834de0, +0x120e3941,0x108e0a0c,0x1222b840,0x122f0d41,0x00000000,0x20ff0ef2,0x00000000,0x20ff0bf0, +0x20ffccf1,0xc27ffff9,0x120eba04,0x093f3efc,0x093efbf1,0x008eba08,0x84003df1,0x120e3804, +0x84003aec,0x120e7905,0x00000000,0x03233908,0x0322f80a,0xe8ffff75,0x04800a0d,0xc1000018, +0x90000f35,0x1091c77d,0x1091c735,0x00000000,0xb800871d,0x07000101,0x1082477d,0x10824935, +0x10924941,0x1081c940,0x9000891d,0x10924761,0xe8000021,0x14100201,0xc1ffff19,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0xc10000e4,0xc1ffffe1,0xc1ffffe4,0x900002e5, +0x00000000,0x840082e5,0xc10000e0,0x8400c2e1,0xc10000e0,0x840182e1,0xc1058ee0,0x900082e1, +0xc10002e0,0x840202e1,0xd2ffffb4,0xc10127e0,0x840242e1,0xc1004ae0,0x840282e1,0xc1000018, +0x8402c2e1,0x10924941,0x1081c940,0x9000891d,0x10924741,0xe8000021,0x14100201,0xc1ffff19, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0xd2ffffee,0xc1000018,0x9000020d, +0x10924941,0x1081c940,0x9000891d,0x10924741,0xe8000021,0x14100201,0xc1ffff19,0x1091c741, +0x00000000,0xb800871d,0x07000102,0x10824741,0xd2ffffee,0xc1000018,0x8400820d,0x10924941, +0x1081c940,0x9000891d,0x10924761,0xe8000021,0x14100201,0xc1ffff19,0x1091c741,0x00000000, +0xb800871d,0x07000102,0x10824741,0xe8000054,0x8400c20d,0x14e00300,0x8401c20d,0xc10000e1, +0x009e380d,0xe8000015,0x14c03825,0xe800000d,0x14e00301,0xc10000e1,0x120e7814,0xc2df50e0, +0xc1000019,0x108e79dc,0xc30001e1,0xd2ffffac,0x120e7909,0x008e39e1,0x00000000,0x900182e1, +0xd2ffffc6,0x001e0301,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002425, +0x00900724,0x00924725,0x00000000,0x90000051,0x00150201,0x00000000,0xa80214e4,0xb8000209, +0x00000000,0xb8019414,0xa800940d,0x10811431,0x109e0951,0x00000000,0x900038e5,0x00000000, +0xa80254e6,0xd1fff061,0x109e0961,0x00000000,0x900038e5,0x109ec950,0xa802d4e4,0xb8001409, +0x108e9420,0xa8029414,0xa800940d,0xd1fff1a8,0xc27fffe4,0x109e0971,0x109e0960,0x900038e5, +0x00110600,0x900038e8,0x90003be5,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f, +0x10824741,0x00000000,0xb8000051,0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891d, +0x10924741,0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d, +0x10924915,0x1081c97c,0x9000891c,0x9000c905,0x1081c714,0xc1003425,0x00900724,0x00924725, +0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece0,0x00154401,0x00000000, +0x034507e3,0x00158201,0xe8000041,0x14100201,0xc1ffff19,0x1091c77d,0x1091c715,0x00000000, +0xb800c704,0xb800871f,0x1082477c,0xb8004055,0x00000000,0xb8000050,0xb8008059,0x07000101, +0x10824915,0x00100901,0xd1fffd7f,0xd1fffdb4,0x00109600,0x0010d503,0xd1fffde4,0x00109600, +0x0010d403,0xd2ffffb2,0xc1000019,0x10924941,0x1081c940,0x9000891c,0xc1007025,0x00900724, +0x00924725,0x00000000,0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000, +0x90000050,0x90004055,0x00000000,0xb8004461,0x00000000,0xb8000464,0xb800c459,0x00000000, +0xb800845c,0xb8000551,0x00000000,0xb8010454,0xb800854d,0x00000000,0xb80045e8,0xb8010549, +0x00000000,0xb800c5fc,0xb8018545,0x00000000,0xb80145f4,0xa8000241,0xc10000e0,0xb801c5f8, +0xa800423d,0xc1000039,0xe80000d5,0x04e0380d,0xc100042d,0xc1000034,0xc1000628,0xc1000231, +0xc27fffe4,0x20fe9460,0x20fed065,0x008e0d08,0x20ff0f64,0x20fefa5d,0x008ebbe8,0x21cf5358, +0x20fe9261,0x008efaec,0x21cfff54,0x20ffbd5d,0x008ebce8,0x21cf3e54,0x21cf5159,0x008efbf5, +0x001fd300,0x008ebaf8,0x0084fbfd,0x001f9100,0x008efaf4,0x122e9335,0xc27fffe4,0x00847bf0, +0x093eb9e9,0x122e9134,0x840038e8,0x008e0c09,0x00000000,0x093e79e9,0x00000000,0x840038e5, +0x10838e08,0x03240b08,0x001f5201,0x001e9400,0x0323ca08,0x00148f01,0x00151000,0x10828a10, +0x1082cb11,0xe8ffff5c,0x00000000,0x10834d11,0x04800e0c,0x00000000,0x10830c11,0x00000000, +0x90000551,0x00000000,0x900045e9,0x00000000,0x9000854d,0x00000000,0x9000c5fd,0x00000000, +0x90010549,0x00000000,0x900145f5,0x00000000,0x90018545,0xc1000018,0x9001c5f9,0x00000000, +0xb8004055,0x00000000,0xb8000050,0xb800c05d,0x1091c740,0xb8010060,0xb8014065,0x00000000, +0xb8008058,0xb800871d,0x07000101,0x10824741,0x00100901,0x10924941,0x1081c940,0x9000891c, +0xc1003425,0x00924725,0x00000000,0xa80002f0,0xa80042ee,0xc10000e0,0xc10000f9,0xe80000cd, +0x04e0380c,0x001ffb00,0x0012bc01,0x192e7c00,0x200e3cf0,0x192e3b01,0x120e793c,0x200e7bec, +0x120eb83d,0xc10000e0,0x00000000,0x009f79e1,0x118e7c00,0x009ebae4,0x009e38f5,0xc10000e0, +0x118f3b00,0x09bef9e1,0x09ce3ce8,0x09ceb9f4,0x009e78e9,0x120e7e04,0x008efbe8,0x09bebce5, +0x108e3e04,0x21de84ec,0x008ebae1,0x008e7908,0x21dec4e8,0x120e3805,0x008e3808,0x00000000, +0x008e8ae9,0x108e7e08,0x840039e8,0x008ebfed,0x108e3e0c,0x840038e8,0x120eb905,0x120e7804, +0x00000000,0x120e3941,0x00000000,0x032f3a08,0x032ef90a,0x122fb841,0xe8ffff55,0x04803e0c, +0x0012bc00,0x001ffb01,0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x1092497d,0x10924915,0x1081c97c,0x9000891c,0xc100e425,0x1081c715,0x00900724,0x00924725, +0x00000000,0x900700c0,0x900740c5,0x00000000,0x900680b8,0x9006c0bd,0x00000000,0x900600b0, +0x900640b5,0x00000000,0x900580a8,0x9005c0ad,0x00000000,0x900500a0,0x900540a5,0x00000000, +0x90048098,0x9004c09d,0x00000000,0x90040090,0x90044095,0x00000000,0x90038088,0x9003c08d, +0x00000000,0x90030080,0x90034085,0x00000000,0x90028078,0x9002c07d,0x00000000,0x90020070, +0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000, +0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece1,0x00000000,0x034847e3, +0x00000001,0x00000000,0xa80002c4,0xa80082bd,0xc1007ee0,0xa80042c0,0xa800c2b9,0xc10000e0, +0x008361e0,0xc1007e65,0xe80000a5,0x04e03885,0xc100fc38,0xc101002d,0xc100fe30,0xc1000cf8, +0xc1010229,0xc10008fc,0xc1000ef0,0xc1000af5,0x122e7104,0x122e3004,0x008e8e15,0x008e0c14, +0x008ef9e0,0x009e79e1,0x122eef04,0x84003aec,0x122eae05,0x008e0b14,0x840038e4,0x008e7be9, +0x008e0a14,0x840038e4,0x009e7be9,0xedffffc4,0x840038e5,0x10865910,0x032c7f08,0x032bfe09, +0x10828a20,0x032c3d08,0x032bbc09,0x1082cb20,0x108f3c20,0x10830c21,0x10838e21,0x108f7d21, +0x04801934,0x108fbe20,0x108fff21,0xc10000e1,0xe8000241,0x04e03884,0xc1000065,0xc100008c, +0xc1000289,0xc10000b4,0xc10000a0,0xc10000ad,0x001aa300,0xc10000a4,0x0019e201,0x1089a310, +0xc1000494,0x10892319,0x10882320,0xc100087c,0x1087a329,0x10876330,0xc1000c70,0x1086e339, +0x1086a340,0xc1001060,0x1085e349,0x1085a350,0xc1001454,0x10852359,0x1084e360,0xc1001848, +0x10846369,0x10842370,0xc1001c3c,0x1083a379,0x00000000,0x032baa14,0x034b290d,0x00000000, +0x032f6714,0x034f2911,0x00000000,0x032e6614,0x034e250d,0x108aeb20,0x03236414,0x034ea511, +0x108a6980,0x03232014,0x0342df0d,0x1089a680,0x03229e14,0x034edf11,0x10896580,0x032fdd14, +0x034f9c0d,0x10882080,0x032f5b14,0x034f1c11,0x1087df81,0x10875d81,0x10871c80,0x20ee3df0, +0x20ee6eb1,0x1086db80,0x20ee39e1,0x008e68e0,0x20ee0de8,0x008eade5,0x008efae0,0x20ee0aec, +0x20ee4c2d,0x008eb9e0,0x20ee3ff8,0x032c5a15,0x008e7ae0,0x20ee3df0,0x008ebbe5,0x008b7ae0, +0x034e980c,0x032c1715,0x008b39e0,0x034e5810,0x032bd615,0x10879e80,0x034e150c,0x032b9415, +0x10892480,0x034ed510,0x03235315,0x1089e780,0x0343120c,0x0322d115,0x10861880,0x034f1210, +0x03229015,0x10855580,0x032f8e15,0x10869a80,0x034f4f11,0x10849281,0x10838e80,0x034fcf0c, +0x1083cf81,0x10841080,0x00000000,0x10845181,0x10851480,0x108aaa80,0x1084d381,0x10859680, +0x20ee70e4,0x20eeb1e9,0xc10040e0,0x20ee6fe1,0x008eace4,0x20ee6eec,0x008eede9,0x008f3be4, +0x20ee4bf0,0x20ee8d31,0x008efae4,0x20ee4afd,0x008ebbe4,0x20ee7ef4,0x008efce9,0xe8fffe94, +0x00000000,0x008b7be5,0x04802be0,0x1085d780,0x008a3ae5,0xc27fffe0,0x008e6da0,0x008ea309, +0xc27fffe0,0x093ef8e4,0x009e6da1,0x10865908,0x84003aec,0x093e78e5,0xe8fffdec,0x008e2208, +0x1088a211,0x04801984,0x1088e310,0x840038e5,0x108e2104,0xc1000064,0xc10000f9,0x120f6104, +0xc10002f0,0x120ef805,0x00000000,0x032e7d17,0x008e3e15,0x00000000,0x840038e5,0x00000000, +0x00000000,0x032ebb15,0x10865904,0xc1003fe1,0x008e7c14,0x108fbe10,0x108f7d11,0xe8ffffcc, +0x108f3c11,0x048019e0,0x108efb10,0x840039e9,0xc1000019,0x00000000,0xb8004055,0x00000000, +0xb8000050,0xb800c05d,0x00000000,0xb8008058,0xb8014065,0x00000000,0xb8010060,0xb801c06d, +0x00000000,0xb8018068,0xb8024075,0x00000000,0xb8020070,0xb802c07d,0x00000000,0xb8028078, +0xb8034085,0x00000000,0xb8030080,0xb803c08d,0x00000000,0xb8038088,0xb8044095,0x00000000, +0xb8040090,0xb804c09d,0x00000000,0xb8048098,0xb80540a5,0x00000000,0xb80500a0,0xb805c0ad, +0x00000000,0xb80580a8,0xb80640b5,0x1091c77c,0xb80600b0,0xb806c0bd,0x1091c714,0xb80700c0, +0xb80740c5,0x1082477c,0xb80680b8,0xb800871d,0x07000101,0x10824915,0x00100901,0x10924941, +0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1003025,0x00900724,0x00924725,0xc2b334e8, +0xc10000e0,0xc2b334ed,0xc30001e8,0xc30001ec,0xc10000e5,0xc2b334e8,0x90003ae0,0xc1ffffe1, +0xc30001e8,0x90007be4,0xc2b334e5,0xc30001e4,0x84013ae0,0xc1ffffe1,0xc2b388ec,0x840179e0, +0xc1ffffe5,0xc30001ec,0xc2b388e8,0xc1ffffe1,0xc30001e8,0x84017be4,0xc24db4e5,0xc30001e4, +0x84013ae0,0xc239b0e1,0xc2b388e4,0x008ef9e0,0xc2b388e9,0xc30001e4,0xc30001e8,0xc24db4e1, +0xc30001e0,0x9000f9ec,0xc24db4e5,0xc30001e4,0x9002fae0,0xc2b388e1,0x108eb940,0xc30001e0, +0xc24db4e5,0xc30001e4,0x900338e8,0xc2b388e1,0x108eb980,0xc30001e0,0xc24db4e5,0xc30001e4, +0x900378e8,0xc2b388e1,0x108eb9c0,0xc30001e0,0xc24db4e5,0xc30001e4,0x9003b8e8,0xc10060e1, +0xc2b388e8,0x008ef9e0,0xc2e818e5,0xc30001e8,0xc30001e4,0xc2b388e1,0x108e7960,0x9003faec, +0xc30001e1,0xc2e818e0,0x9001f8e4,0xc2b388e9,0xc30001e0,0xc30001e8,0xc2e818e5,0x108ef890, +0xc30001e4,0xc2b388e1,0x108e79c0,0x90023aec,0xc30001e1,0xc2b360ec,0x900278e4,0xc10010e5, +0xc30001ec,0xc2b360e8,0xc1052ae1,0xc30001e8,0x84043be4,0xc2b360e5,0xc30001e4,0x8404fae0, +0xc10018e1,0xc2e818ec,0x8404b9e0,0xc10044e5,0xc30001ec,0xc2b360e0,0xc2e818e9,0xc30001e0, +0x008e7be4,0xc30001e9,0xc10084e4,0x9000f8e4,0xc2b360e1,0xc30001e0,0x008ebae4,0xc2e818e5, +0xc30001e4,0x900038e8,0xc10104e1,0xc2b360e0,0x008ef9e0,0xc2e818e9,0xc30001e0,0xc30001e8, +0xc10184e5,0xd1ff71d4,0xc2b360e0,0x900078ed,0xc30001e0,0xc2b34008,0x008e7ae5,0xc3000108, +0x9000b8e5,0xd1ff72b1,0xc2b34009,0xc100060c,0xc3000109,0xc10000fd,0xc24db4ec,0x120f3f08, +0x108e3f11,0xc30001ec,0xc24db4e8,0xc10000e5,0x120ef808,0x008e3cec,0xc30001e9,0x108e7f20, +0x900038e4,0xc24db4e1,0xc10000f0,0x008f7be8,0x120eb909,0xc30001e0,0x108e7f30,0xc24db4ed, +0x108e3f04,0x90003df0,0x008fbae1,0xc10000f4,0x120f3908,0xc30001ed,0x108ebf60,0xc24db4e4, +0x120e3841,0xc10000ec,0x90003ef4,0x008f3ced,0x120e3a08,0xc30001e4,0x122ff841,0xc10000e0, +0x90003cec,0x008e78e5,0xe8ffff70,0x900039e1,0x14803f11,0xc10000fd,0x108e3f04,0x108ebf40, +0xc24db4e5,0x120e3840,0x120eba08,0xc30001e5,0x122ff840,0xc10000e0,0x008e7ae5,0xe8ffffdc, +0x900039e1,0x14803f21,0xc10000fd,0xc20e6ce8,0x108e3f04,0xc24db4e5,0x120e3840,0x008ebfe8, +0xc30001e5,0x120eba08,0x122ff840,0xc10240e1,0xe8ffffdc,0xc10000e4,0x008ebae5,0x04803fe0, +0x90003ae5,0x108ebf70,0xc24db4e4,0xc10000e1,0x120eba08,0xc30001e4,0xc10000fd,0x008e7ae5, +0x00000000,0x900039e1,0x108e3f04,0x108ebf74,0xc24db4e5,0x120e3840,0x120eba08,0xc30001e5, +0x122ff840,0xc10000e0,0x008e7ae5,0xe8ffffdc,0x900039e1,0x14803f29,0xc10000fd,0x108e3f04, +0x108ebf9c,0xc24db4e5,0x120e3840,0x120eba08,0xc30001e5,0x122ff840,0xc10260e0,0x008ebae5, +0xe8ffffdc,0xc10000e5,0x04803fe0,0x90003ae5,0xc10000fd,0xc10287e8,0x108e3f04,0xc24db4e5, +0x120e3840,0x008ebfe8,0xc30001e5,0x120eba08,0x122ff840,0xc10250e1,0xe8ffffdc,0xc10000e4, +0x008ebae5,0x04803fe0,0x90003ae5,0xc10000fd,0xc104d7e8,0x108e3f04,0xc24db4e5,0x120e3840, +0x008ebfe8,0xc30001e5,0x120eba08,0x122ff840,0xc104e5e1,0xe8ffffdc,0xc10000e4,0x008ebae5, +0x04803fe0,0x90003ae5,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1002025, +0x00900724,0x00924725,0x001ec201,0xc2b334e0,0xc2b334e9,0xc30001e0,0xc30001e9,0x00000000, +0xa80138e3,0x00000001,0xe8000031,0x04003808,0x108e7a21,0xc2b360e4,0x84003908,0xc2b388e1, +0xc30001e4,0xc30001e1,0x00000000,0x84047909,0x00000000,0x84017809,0xd1ff6fc1,0xc2b34008, +0x0010fb01,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800871f,0x10824742, +0x07000102,0x00100901,0x10924941,0x1081c940,0x9000891d,0x10924771,0xc2b334e0,0xc2b334e9, +0xc30001e0,0xc30001e9,0x00000000,0xa80178e3,0x00000001,0xe8000015,0x04003808,0x108e7a29, +0x00000000,0x84003909,0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891c,0x9000c905,0x10900770,0x10924771,0xc2b334e8,0xc2b388e5, +0xc2b334e0,0xc30001e4,0xc30001e9,0xc30001e0,0x90003a09,0xd1ff6ec8,0xc2b388e0,0x9000780d, +0xc2b34008,0x90003908,0xc30001e1,0xc3000108,0x9000780d,0xc1000019,0x1091c741,0x00000000, +0xb800c704,0xb800871f,0x10824742,0x07000102,0x00100901,0x10924941,0x00000000,0x9000891d, +0x1081c940,0x9000c904,0xc1002425,0x00900724,0x00924725,0x00000000,0x90004054,0x90008059, +0x00000000,0x90000051,0x00158300,0x00154400,0x00150501,0xd1ffff4f,0xd1fffe50,0x00109503, +0xd1fffee8,0x00109403,0xd1ff6f30,0x109e0950,0xc10006e5,0xc2b34008,0x900038e4,0x0010d601, +0xc1000114,0x00111500,0xc3000109,0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb800805b, +0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901, +0x10924941,0x00000000,0x9000891d,0x1081c940,0x9000c904,0xc1004425,0x00900724,0x00924725, +0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051, +0xc2b334e0,0xc2b334e8,0xc2b334e5,0xc30001e0,0xc30001e8,0xc30001e5,0xc2b334ec,0xa80178e0, +0xb8003af1,0xc24db4e8,0x00000000,0xc30001ed,0xc30001e8,0xb8007959,0xc239b0e5,0xe80002b8, +0x00000000,0x00857ae5,0x14a03800,0x00000000,0x1085fb11,0xe80001ed,0x14103805,0xc2b334e4, +0xc10000e1,0xc30001e5,0x00000000,0xa80139eb,0xc2b334e5,0xe8000038,0xc30001e5,0x04e038e8, +0x10863920,0xc1000051,0x120e1405,0x108e1404,0x032e3ce0,0x008e56e1,0x120e3841,0x12253841, +0xe8ffffe9,0x048014e8,0x840039e1,0xc2b334e4,0x109e0951,0xc30001e4,0xc110000d,0x00000000, +0xb8003909,0xd10012d0,0xc2b388e5,0xc30001e5,0xc1000114,0x900038e4,0xc107d011,0xc2b334e4, +0xa80018e8,0xc10000e1,0xc30001e5,0x00000000,0x00000000,0xb800395a,0xe8000035,0x04e038e8, +0xc1000051,0x120e1405,0x008e56e0,0x032e16e1,0x108e1405,0x120e3841,0x12253841,0xe8ffffe8, +0x122e3805,0x048014e8,0x840039e1,0xc2b334e0,0xb800170c,0xc27fffe5,0xc30001e0,0xc2b36011, +0x00000000,0xb8003809,0xd10001f5,0x109e0951,0xc24e2014,0x900038e4,0xc3000111,0x00000000, +0xa80018e0,0xb80017ff,0x00000001,0xc10000e0,0x122fb805,0xe8000071,0x04e038f8,0xc1000051, +0x120f5404,0x120e1408,0xc27fffed,0x008ebfe0,0x032e55f4,0x032f3fe2,0x108e3d05,0x120e3805, +0x008e7fe0,0x008f3ce5,0x093efbf1,0x00000000,0x84003aed,0x00000000,0x032e95f4,0x032effe2, +0x108e1405,0x120e3841,0xc27fffe0,0x008ebbe8,0x12253841,0xe8ffffac,0x093e38e9,0x048014f8, +0x840039e1,0xd1ff6c31,0xc2b34009,0xc100090c,0xc3000109,0xd1ff6d55,0xc2b34009,0xc3000109, +0xc1000019,0x1091c741,0x00000000,0xb800c704,0xb8008059,0x00000000,0xb800c05c,0xb8010062, +0x00000000,0xb8004055,0x00000000,0xb8000050,0xb800871d,0x07000101,0x10824741,0x00100901, +0xe8ffffb5,0x14103809,0xc2b334e4,0xc10000e1,0xc30001e5,0x00000000,0xa80139eb,0xc2b334e5, +0xe800003c,0xc30001e5,0x04e038e8,0x108ef920,0xc1000051,0x120e1405,0x008e56e0,0x032e3ce1, +0x108e1405,0x120e3841,0x12253841,0xe8ffffe8,0x122e3805,0x048014e8,0x840039e1,0xc2e818e8, +0xa8003be4,0xb8001709,0xc30001e9,0xc2e818f4,0xc102c4f0,0xc24db4ed,0xc101c4e1,0xd1fff184, +0xc30001f4,0xc30001ed,0x109e0950,0xc1009ce8,0x0080fae1,0x00817be8,0x900038e4,0x00813df1, +0xd1ff6b35,0xc2b34009,0xc100050c,0xc3000109,0xd2ffff07,0xc2b334e1,0xc30001e0,0xc1000051, +0x00000000,0xa80138e7,0xc10000e1,0xe8fffef5,0x04e038e5,0x108e1404,0xa8003ce1,0x120e3840, +0x108f3c09,0x12253841,0xe8ffffed,0x048014e4,0x10859608,0x840016e1,0xd2fffecb,0x1092497d, +0x10924915,0x1081c97c,0x9000891c,0x9000c905,0x1081c714,0xc1007825,0x00900724,0x00924725, +0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069,0x00000000,0x9000c05c, +0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051,0xc1ffece0,0x00168501, +0x00000000,0x0345c7e3,0x00160301,0xc24db4fc,0xa8044458,0xb8000435,0xc24db4f4,0xb8004430, +0xb800842d,0xc24db4ec,0xb800c428,0xa804c455,0xc24db4e5,0xc30001fd,0xc226f0f9,0xc30001f4, +0xc22730f0,0xc30001ed,0xc22770e8,0xc30001e4,0xc22790e1,0x00867be8,0x00873ff8,0x0086fdf1, +0xc10000ec,0x008539e1,0xc1001fe0,0x120ebb04,0x108e7b05,0x00000000,0x009e38ec,0x008edce9, +0x120f7808,0xc10020e1,0x00000000,0x034f0df4,0x008e9beb,0x00000001,0x00000000,0x84003bf1, +0x00000000,0x034e4cf5,0x120e7941,0x122ef941,0xe8ffffb9,0x04803be0,0x84003ae5,0xc10000ed, +0xc1000fe4,0x120e3b05,0x008e59e0,0x009e39ed,0x120e3809,0x108e3b04,0x034e0ae1,0x120e3841, +0x122ef841,0xe8ffffdd,0x14803b40,0x840039e1,0xc10000ed,0xc1000fe4,0x120e3b05,0x008e54e0, +0x009e39ed,0x120e3809,0x108e3b04,0x034e0be1,0x120e3841,0x122ef841,0xe8ffffdd,0x14803b40, +0x840039e1,0xd1000130,0xc24db4e5,0xc30001e4,0xc230b0e1,0x00111600,0x0080f9e1,0xc24db4e4, +0xc1009ce1,0xc24db4f0,0xc230b0ec,0xc30001e5,0xc30001f0,0x008eb9e1,0xd10001a0,0x109e0960, +0x109e4951,0x0080bcec,0x90003858,0x900039e9,0x00115b00,0x00111c00,0x0010d801,0xc24db4ec, +0xc24db4e8,0xc230b0e1,0xc30001ec,0xc30001e8,0xc20a1ce5,0xd1000488,0x109e0960,0x0080bbe1, +0x109e0950,0x90003868,0x00817ae5,0x00111900,0x90003858,0x0010d801,0xc24db4f4,0xc230b0f1, +0xc24db4ec,0xc2135ce4,0xc30001f5,0xc30001ec,0x109e0970,0x109e8951,0xd1000660,0x109e4960, +0x00817be5,0x0080bdf0,0x90003a58,0x0010d801,0x00111400,0x90003854,0x9000395d,0xc1000019, +0x1091c77d,0x1091c714,0xb8004055,0x00000000,0xb800c704,0xb8010061,0x00000000,0xb8000050, +0xb800c05d,0x00000000,0xb801c06c,0xb8020071,0x00000000,0xb8008058,0xb8018069,0x1082477c, +0xb8014064,0xb800871d,0x07000101,0x10824915,0x00100901,0x10924941,0x1081c940,0x9000891c, +0xc1002825,0x00924725,0xc10000e1,0xe8000079,0x04e03810,0xc10000e9,0x108e7a04,0x120f7a04, +0x108e3a09,0x120ef904,0x00000000,0x008e7d0d,0x00000000,0x032f3d08,0x032ebb0b,0x00000001, +0x122f3c04,0x122eba05,0x008ebce9,0x00000000,0x840039e9,0x00000000,0x032ebd08,0x032e7b0b, +0x120e3841,0x122eb840,0x122e3904,0x122e7a05,0xe8ffffa8,0x008e3b0c,0x009e79e1,0x04803a10, +0x840038e5,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924925, +0x1081c97c,0x9000891c,0xc100b425,0x1081c725,0x00900724,0x00924725,0x00000000,0x9003c08c, +0x90040091,0x00000000,0x90034084,0x90038089,0x00000000,0x9002c07c,0x90030081,0x00000000, +0x90024074,0x90028079,0x00000000,0x9001c06c,0x90020071,0x00000000,0x90014064,0x90018069, +0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000,0x90000051, +0xc1ffece4,0xc1ffe8e1,0x00000000,0x034607e4,0x0347c7e3,0x00000001,0xc10000e1,0xe800005d, +0x04e0387c,0xc1003e64,0x108f5ff9,0xc1007ee0,0xc10002ed,0xc10000f0,0x008e98e1,0x00000000, +0x032e7c0b,0x109e3a09,0x00000000,0x840038e5,0x00000000,0x00000000,0x032e3b0a,0x10865908, +0x108f3c11,0xe8ffffd8,0x108efb11,0x048019f4,0x108eba10,0x84003ae1,0xc10000e1,0xe8000155, +0x04e0387c,0xc1000065,0xc1000078,0xc1000275,0xc100008c,0xc1000088,0xc1000085,0x00181e00, +0xc1000070,0x0016dd01,0x10869e10,0xc100025c,0x10859e19,0x10855e20,0xc1000450,0x1084de29, +0x10849e30,0xc1000644,0x10841e39,0x10886110,0x03239c10,0x0323d881,0xc10020e0,0x032fdc14, +0x0322986d,0x00000000,0x03291710,0x03235869,0x1085d720,0x032e5714,0x032e9859,0x10871c20, +0x0322d410,0x03231855,0x10851420,0x032f1414,0x032f984d,0x10849240,0x032ed110,0x032f5849, +0x10845120,0x032fd114,0x03229841,0x10841041,0x1084d341,0x10855540,0x210e4afc,0x210e8f39, +0x10859640,0x210ebae4,0x210f0d91,0x008fa3e8,0x210e7ef0,0x210ecc2d,0x008f62e4,0x210ebded, +0x008f3de8,0x210e4afc,0x008f7ef1,0x008efce4,0x00000000,0x008f3ded,0x10869a40,0x1086db40, +0x10882041,0xe8ffff49,0x048021e0,0x0088fce8,0x0088bbe5,0xc27fffe0,0x008e6388,0x008e9e0d, +0xc27fffe0,0x093ef8e4,0x009e6389,0x10865908,0x84003aec,0x093e78e5,0xe8fffed8,0x008e1d0c, +0x10875d11,0x0480197c,0x10879e10,0x840038e5,0x108e1f04,0x120f1f05,0xc1000064,0x108e9808, +0x120ef805,0x00000000,0x032e58f3,0x109e3a09,0x00000000,0x840038e5,0x00000000,0x00000000, +0x032e18ee,0x10865904,0x108f3c11,0xe8ffffd8,0x108efb11,0x1480197c,0x108eba10,0x84003ae1, +0xc1000019,0x00000000,0xb8000050,0xb8004055,0x00000000,0xb8008058,0xb800c05d,0x00000000, +0xb8010060,0xb8014065,0x00000000,0xb8018068,0xb801c06d,0x00000000,0xb8020070,0xb8024075, +0x00000000,0xb8028078,0xb802c07d,0x1091c77c,0xb8030080,0xb8034085,0x1091c724,0xb8038088, +0xb803c08d,0x1082477c,0xb8040090,0xb800871d,0x07000101,0x10824925,0x00100901,0x1092497d, +0x10924925,0x1081c97c,0x9000891c,0xc1008825,0x1081c725,0x00900724,0x00924725,0x00000000, +0x90010060,0x90014065,0x00000000,0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055, +0xc1ffece4,0xc1ffe8e1,0x00000000,0x034647e4,0x034607e3,0x00000001,0x1225d904,0xc10000e1, +0xe8000041,0x04e0385c,0xc1000f58,0x108f173d,0xc10000ec,0xc1001ee9,0x00000000,0x032e7b0a, +0x008e3a14,0x10859605,0xe8fffff0,0x00000000,0x108efb11,0x048016f0,0x108eba08,0x840038e5, +0xc10000e1,0xe8000105,0x04e03864,0xc1000059,0xc1000054,0xc1000251,0x122ed604,0x0324950c, +0x0324540d,0x108ebb04,0x108e7b08,0x108e3b0d,0xc100004c,0xc1000040,0x1203fb05,0xc1000039, +0x12037a04,0xc1000230,0x1202f905,0xc1000428,0x120ff804,0xc10006f9,0x00000000,0x032f4f14, +0x032f0e11,0x00000000,0x032e4d14,0x032e0c11,0x00000000,0x032ecb14,0x032e8a11,0x10841010, +0x032e7f14,0x032e3e11,0x10828a21,0x108fbe21,0x10830c20,0x210e79e0,0x210e3df1,0x10838e20, +0x210e39e0,0x210efbe9,0x008e93e1,0x108fff20,0x008e7ae4,0x1082cb21,0xe8ffffa0,0x1083cf20, +0x008e79ed,0x14801040,0x10834d20,0x0084f9e1,0x00000000,0x20f4d84d,0x10859608,0x00000000, +0x008e950d,0x008e140c,0x008ed348,0x008e5345,0xe8ffff28,0x10851410,0x84003aed,0x04801664, +0x10855510,0x840038e5,0xc1000058,0xc10000ec,0x120e9705,0x00000000,0x032e7a16,0x008e3b14, +0x10859605,0xe8fffff0,0x00000000,0x108eba09,0x1480163c,0x108efb08,0x840038e5,0xc1000019, +0x00000000,0xb8004055,0x1091c77c,0xb8000050,0xb800c05d,0x1091c724,0xb8008058,0xb8014065, +0x1082477c,0xb8010060,0xb800871d,0x07000101,0x10824925,0x00100901,0x1092497d,0x10924935, +0x1081c97c,0x9000891c,0xc1009025,0x1081c735,0x00900724,0x00924725,0x00000000,0x90014064, +0x90018069,0x00000000,0x9000c05c,0x90010061,0x00000000,0x90004054,0x90008059,0x00000000, +0x90000051,0xc1ffe8e4,0x00000000,0xc1ffe4e1,0xc1ffece4,0x034647e5,0x00000000,0x034687e4, +0x034e07e3,0x00000001,0x12261a04,0x1225f805,0x108e183c,0x1085973d,0x008f385d,0xe8000039, +0x04e016f1,0x120ed604,0xc10002e9,0x00000000,0x032e7a0a,0x008e3b14,0x10859605,0xe8fffff0, +0x00000000,0x108eba11,0x048016f0,0x108efb08,0x840038e5,0xc10000e1,0xe8000109,0x04e03868, +0xc1000059,0xc1000054,0xc1000251,0x122ed604,0x0324950c,0x0324540d,0x108ebb04,0x108e7b08, +0x108e3b0d,0xc100004c,0xc1000040,0x1203fb05,0xc1000039,0x12037a04,0xc1000230,0x1202f905, +0xc1000428,0x120ff804,0xc10006f9,0x00000000,0x032f4f14,0x032f0e11,0x00000000,0x032e4d14, +0x032e0c11,0x00000000,0x032ecb14,0x032e8a11,0x10841010,0x032e7f14,0x032e3e11,0x10828a21, +0x108fbe21,0x10830c20,0x20feb9e0,0x20fe3df1,0x10838e20,0x20fe39e0,0x20fe7be9,0x008ed3e1, +0x108fff20,0x008ebbe8,0x1082cb21,0xe8ffffa0,0x1083cf20,0x008e7ae5,0x14801040,0x10834d20, +0x0084f9e1,0x00000000,0x20f4d94e,0x008e150c,0x10855510,0x120e5341,0x122e7941,0x10859608, +0x008e92e4,0x009e51e5,0xe8ffff24,0x008e140c,0x840038e9,0x04801668,0x10851410,0x840038e5, +0xc1fff1e1,0xe8000041,0x04e0385c,0xc1000058,0x108f173d,0xc10000ec,0x120e9805,0x00000000, +0x032e7a16,0x008e3b14,0x10859605,0xe8fffff0,0x00000000,0x108eba09,0x048016f0,0x108efb08, +0x840038e5,0xc1000019,0x00000000,0xb8000050,0xb8004055,0x1091c77c,0xb8008058,0xb800c05d, +0x1091c734,0xb8010060,0xb8014065,0x1082477c,0xb8018068,0xb800871d,0x07000101,0x10824935, +0x00100901,0x10924941,0x1081c940,0x9000891c,0xc1002825,0x00924725,0xc10000e1,0xe8000085, +0x04e0380c,0xc10000f5,0x120f3d04,0xb80045e4,0xb80084e1,0x00000000,0x032efc08,0xb80005e9, +0x00000000,0xb80044e4,0xb80004e3,0x00000000,0x900005ec,0x060ef9e1,0x00000000,0x060e7be0, +0x060ebae5,0xc24000e1,0x008e39e0,0x008e7be9,0x108e3d04,0x008e78e5,0xc27fffe4,0x122eb93c, +0x120e3841,0x122f7840,0x093e79e9,0xe8ffff9c,0x008e3c08,0x900045e5,0x04803d0c,0x840038e5, +0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941,0x1081c940, +0x9000891c,0xc1002825,0x00924725,0xc10000e1,0xe8000079,0x04e0380c,0xc10000f5,0x120f3d04, +0xc24000e1,0x00000000,0x032e7c0b,0x00000001,0x192e7900,0x060e79e4,0x118eb901,0x120ef941, +0xc10000e4,0x009efbe5,0x008e7be0,0x009e39ed,0x009e38ed,0x00000000,0x060ebae1,0x108e3d05, +0x120e3840,0x008e79e9,0xc27fffe0,0x122e793c,0x122f7841,0xe8ffffa8,0x008e3c08,0x093e78e5, +0x04803d0c,0x840038e5,0xc1000019,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741, +0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725,0x122f0404,0xc10000e1,0xe8000059, +0x04e038f0,0xc10000ed,0x120ebb04,0x108e3b05,0x108e7a04,0x00000000,0x120e3841,0x120efb08, +0x008e7a0c,0x120eb905,0x00000000,0x032efb08,0x032eba0b,0x00000001,0x122ef840,0x122e3a04, +0x122ebb05,0xe8ffffc4,0x008e3ae1,0x04803bf0,0x840039e1,0x1091c741,0x00000000,0xb800871d, +0x07000102,0x10824741,0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725,0xc10003e1, +0xe8000049,0x04e03810,0xc10000f0,0xc10003ed,0x120e3b04,0x120ebc05,0x108e3b10,0x032eb809, +0x108e7c04,0x120e3841,0x120e3940,0x122ef841,0xe8ffffe0,0x00000000,0x008e7a0d,0x04803b10, +0x122f3840,0x840039e9,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1004025,0x00924725,0x00000000,0xb8000535,0xc10000e1,0xe80000cc, +0xc100002d,0x04e03810,0x00000000,0xc1000031,0x120fcb04,0x108e0c04,0x12228d05,0x120e3840, +0x032eff08,0x120f0c05,0x122e7840,0x108e0b05,0x108eb904,0x120e7904,0x120e3841,0x120e7a40, +0x00000000,0x008eb90d,0x122f7b04,0x122ef940,0x1222f841,0x108e3b04,0x008f8af5,0x122e3e04, +0x120e7841,0x008e3c0c,0x008f4ae0,0x008f38f5,0x120e3b04,0x840038f5,0x008e380c,0x84003af9, +0x00000000,0x00000000,0x840038f1,0x00000000,0x032e7f09,0x122eb941,0x120e3a05,0x008e380d, +0x00000000,0x840038e5,0x00000000,0x00000000,0x03237f09,0x108e3a05,0xe8ffff58,0x120e3841, +0x04800b10,0x12233841,0x00000000,0x90000535,0x1091c741,0x00000000,0xb800871d,0x07000102, +0x10824741,0x1092497d,0x10924915,0x1081c97c,0x9000891c,0xc1003c25,0x1081c715,0x00924725, +0xc1ffece1,0x00000000,0x034f47e3,0x00000001,0xc10000e1,0xe8000065,0x04e03810,0xc10000e9, +0x120f3a04,0x108e3a05,0x00000000,0x032efc08,0x032e7c0f,0xc24c10e9,0x00000000,0x20fe45e4, +0x20febaee,0x008e7ae5,0x00000000,0x20de79f6,0x120e3840,0x108e7905,0xc27fffe0,0x122e7904, +0x122eb841,0xe8ffffbc,0x008e3c08,0x093e78e5,0x04803a10,0x840038e5,0x1091c77d,0x1091c715, +0x00000000,0xb800871d,0x07000101,0x1082477d,0x10824915,0x10924941,0x1081c940,0x9000891c, +0xc1005425,0x00924725,0xc10000e0,0xb800c4f4,0xb80104ed,0xc10000f0,0xb8000448,0xb8004445, +0xc10000e8,0xb8008440,0xb80005ed,0xeb0000ec,0xb8004534,0xb800c5f1,0x0093fcf4,0xb80105e4, +0xa8000231,0x0093baed,0xc100002d,0x04e0380d,0xc1000028,0xc10002fc,0xc10004f9,0x00000000, +0x20fe3c44,0x20fe4c49,0x00000000,0x21cebb3c,0x20fe7941,0x008e39e0,0x20fefc40,0x21ce4d39, +0x008e38e4,0x21cf7b38,0x20fe8c45,0x009e38e9,0xc27fffe0,0x009378e5,0x122e4d34,0x21ce4d3c, +0x1082cb09,0x008e0a08,0x00000000,0x093f38e5,0x00000000,0x840038f1,0x00000000,0x032f3f0b, +0x00000001,0x00000000,0x20fe3c4a,0x008e38e9,0x008e38ed,0x009e38e5,0x009ef8f5,0xc27fffe0, +0x122e7b35,0x008e3f08,0x093e78e5,0x00000000,0x840038e5,0x00000000,0x00000000,0x03233e09, +0x10828a11,0xe8ffff58,0x001e4c00,0x108fff11,0x04800b0c,0x108fbe11,0x00000000,0x900005ed, +0x00000000,0x90004535,0x00000000,0x90008531,0x00000000,0x9000c5f1,0xc1000018,0x900105e5, +0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x1092497d,0x10924915,0x1081c97c, +0x9000891c,0x9000c905,0x1081c714,0xc1005825,0x00900724,0x00924725,0x00000000,0x90020070, +0x90024075,0x00000000,0x90018068,0x9001c06d,0x00000000,0x90010060,0x90014065,0x00000000, +0x90008058,0x9000c05d,0x00000000,0x90000050,0x90004055,0xc1ffece0,0x00170401,0x00000000, +0x034e07e3,0x00174301,0xc24db4e8,0xa8017858,0xb801f855,0xc30001e8,0xb802f86c,0xb8023869, +0xc227b0e0,0xb8027864,0xc24db4e5,0x00863ae1,0xd1fffb51,0xc239b0e0,0x00000000,0xc30001e5, +0x0010d800,0x0085f9e0,0x00111601,0xd1fff9d8,0x12255604,0x00111501,0x00109800,0x0010d500, +0x00115b02,0xd1fff9c0,0x0010d501,0x10815b20,0x00111a00,0x00109802,0xd1fffb91,0x00111500, +0x0010d800,0x00109802,0x1225560c,0xc10000e1,0xe8000031,0x04e03854,0xc1000051,0x120e1405, +0x108e1404,0x032e18e0,0x008e57e1,0x120e3841,0x12253841,0xe8ffffe9,0x04801454,0x840039e1, +0xd1fffa18,0x00109800,0x0010d503,0xd1fffd68,0xc24db4e5,0xc30001e4,0xc10074e0,0x00109801, +0x00111900,0x008179e0,0x0010d501,0x0010d700,0x00000000,0x00109801,0xd1fffc8c,0x109e0951, +0x00115c00,0x90003874,0x00111502,0xd1fffb70,0xc24db4e5,0xc30001e4,0xc10070e0,0x00109801, +0x00111500,0x008179e0,0x0010d701,0xd1fff8f8,0xc2e81810,0xc24db4e5,0xc30001e4,0xc10040e0, +0x00109701,0xc3000110,0x008179e0,0x1200d509,0x1091c77d,0x1091c714,0xb8004054,0xb8000051, +0x00000000,0xb800c704,0xb8010061,0x00000000,0xb800c05c,0xb8008059,0x00000000,0xb8018068, +0xb8014065,0x00000000,0xb8024074,0xb800871d,0x1082477c,0xb8020070,0xb801c06d,0x07000101, +0x10824915,0x00100901,0x10924941,0x1081c940,0x9000891c,0xc1002425,0x00924725,0xc10001e1, +0xe8000049,0x04e03810,0xc10000f0,0xc10001ed,0x120e3b04,0x120ebc05,0x108e3b08,0x032eb809, +0x108e7c04,0x120e3841,0x120e3940,0x122ef841,0xe8ffffe0,0x00000000,0x008e7a0d,0x04803b10, +0x122f3840,0x840039e9,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,0x10924941, +0x1081c940,0x9000891c,0xc1002c25,0x00924725,0x00000000,0xb80005f9,0xc10000e1,0xe8000084, +0xc10000f1,0x04e03810,0x00000000,0xc10000f5,0x120efc04,0x120e7d05,0x00000000,0x032ebb0a, +0x108e3c05,0x120e3841,0x122ebe04,0x122f3840,0x122e3a05,0x008e390c,0x008e7ae1,0x108e3d04, +0x840038e5,0x120e3840,0x032e7b09,0x122eb841,0x120e3a05,0x008e380d,0x00000000,0x840038e5, +0x00000000,0x00000000,0x032fbb09,0x108e3a05,0xe8ffffa0,0x120e3841,0x04803c10,0x122f7841, +0x00000000,0x900005f9,0x1091c741,0x00000000,0xb800871d,0x07000102,0x10824741,}; + +/* cga */ +unsigned long rp_fw_cga[] = { +0x8ae3fe80,0x03403432,0x14020004,0x00000002,0x00000000,0xa1100000,0x00000000,0x0001a000, +0x00140000,0x9022a964,0x00000000,0xa0020001,0xa8200003,0x80000320,0x28400206,0x01000000, +0x88140000,0xa0000010,0x00000143,0x00000000,0x40000000,0x00000190,0x001ac000,0x42200000, +0x0064c000,0x00400000,0x00000000,0x35400000,0x00002804,0x00001a08,0x000140c0,0x00000000, +0x0421d000,0x00000000,0x00000000,0x805fa000,0x0febfffa,0x02802cf3,0x64022800,0x10000802, +0x00ce6820,0x8c980800,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x01815000, +0x00010000,0x80000010,0x00200606,0x00000038,0x00000000,0x48000000,0x00000103,0x00000000, +0x04a40000,0x00000000,0x00000000,0x19300000,0x00000000,0x0010a700,0x00000000,0x00000000, +0x00006810,0x80100000,0x00000000,0x01930000,0x0541a000,0x00002000,0x00000000,0x00000000, +0xc2fffffa,0x038a3022,0x00000650,0x00000100,0x0c002830,0x00000800,0x00000801,0x00040000, +0x00000a01,0x90209020,0x00000000,0x00000100,0x07400000,0x40002400,0x00102287,0x04304000, +0x00000800,0xa8000400,0x00000143,0x00000000,0x34080000,0x00a80000,0x00000000,0x00000000, +0x41089002,0x010ca000,0x00000000,0x388c22c8,0x00000000,0x00000a04,0x80000600,0x00000000, +0x01204001,0x40000b80,0x00000000,0x00000000,0x26f7f000,0x0a00a2b0,0xf404682c,0x5ea03002, +0x00002810,0x00400000,0x00164001,0xd4000100,0x06301c01,0x9022a964,0x00000000,0x38000009, +0x06602137,0x21590224,0x40000400,0x004000c4,0x20000000,0x10008490,0x00000000,0x00000000, +0x14080740,0x00ec8151,0x000a0172,0x00800000,0xc02c8810,0x00201020,0x00000000,0xa1400000, +0x24006834,0xe0000a01,0x00000a00,0x21090e00,0x80000800,0x00003c01,0x00000000,0x805fa000, +0x2603ffc0,0x01682000,0x6400080c,0x50691046,0x00002810,0x00080000,0x001640b2,0x0000c060, +0x00021c00,0x606c0004,0x00000000,0x36615406,0x066846c3,0x8bd92400,0x42000607,0x00000000, +0x80000000,0x00000410,0x000c4000,0x00000000,0x14024800,0x00a81202,0x000a0000,0x00000000, +0xd02c8002,0x024010c1,0x00000000,0x003e1000,0x02282800,0x000401d1,0x07000000,0x00010d80, +0x00000801,0x00000004,0x00000000,0x00000000,0x26000000,0x0000fa70,0x66b02e58,0x5020d280, +0x00000810,0x00000900,0x00164000,0x0e02c000,0x00000000,0x00200004,0x00000000,0x04039810, +0x074800e4,0x2b910000,0x00200400,0x00000080,0x24000000,0x08908484,0x000a4000,0x00000000, +0x14080e78,0x05048110,0x00000000,0x00800000,0xc8000164,0x00000c00,0x00000000,0xf87f1000, +0x24040004,0x260000d3,0x000002c1,0x00080e00,0x00000000,0x00000c04,0x00000000,0x00000000, +0x00000000,0x00000000,0x43244808,0x50213000,0xf0000000,0x08480003,0x00000000,0x0e040000, +0x00000000,0x00240000,0x00000000,0x307b9200,0x48003617,0x82010000,0x24002286,0x000000b8, +0x24000000,0x40000080,0x00060103,0x00000000,0x14080008,0x05008000,0x00200160,0x00900800, +0x40020164,0x00001000,0x00000000,0x00000000,0x03300000,0x30000110,0x00000e01,0x001b0000, +0x00000084,0x00001804,0x00000000,0x00000000,0xc0000000,0x003e03f9,0x34066818,0x50081000, +0x00000004,0x00080000,0x008c0001,0x0e020000,0x00001b00,0x10800000,0x00000000,0x10800102, +0x48388024,0x320e0330,0x30002000,0x000000d0,0x04020000,0x0b000080,0x000ac000,0x00000000, +0x140a4800,0x09aa0000,0x000ac0f6,0x42000000,0x702c8164,0x00201001,0x00000000,0x00000000, +0x03a06d70,0x60000152,0x00000200,0x0109f700,0x40000001,0x00000003,0x00000000,0x00000000, +0x00000000,0x00000290,0x80044800,0x0a890100,0x00018000,0x00080004,0x000c0109,0x0e042000, +0x00000000,0x04240000,0x00000000,0x00611008,0x04600604,0x0a0003a8,0x28108000,0x0043c0cc, +0x20000000,0x10000080,0x00000000,0x00000000,0x14086818,0x00aa8008,0x00224190,0x00100000, +0x80000164,0x00000400,0x00000000,0x00000000,0x36260020,0x3000015d,0x00000041,0x00010000, +0x00000001,0x00004000,0x00000000,0x00000000,0x00000f40,0x002a0000,0x2418002c,0x50083152, +0x00000000,0x00480000,0x001640b2,0x00040100,0x00000000,0x60a40000,0x00000000,0xb0015c20, +0x48100227,0x0bd10000,0x00042400,0x000000b0,0x24000000,0x08000084,0x000a6000,0x00000000, +0x14024808,0x00008190,0x000c0000,0x00900000,0xc0020000,0x00201020,0x00000000,0x00000000, +0x03a60550,0x40001b90,0x06c000a0,0x20080e00,0xbc01e001,0x00002c00,0x00000000,0x00000000, +0x27000000,0x00000000,0x37300010,0x0aa02800,0x00006800,0x00400000,0x000c2000,0x0d840000, +0x00020000,0x00240004,0x00000000,0x1c020002,0x6e608054,0x1b5d0004,0x18000400,0x000000b8, +0x80000000,0x10008490,0x00060000,0x00000000,0x0002002c,0x05000a04,0x002240e0,0x00100000, +0x00424164,0x000010e1,0x00000000,0x003b1000,0x34060000,0x00000151,0x00001000,0x00000000, +0xb8000001,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00184820,0x5e8840c9, +0x0000000c,0x00080000,0x00164001,0x0d800060,0x00000000,0x10800000,0x00000000,0x20020008, +0x48200903,0x0bdd27a6,0x00000000,0x00000060,0x04020000,0x03000400,0x00000000,0x00000000, +0x00002f40,0x00000151,0x08224120,0x42000000,0xf8000164,0x00200a00,0x00000000,0x00000000, +0x37360000,0x00000154,0x000004e0,0x24200d80,0x38000001,0x00003804,0x00000000,0x00000000, +0x0003e000,0x0a00e000,0xf7344824,0x90488802,0x00006d48,0x00480000,0x001640b2,0x0d86a000, +0x00000000,0x90840004,0x00000000,0x00600110,0x80000600,0x0a040331,0x1b800000,0x00200000, +0x24000000,0x10000080,0x00060000,0x00000000,0x3410483c,0x05cb0a06,0x00180192,0x00000000, +0x78004164,0x00200401,0x00000000,0x003e1000,0x03300030,0x8008011c,0x06c00000,0x20000e00, +0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x0002f800,0xe4160440,0x901061d8, +0x00c02810,0x00000010,0x008c00b2,0x000640c0,0x00000f00,0x20208004,0x00000000,0x10220006, +0x00080824,0x20001620,0x4c908000,0x002800b0,0x24000000,0x00021000,0x000c0000,0x00000000, +0x1720082c,0x00000154,0x00000160,0x00800000,0x81180000,0x00001001,0x00000000,0xe0400f84, +0x00100820,0xc00121d1,0x06c00600,0x00080f80,0x80000800,0x00183c03,0x00000000,0x00000000, +0x00f80000,0x003e0000,0xf4100648,0x904004c8,0x00014810,0x21000004,0x00000460,0x0c0400a0, +0x000c1b00,0x20200004,0x00000000,0x240b1020,0x48300226,0x820003a4,0x10108207,0x00000000, +0x80000000,0x07000090,0x000a2000,0x00000000,0x0408480c,0x05021351,0x000e8160,0x10900000, +0x802c88c0,0x00000841,0x00000000,0x00391f84,0x37382810,0x68080150,0x01c02300,0x20080000, +0x00000821,0x00003c80,0x00000000,0x00000000,0x7e03f000,0x0038000f,0xc4160760,0x00100018, +0x00002800,0x00480000,0x00010460,0x00020100,0x000a1b00,0x00240004,0x00000000,0x241a0608, +0x0020b003,0x220007a6,0x1c802000,0x00400080,0x80020000,0x1c000410,0x00060000,0x00000000, +0x14100010,0x05cb0154,0x08200000,0x42000000,0x302c8000,0x00000a01,0x00000000,0xf87f1e04, +0x14100758,0x40160209,0x05c00200,0x04200000,0x81000800,0x00000003,0x00000000,0x00000000, +0x2703ffc0,0x003f0000,0xe4004f5c,0x00307348,0x0000e80c,0x21000008,0x00840000,0x0003a080, +0x00000000,0x20200004,0x00000000,0xb00a0032,0x6e401603,0x21510006,0x10108000,0x00280080, +0x24040000,0x19021000,0x000c0000,0x00000000,0x152e0e6c,0x01cb0bd6,0x00200060,0x42000000, +0x80000002,0x00000840,0x00000000,0x003d1e84,0x24182838,0x6e170190,0x00004500,0x30090100, +0x80000800,0x00082384,0x00000000,0x00000000,0x80000ffe,0x00000393,0x24160660,0x503100c6, +0x00016d74,0x00480000,0x98840001,0x0006006c,0x00040000,0x10801080,0x00000000,0xa6720106, +0x482c4283,0x920803a0,0x14802206,0x003000c0,0x80000100,0x13800410,0x00060000,0x00000000, +0x17af2808,0x05010390,0x000c00c0,0x00801000,0xf0024002,0x00401000,0x00000000,0xfc400e44, +0x27b02f64,0xc0171206,0x00000500,0x00080080,0x00000c84,0x00000004,0x00000000,0x00000000, +0x00fbffc0,0x0000ffe0,0x962c080c,0x10703242,0x00014b78,0x00480008,0x00002001,0x0d84a0e0, +0x00000000,0x108100f0,0x00000000,0x18015320,0x482c1324,0x92080000,0x28108206,0x002b0480, +0x24000000,0x49b21000,0x000a0103,0x00000000,0x2400480c,0x05020002,0x000ec116,0x00101000, +0x40000164,0x00400901,0x00000000,0xfc400000,0x27bc0008,0x6e000a00,0x00000700,0x00090000, +0x00000884,0x00102000,0x00000000,0x00000000,0x0003ffc0,0x003eff80,0xf4004f48,0x50303886, +0x00012a64,0x00480000,0x00012009,0x00060000,0x00000100,0x10800004,0x00000000,0x046a0406, +0x6e6c04e4,0x0a060000,0x14802000,0x00100060,0x04000000,0x46b00400,0x00060103,0x00000000, +0x24104828,0x09001b93,0x08290112,0x00801000,0xf1080000,0x00400c00,0x00000000,0xe07e1000, +0x03b84c58,0xc0010a01,0x00000700,0x04200000,0x0201e084,0x00003803,0x00000000,0x00000000, +0x00fbffc0,0x0039fbd0,0x241e6838,0x9030d889,0x00014952,0x00480008,0x00012009,0x0004a100, +0x00000000,0x10808004,0x00000000,0x10015422,0x074c0224,0x9201240e,0x38108206,0x00400060, +0x24040000,0x4cb21000,0x000a0103,0x00000000,0x24106800,0x05888192,0x000c0080,0x42001000, +0x40004002,0x00400801,0x00000000,0xfc400000,0x03b80008,0x60010a04,0x00000700,0x10090000, +0x38000884,0x00100984,0x00000000,0x00000000,0x0003ffc0,0x00000000,0x44062e4c,0x50600006, +0x0000e974,0x00480008,0x18840420,0x0d860024,0x00000000,0x00040004,0x00000000,0x100a0636, +0x07703474,0x820c1404,0x10108206,0x00000060,0x04000000,0x46821000,0x000a0103,0x00000000, +0x24126838,0x01040000,0x000c0094,0x00801000,0xc0424164,0x000010e0,0x00000000,0xf47e1000, +0x03b80548,0x20170a01,0x00400701,0x00090080,0x00000884,0x00100000,0x00000000,0x00000000, +0x3e03ffc0,0x00000000,0xf4066800,0x50311200,0x00012804,0x00480000,0x008400b2,0x000400c0, +0x00040000,0x000500f0,0x00000000,0x0e720022,0x000c8214,0x8a0c03a0,0x19002206,0x000000c0, +0x80040000,0x46800490,0x00040103,0x00000000,0x14044f4c,0x000001dc,0x08260000,0x42001000, +0xf0000000,0x00001001,0x00000000,0xf8400000,0x03b82e69,0xc0070a05,0x06c00600,0x14200080, +0x00000084,0x00003800,0x00000000,0x00000000,0x3efbffc0,0x00000000,0x0416082c,0x5c88c063, +0x00000000,0x21000000,0x98164000,0x0001a0d0,0x00000100,0x00040004,0x00000000,0xa00a0606, +0x68009067,0x92080000,0x28000606,0x00300080,0x24040000,0x49800080,0x0008a103,0x00000000, +0x24126838,0x0000019e,0x00000060,0x42001000,0x01080000,0x00000400,0x00000000,0x00000000, +0x27bc0648,0x20150201,0x00004601,0x00090d80,0x80000084,0x00004802,0x00000000,0x00000000, +0x0003fffe,0x00000000,0xc006481c,0xd00800c6,0x00002810,0x21000000,0x00000001,0x00010020, +0x00000100,0x002500f0,0x00000000,0xa7615122,0x04402107,0x81920006,0x12800606,0x00000000, +0x00000000,0x4c800080,0x00000103,0x00000000,0x04b64800,0x05021a00,0x002e0120,0x10900800, +0xf1080012,0x00000400,0x00000000,0xf8400000,0x041c4820,0xc0112000,0x000044c0,0x00010000, +0x00000c84,0x00002400,0x00000000,0x00000000,0x8003ffc0,0x0000000f,0x00066c70,0x5cc00010, +0x00012801,0x00480000,0x00164001,0x00040080,0x00000000,0x00040004,0x00000000,0x000b9100, +0x00300024,0x81d00320,0x00000606,0x00104454,0x24000000,0x49800084,0x00040103,0x00000000, +0x24004808,0x09008192,0x00000040,0x00100000,0x00024000,0x000006e0,0x00000000,0x003e1000, +0x00002818,0xb0172000,0x000010c0,0x11090d80,0x08000000,0x00002803,0x00000000,0x00000000, +0x3e03ffc0,0x0000fc05,0x00066e78,0x9058c040,0x00018550,0x08480000,0x18000001,0x00010000, +0x00000100,0x00040024,0x00000000,0x16220106,0x07400034,0x8b960010,0x10002206,0x00000000, +0x00020000,0x4c808480,0x00000103,0x00000000,0x34100448,0x00000204,0x002c0000,0x42000012, +0xf1080212,0x00001000,0x00000000,0xfc7e1000,0x03200008,0x80130a02,0x00000600,0x28010000, +0x0241e001,0x00002000,0x00000000,0x00000000,0xa7fbffc0,0x000003ff,0x0006074c,0xdcc090c4, +0x00010008,0x21000000,0x00002801,0x00040100,0x00000100,0x000120f0,0x00000000,0x06600032, +0x07708634,0x80030320,0x28000606,0x00000040,0x24000000,0x49800084,0x00000103,0x00000000, +0x24080800,0x05000192,0x002080b6,0x00100000,0x01080000,0x000006e0,0x00000000,0x00000000, +0x24040558,0xb0011200,0xc6002300,0x00010000,0x00000000,0x00002800,0x00000000,0x00000000, +0x0a03ffc0,0x000000f0,0x24006838,0xdcf00810,0x00004800,0x00480000,0x000c00b2,0x000600a0, +0x05100100,0x00000004,0x00000000,0x061a0202,0x07700024,0x93d202a8,0x4a802206,0x000000b0, +0x04000000,0x498004a0,0x000a0103,0x00000000,0x1410480c,0x05020002,0x00000100,0x00100800, +0x91080000,0x000006e1,0x00000000,0x00000000,0x24100018,0x80130a01,0x06c00620,0x00010000, +0x00000084,0x00001800,0x00000000,0x00000000,0x3a03ffc0,0x00040100,0x02360e40,0x0e981981, +0x00000268,0x00480000,0x000000b2,0x0005c060,0x00000000,0x00040004,0x00000000,0x00020020, +0x05700200,0x819207a4,0x29000606,0x000800c0,0x20000000,0x48908480,0x000a0103,0x00000000, +0x0001cf48,0x09010b90,0x00000180,0x00100000,0x88004000,0x00000a00,0x00000000,0xe47f1000, +0x03300009,0x80150002,0x07000600,0x31090000,0x00000021,0x00003800,0x00000000,0x00000000, +0x0b03ffc0,0x0eff0000,0x24066c4c,0x0cd00004,0x00000020,0x00080000,0x980000b2,0xb400010c, +0x00000000,0x00040004,0x00000000,0x22135038,0x4f602036,0x9a031408,0x18000606,0x00030040, +0x24000000,0x49800084,0x000a0103,0x00000000,0x24a0876c,0x058b0004,0x00080000,0x00800000, +0xf0005002,0x000006e1,0x00000000,0xec7e1fc4,0x03240448,0x86190005,0x07001000,0x20080000, +0x00000800,0x00001800,0x00000000,0x00000000,0xcd03ff80,0x003ee00f,0x34000778,0x00193140, +0x00004800,0x00080000,0x00164000,0xb4040000,0x00000000,0x000500f0,0x00000000,0x1e235904, +0x07700104,0x819e0000,0x28002606,0x000300b0,0x24020000,0x49800484,0x000a0103,0x00000000, +0x000c4c50,0x00ee0152,0x00000180,0x42000800,0x80005002,0x00000a01,0x00000000,0xe8400000, +0x00044d48,0x20130a00,0x00000001,0x00080e00,0xcd01e084,0x00004001,0x00000000,0x00000000, +0x4c000f80,0x0000011e,0x07bc680c,0xdc900010,0x00000000,0x00000000,0x000000b2,0x0e050060, +0x00000000,0x00040000,0x00000000,0x06600d08,0x2f4d3034,0x9b922406,0x10000606,0x000000d4, +0x20000000,0x4c900080,0x000c0103,0x00000000,0x00004c60,0x05020000,0x000a4180,0x00100000, +0xc0004164,0x00040600,0x00000000,0xe4400000,0x03204808,0x90010004,0x07000000,0x20010000, +0x0501e021,0x00001800,0x00000000,0x00000000,0x3903ef80,0x0003f400,0x02204f4c,0x90700082, +0x00000008,0x00000000,0x000100b2,0x000500e1,0x00000000,0x20200004,0x00000000,0x01815020, +0x4f6c0234,0x920e3404,0x49002606,0x000000c0,0x24000000,0xcc900084,0x00000103,0x00000000, +0x00004c72,0x00ca1b9c,0xe02c0180,0x00800010,0xf8004000,0x000c0c00,0x00000000,0xfc7e1000, +0x03344c58,0xe6000110,0x07001000,0x24080000,0x00000001,0x00001c83,0x00000000,0x00000000, +0xff03ef80,0x0fc081cf,0xf406002c,0x0c913040,0x00802834,0x00080000,0x001640b2,0x000520c0, +0x00000000,0x902200f0,0x00000000,0xa6639100,0x07630903,0x000a2406,0x48042400,0x000000a0, +0x24000000,0xc9000084,0x00000103,0x00000000,0x00004c60,0x05000192,0x00000000,0x00100000, +0xf8020002,0x240406c0,0x00000000,0xf4400000,0x03a40658,0xb2010000,0x07001080,0x20080e00, +0x40000800,0x00001803,0x00000000,0x00000000,0x1d03e000,0x000087f0,0x47b84f4c,0x50304880, +0x00004800,0x08480000,0x00000000,0x00066000,0x00000000,0x10200004,0x00000000,0x063b5002, +0x06700274,0x8b940321,0x4c002207,0x002000d0,0x24000000,0xc9108484,0x000c0103,0x00000000, +0x15200f70,0x05ee819e,0x002c0130,0x00800800,0xb8004010,0x480c0e01,0x00000000,0xe0400000, +0x00060000,0xe0000000,0x00000400,0x00010000,0x00000084,0x00001c00,0x00000000,0x00000000, +0xde03ef80,0x003e8ec7,0x04060e6c,0x5008f050,0x00c04860,0x00080000,0x00164009,0xb005c000, +0x00001c01,0x00040000,0x00000000,0x06000436,0x00323874,0x00022405,0x49000400,0x001800d4, +0x24000000,0xc0000084,0x00080103,0x00000000,0x14122800,0x05069a08,0x000000a0,0x00900000, +0x882c8810,0x00000001,0x00000000,0x00000fc4,0x03a00444,0x8a182190,0x000010e0,0x20080e00, +0x00000821,0x00000001,0x00000000,0x00000000,0x12000f80,0x0000fd30,0x3626680c,0x500303c9, +0x00c06820,0x00480000,0x000000b2,0x00030000,0x00000000,0x00048004,0x00000000,0x06035808, +0x04403000,0x9a0003a0,0x40002607,0x000000cc,0x20000000,0x09600000,0x000c8000,0x00000000, +0x2400482c,0x010403d7,0x00270180,0x00800000,0xc0000002,0x000c0641,0x00000000,0xfc400f84, +0x00002800,0xa818c002,0x07000000,0x01090000,0x38000801,0x00001803,0x00000000,0x00000000, +0xce000000,0x00003d6f,0x37260f7e,0x90013000,0x0001c804,0x00000000,0x002120b2,0x0e000000, +0x00001c00,0x04240000,0x00000000,0x00320100,0x68103040,0x81940330,0x40002207,0x000000c0, +0x24000000,0xc9c00484,0x000ca103,0x00000000,0x24100f48,0x0d0101dc,0xe00800a0,0x00100007, +0xa82c8164,0x00080641,0x00000000,0x00000000,0x17ae4c60,0xa8000190,0x07000000,0x24080000, +0x00000001,0x00000000,0x00000000,0x00000000,0x17000000,0x00380140,0x34182f4c,0x904000c8, +0x0001c808,0x00080000,0x001640b2,0x000000c1,0x00000000,0x00200000,0x00000000,0x00015038, +0x48003234,0x0b920230,0x18002000,0x000000c0,0x20000000,0xc0000480,0x00080103,0x00000000, +0x0010680c,0x00c80000,0x00000120,0x00000000,0xf0000000,0x00001000,0x00000000,0xfc400000, +0x00082818,0x8e001202,0x07000400,0x00010e00,0x00000001,0x00003800,0x00000000,0x00000000, +0x9803e000,0x003e0396,0x3418081c,0x90400116,0x0001c838,0x00080000,0x000000b2,0x00020000, +0x00001c00,0x000620f0,0x00000000,0x18035900,0x00000904,0x00060006,0x4b802400,0x0000004c, +0x24000000,0x00000084,0x00080000,0x00000000,0x00000830,0x09050a02,0x04200180,0x00000000, +0x002c8002,0x00000c01,0x00000000,0xe0400000,0x03a64d50,0xc4101212,0x07000060,0x24200000, +0x00000000,0x00000000,0x00000000,0x00000000,0x21000000,0x003891b0,0x3416680c,0x10300081, +0x0001a820,0x08480000,0x001640b2,0xd40660e0,0x00000001,0x24240000,0x00000000,0x00615d00, +0x680c3134,0x20000018,0x21842400,0x000000cc,0x04000000,0x00000080,0x000a0000,0x00000000, +0x24006800,0x00ed9a0c,0x00000130,0x00100000,0xc0001002,0x00001080,0x00000000,0x00000000, +0x02204808,0x02160b92,0x07000421,0x00080e00,0x00000001,0x00001804,0x00000000,0x00000000, +0x15000f80,0x003f0190,0x47a60f5c,0xd0003302,0x00014810,0x00480000,0x000000b2,0x0e0280e0, +0x00000000,0x00040004,0x00000000,0x1c015d36,0x2e6b2024,0x2b900320,0x20002000,0x000000d0, +0x24000000,0x00008484,0x0006a000,0x00000000,0x3404680c,0x09010000,0x002c00a0,0x00900000, +0x18004164,0x00001041,0x00000000,0xfc781000,0x03a64820,0x4e000a06,0x07000400,0x20080000, +0x00000021,0x00004c00,0x00000000,0x00000000,0x20000000,0x003f0190,0x00000000,0x90004802, +0x00014820,0x00080000,0x001640b2,0x00000000,0x00000000,0x00240004,0x00000000,0x042b9102, +0x68200014,0x120e3400,0x10002000,0x003800d4,0x24000000,0x09b00404,0x00000000,0x00000000, +0x2400481c,0x00c90194,0x002240a0,0x00800000,0x40020000,0x000c1040,0x00000000,0x00000000, +0x00064820,0x00061315,0x07000200,0x00010e00,0x38000001,0x00003803,0x00000000,0x00000000, +0x00000000,0x00000230,0xc3a6045c,0x901008c2,0x0001a820,0x00080000,0x001640b2,0x0e020060, +0x00001c00,0x00000000,0x00000000,0xa07a0120,0x000c0007,0x22000404,0x21000000,0x00400000, +0x24000000,0xc6000404,0x000a2103,0x00000000,0x00042f78,0x00010003,0x00000120,0x00000000, +0xc02c8164,0x000010c1,0x00000000,0x00000000,0x03a00444,0x000c0a00,0x07000461,0x20080e00, +0x38000821,0x00001804,0x00000000,0x00000000,0x2103e000,0x00009ba0,0x3626074c,0x0cc00000, +0x00012e44,0x08480000,0x000000b2,0x0e01c000,0x00001c00,0x04240004,0x00000000,0x06420e04, +0x07403624,0x21d42409,0x40000400,0x00380084,0x20000000,0x10000400,0x00000000,0x00000000, +0x2400680c,0x0dcf01d2,0x00230000,0x00100000,0xf02c8164,0x000010c1,0x00000000,0x003f1f84, +0x00020648,0x30001356,0x070002c1,0x00080000,0x00000800,0x00001800,0x00000000,0x00000000, +0x1f03e000,0x0e40979e,0x2418074c,0x00111000,0x00c06801,0x00480000,0x00164000,0x00060000, +0x00001c00,0x40040000,0x00000000,0x00015238,0x077c0004,0x01980327,0x43802400,0x000000a0, +0x24000000,0x07008484,0x000ca000,0x00000000,0x0014080c,0x00cd8000,0x000000a0,0x10900000, +0xd02c8000,0x6c0010c0,0x00000000,0xe0400000,0x02204820,0x08160209,0x000004e1,0x00010e00, +0xb8000801,0x00000001,0x00000000,0x00000000,0x1a000000,0x00000150,0x03a0000c,0x9000cb06, +0x00c0e838,0x00400000,0x000000b2,0x00020000,0x00000000,0x00200000,0x00000000,0xb0039100, +0x07700003,0x920207a0,0x31002607,0x000000c4,0x24000000,0x10000400,0x000a0000,0x00000000, +0x00006800,0x008c1202,0x002400a0,0x00148000,0xc0000010,0x00000001,0x00000000,0x00000000, +0x02a02800,0x2e18120c,0x07000e01,0x01090000,0x38000081,0x00003c03,0x00000000,0x00000000, +0x3803e000,0x003ef390,0x03be044c,0x90110003,0x00004800,0x20400000,0x000020b2,0x0e01c0e0, +0x01b00000,0x2426a0f0,0x00000000,0x004a0008,0x0d443000,0x819836b9,0x0b802207,0x00280000, +0x20000000,0x10000090,0x00000000,0x00000000,0x00066830,0x0000019b,0x00080000,0x00100000, +0x00020164,0x00000c00,0x00000000,0xf8400000,0x03a60544,0xe0101a08,0x070908a0,0x21090000, +0x00000021,0x00003804,0x00000000,0x00000000,0xa3000000,0x003ff808,0x34060740,0x905901c0, +0x00c06838,0x00400000,0x00840000,0x0e02c000,0x00001c00,0x20240004,0x00000000,0x06000128, +0x00300524,0x20000006,0x28000400,0x00280060,0x00000000,0x00000080,0x000c0000,0x00000000, +0x25a0680c,0x00ea0000,0x000ac136,0x10900000,0x802c8164,0x00000c00,0x00000000,0x00000fc4, +0x00064820,0x20100190,0x00000d01,0x00080080,0x00000800,0x00000000,0x00000000,0x00000000, +0x40000000,0x003fe629,0x373c680c,0x90588050,0x00002830,0x00400a20,0x002120b2,0x0005c080, +0x00000000,0x20240000,0x00000000,0xa00a0300,0x0f5c1003,0x800003a0,0x13902207,0x00400060, +0x04000000,0x10000080,0x0006c080,0x00000000,0x3416080c,0x0d058392,0x002c0120,0x10900000, +0xd0000000,0x00000241,0x00000000,0x00000f84,0x03a02e49,0x20000196,0x07000481,0x20010000, +0x38000800,0x00003803,0x0000002d,0x00000000,0x00000000,0x00000240,0x74060544,0xd0401346, +0x00004b40,0x00400000,0x800020b2,0x0e03c0e0,0x00000000,0x04240004,0x00000000,0x06000d00, +0x003c0600,0x01920018,0x38000400,0x000000d0,0x24000000,0x13008480,0x000c0080,0x00000000, +0x34060004,0x09001358,0x00200000,0x00800000,0x70004164,0x00000e61,0x00000000,0x00000fc4, +0x03b82e64,0x0018019e,0x070010c1,0x00080000,0x00000801,0x00004800,0x00000024,0x00000000, +0x2403e000,0x09ff0390,0xf416074c,0x0c803902,0x00004809,0x00400fc0,0x00164000,0x00004060, +0x00000000,0x102220f0,0x00000000,0xa001d002,0x68000303,0x3b5c0000,0x48102000,0x00400000, +0x20000000,0x10000400,0x000c8000,0x00000000,0x34066d54,0x01c9000c,0xc0224140,0x10900006, +0x80004000,0x7e000c61,0x00000000,0xe0400000,0x03a62804,0x30100002,0x00000621,0x24080e00, +0xc0000001,0x00001804,0x00000000,0x00000000,0x22000000,0x00250250,0x34196c4c,0x00007006, +0x00006e78,0x08480000,0x00164408,0x000340ec,0x02401c00,0x00200004,0x00000000,0x04615008, +0x680c0040,0x33de36a8,0x48002000,0x000000c0,0x20000000,0x08000410,0x00060000,0x00000000, +0x353c281c,0x00ee0002,0xc0224120,0x00800006,0xc02c8212,0x00001000,0x00000000,0xfc400e84, +0x03260441,0xc0001350,0xb4001000,0x24080e00,0x00000800,0x00000003,0x00000000,0x00000000, +0x3f03e000,0x000003d0,0x03a6480c,0x50400309,0x0001280c,0x20400000,0x80164001,0x0e05c00a, +0x00000000,0x000600f0,0x00000000,0x38615130,0x074c0937,0x120203a6,0x1b842400,0x00402000, +0x20000000,0x10000080,0x00000000,0x00000000,0x00100830,0x00070000,0x40140120,0x0086c002, +0xc0000164,0x00000c01,0x00000000,0xf4400000,0x02a80448,0x20000098,0x000902c1,0x04080e00, +0x38000081,0x00003004,0x00000000,0x00000000,0x3903ef80,0x0aa7ee60,0xc41e6808,0x00004012, +0x00004b48,0x08480000,0x001640b2,0x0e0200c0,0x03f00000,0x902280f0,0x00000000,0x1c0a0106, +0x2f4c00f4,0x0192032e,0x42000400,0x004000d4,0x20000000,0x00000090,0x00000000,0x00000000, +0x25b80030,0x00c80154,0x00000000,0x00800000,0xf0004164,0x00201081,0x00000000,0xfc400000, +0x04040e48,0x0e001a0a,0x07000a01,0x00080e00,0x1441e000,0x00003c84,0x00000000,0x00000000, +0x80fc0000,0x097f9e3e,0x83a04810,0x900041c0,0x00004818,0x00080000,0x00000000,0x0e032000, +0x00000000,0x60a40004,0x00000000,0xa6135600,0x074c04c3,0x01920000,0x43802400,0x000000d4, +0x24000000,0x09008484,0x000c8000,0x00000000,0x341c4804,0x00c913d0,0x00160060,0x00100000, +0xe0020164,0x01e010e1,0x00000000,0xa8b91fc4,0x36200460,0x2000009b,0x00000201,0x00080000, +0x00000801,0x00003800,0x00000000,0x00000000,0x0003f000,0x0000e3f0,0x34066c4c,0x9ef00003, +0x0001c820,0x00080000,0x00164001,0x0005c000,0x00001c00,0x04240000,0x00000000,0x06135900, +0x48303040,0x01dc0000,0x23800400,0x1c400040,0x20000002,0x10000400,0x00000000,0x00000000, +0x24000000,0x05e90198,0x002e00a0,0x00800000,0xc02c8000,0x000010e1,0x00000000,0x00000000, +0x03260800,0x201013da,0x000004c1,0x20090e00,0x80800821,0x00001803,0x00000000,0x00000000, +0xcdf7ef80,0x00004cc2,0x00004800,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000c, +0x00000000,0x00009020,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000008c0,0x00000000,0x00132000,0x00000000,0x00000000,0x00000000,0x00000000, +0x05218800,0x00000000,0x00000000,0xbf400000,0x00000000,0x00000d30,0x00000008,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x000180c4,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000, +0x01b00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000006,0x00000040,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x20000000,0x00000206,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000008c0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x01900000,0x00000000,0x00000000,0x00000000,0x00008480,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x40000000,0x00000005,0x00000000,0x00000000,0x00000020,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00080000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000c000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00060000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x80000000,0x00000003,0x24000000,0x90000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000034, +0x00000000,0x00000000,0x00000000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x04000f40,0x00000000,0x00040000,0x00040000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002000,0x00000000, +0x34000000,0x00000000,0x90000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x28010000,0x00000005,0x00000000,0x00000000,0x00000000, +0x80fbef80,0x05002c02,0x00006800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80209020,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x02000000, +0x00000100,0x08000000,0x00060000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00080400,0x00000000,0x508b2288,0x00000000,0x00000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x00fc0000,0x00140000,0x0000000c,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x29740000,0x00000002,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xc0000400,0x00000103,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3f400000, +0x0ff7ef80,0x00004cf3,0x00040000,0x00100000,0x00000000,0x80000000,0x00000000,0x00000000, +0x00000000,0x00009020,0x00000000,0x01000801,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000300,0xc0000000,0x00000103,0x00000000,0x00080000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00132000,0x00000000,0x00000000,0x00000000,0x00000000, +0x05418800,0x00000000,0x00000000,0xbf400000,0x40000000,0x00004c04,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000002, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x08a00000,0x00000000,0x00000000, +0x00100000,0x00000000,0x00000000,0x00000000,0x00000000,0x0004a000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x04000000,0x00000000,0x00004800,0x00000000,0x00000800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x20000000,0x00000206,0x00000000, +0x00000000,0xc0000000,0x00000103,0x00000000,0x24004800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0003d000,0x00000040,0x00000008,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x01300002,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000001,0x00000000,0x00000000,0x00800000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00060000,0x00120000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002804,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000002,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80000000,0x00000207,0x00000034,0x00000000,0x00000000,0x00000000,0x00000000, +0x24000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34060000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00004180,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000034, +0x00000300,0x00000000,0x00000000,0x00000000,0x24100000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x34060000,0x00000000,0x00000000,0x00000000, +0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00152c00,0x00000000,0x00000000, +0x00000030,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000054,0x00000000,0x00000000,0x00000000,0x00000000, +0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00180000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00006800,0x00000000,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00002000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x03a00000,0x80000000,0x000000c0,0x20000000, +0x00000021,0x00000000,0x00000000,0x00000000,0x4efbef80,0x05123803,0x34000030,0x00000000, +0x00000030,0x08480000,0x00000000,0x00000000,0x00000000,0x80209020,0x00000000,0xa0000000, +0x00000007,0x00000000,0x00008000,0x01800000,0x00000c00,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x508e2348, +0x00180000,0x00000000,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x00000000, +0xd5ffefbe,0x00143002,0x00060000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000c, +0x00000000,0x69749020,0x00000002,0x01800000,0x00000000,0x00000000,0x00000000,0x06000000, +0x00000300,0x00000000,0x00000000,0x00000000,0x01200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x48000000,0x00000000,0x000c22c8,0x00000000,0x60000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x3f400000,0xcdfbffc0,0x02800c03,0x34000000,0xd0000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x902280c4,0x00000000,0x0001d000, +0x00000034,0x00000000,0x00042400,0x00000000,0x00000000,0x08900000,0x00000000,0x00000000, +0x01a00000,0x00000000,0x00000000,0x00000000,0x00000000,0x01840000,0x00000000,0x28800000, +0x00000000,0x00000000,0x00000000,0x00000000,0x05418800,0x00000000,0x00000000,0x00000000, +0x84d3ff76,0x04ce4c02,0x0004e800,0x00000000,0x00000060,0x80000000,0x00001000,0x00000000, +0x00000000,0x90229964,0x00000000,0x00000001,0x00000600,0x20000000,0x2b800286,0x00300000, +0x00001600,0xc0000000,0x00000103,0x00000000,0x34180000,0x00000000,0x000a0000,0x00000000, +0x00000000,0x00200000,0x00000000,0x4d400e44,0x00000000,0x80000a00,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x805fa000,0x0cffff00,0x02f92950,0x77200000,0x00000000, +0x000a6800,0x00000000,0x00212000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000000,0x00000000,0x00002000,0x00000000,0x00000400,0x08000000,0x00000000,0x00000000, +0x34060000,0x00000000,0x00000000,0x00000000,0x00000000,0x0020a000,0x00000000,0x2c8a2000, +0x00002800,0x001000d6,0x00000000,0x00200000,0x04418800,0x00000000,0x00000000,0x00000000, +0x4edbf000,0x04c04c05,0x00000000,0xd0000000,0x00006830,0x08480000,0x00000000,0x00000000, +0x00000000,0x90229964,0x00000000,0xa0120003,0x00000003,0x00000000,0x00000000,0x00300000, +0x00001600,0x08a00000,0x00000000,0x00000000,0x04060000,0x00000000,0x00000000,0x00000000, +0x00000000,0x0024a000,0x00000000,0x4d400000,0x00020030,0x00000050,0x00000000,0x00000000, +0x00000004,0x00000000,0x00000000,0x805fa000,0x0bfc0f38,0x02842800,0x74000000,0x00184000, +0x00000800,0x80000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x01800800, +0x00000000,0x00000000,0x00000000,0x00000034,0x00000000,0xc0000000,0x00000103,0x00000000, +0x34302800,0x00000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800000, +0x24000800,0x00000004,0x000000c0,0x00000000,0x04418800,0x00000000,0x00000000,0x00000000, +0x00e3ff00,0x050050a0,0x43a10000,0x00000000,0x000a4810,0x00000000,0x01003000,0x00000000, +0x00000000,0x9022a960,0x00000000,0x00000001,0x00000000,0x80000000,0x00000287,0x02302800, +0x00000000,0x00000000,0x00000000,0x00000000,0x34040000,0x00000000,0x00000000,0x00000000, +0x00000000,0x01000000,0x00000000,0x51400000,0x00006c4b,0x00101204,0x00000000,0x08010000, +0x0221e000,0x00000000,0x00000000,0x805fa000,0x17ebffbc,0x059758e3,0x1403a803,0x0ae80000, +0x00000030,0x00000000,0x02000000,0x0e000002,0x00001c00,0x9022a960,0x00000000,0x00000001, +0x00000064,0x80000004,0x00000206,0x08000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00066c40,0x0d000000,0x08180140,0x00000000,0x006c8164,0x00800000,0x00000000,0x59400308, +0x00000758,0x00100008,0x00000000,0x19200000,0x01204400,0x00000000,0x00000000,0x805fa000, +0x80fbdfba,0x02c00002,0x00030808,0x00080000,0x00020000,0x00000008,0x20002001,0x000000d1, +0x00060000,0x90200184,0x00000000,0x04000000,0x04400100,0x80000000,0x00102206,0x08342400, +0x20000000,0x08000010,0x00000000,0x00000000,0x14080030,0x00e9c000,0x04000000,0x00000000, +0x00000000,0x02000000,0x00000000,0x2c800288,0x00000030,0x001700d4,0x00000000,0x14080000, +0x01204400,0x00004000,0x00000000,0x00000000,0x8d03ffc0,0x00002c20,0x24004800,0x1a804002, +0x01020000,0x00000000,0x00000000,0x00000000,0x00000000,0x000100f0,0x00000000,0x000a0000, +0x05400200,0x80000000,0x10000206,0x00422400,0x00000000,0x40800000,0x00000103,0x00000000, +0x34000460,0x00000000,0x001b0166,0x00000000,0xc0004000,0x00000000,0x00000000,0x00192000, +0x00004800,0x6013920c,0x00000000,0x00000000,0x0201e000,0x00000000,0x00000000,0x00000000, +0x0cffffc0,0x03590970,0x24146820,0x10080000,0x00002800,0x00000008,0x023641b2,0x00000000, +0x00040000,0x00000000,0x00000000,0x00200408,0x00040880,0x800003a0,0x00108207,0x00000000, +0x80000000,0x40000010,0x00000103,0x00000000,0x00000000,0x00000000,0x08000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000740,0x00000000,0x07000000,0x04200e00, +0x0201e000,0x00000000,0x00000000,0x00000000,0x40f3ffc0,0x06406573,0x36282c44,0x0c800000, +0x00000800,0x00000000,0x00000000,0x00000000,0x00000000,0x90209044,0x00000000,0x00200002, +0x00000514,0x80000000,0x00000206,0x08000000,0x00002000,0x48000000,0x00000103,0x00000000, +0x00006800,0x00000000,0x00001200,0x00000000,0x00000000,0x00800000,0x00000000,0x00000348, +0x0000680c,0x00061a00,0x00000000,0x00000000,0x39204000,0x00004481,0x00000000,0x00000000, +0xcfe3ffb8,0x064064b2,0x14000742,0xda800002,0x00000008,0x00000000,0x28165000,0x0e0000e1, +0x00000000,0x90229964,0x00000000,0x00000009,0x00000000,0x80000000,0x00000206,0x08302400, +0x00001000,0x40000000,0x00000103,0x00000000,0x00060550,0x00000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x654002c8,0x00000008,0x000000dc,0x00000000,0x10000e00, +0x01204400,0x00004380,0x00000000,0x805fa000,0x57fbfffb,0x028038f3,0x66200000,0x00600000, +0x00022810,0x00000000,0x28000000,0x000000c1,0x00001c00,0x902110f0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000206,0xfc302400,0x0001f4ff,0x40000000,0x00000103,0x00000000, +0x00106e40,0x00880000,0x00000000,0x00000000,0x002c8000,0x02000000,0x00000000,0x28800000, +0x00000000,0x0010000c,0x00000000,0x00000000,0x0221e400,0x00000000,0x00000000,0x00000000, +0x17ffffbb,0x00003170,0x40040000,0x00080006,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00020000,0x07400100,0x80000000,0x00000206,0x00000000, +0x0001fc00,0x40000000,0x00000103,0x00000000,0x34000038,0x50000000,0x000000d6,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00001200,0x00000000,0x00000000, +0x0221e400,0x00000000,0x00000000,0x00000000,0x0ffffffc,0x039734f3,0x00006803,0x0a810000, +0x00006830,0x00000000,0x000011b2,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00300800,0x80000000,0x00000206,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x04060640,0x50000000,0x001b0000,0x00000000,0x00000000,0x02000000,0x00000000,0x388d2308, +0x0000680c,0x00000008,0x07000000,0x00000000,0x39204400,0x00000001,0x00000000,0x00000000, +0xcfe3ffb8,0x064064b2,0x14000742,0xda800002,0x00000008,0x00000000,0x28165000,0x0e0000e1, +0x00000000,0x90229964,0x00000000,0x00000009,0x00000000,0x80000000,0x00000206,0x08302400, +0x00002200,0x40000000,0x00000103,0x00000000,0x00060550,0x00000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x654002c8,0x00000008,0x000000dc,0x00000000,0x10000e00, +0x01204400,0x00004380,0x00000000,0x805fa000,0x57fbfffb,0x028038f3,0x66200000,0x00600000, +0x00022810,0x00000000,0x28000000,0x000000c1,0x00001c00,0x902110f0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000206,0xfc302400,0x0001f4ff,0x40000000,0x00000103,0x00000000, +0x00106e40,0x00880000,0x00000000,0x00000000,0x002c8000,0x02000000,0x00000000,0x28800000, +0x00000000,0x0010000c,0x00000000,0x00000000,0x0221e400,0x00000000,0x00000000,0x00000000, +0x17ffffbb,0x00003170,0x40040000,0x00080006,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00020000,0x07400100,0x80000000,0x00000206,0x00000000, +0x0001fc00,0x40000000,0x00000103,0x00000000,0x34000038,0x50000000,0x000000d6,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00001200,0x00000000,0x00000000, +0x0221e400,0x00000000,0x00000000,0x00000000,0x0ffffffc,0x039734f3,0x00006803,0x0a810000, +0x00006830,0x00000000,0x000011b2,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00300800,0x80000000,0x00000206,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x04060640,0x50000000,0x001b0000,0x00000000,0x00000000,0x02000000,0x00000000,0x388d2308, +0x0000680c,0x00000008,0x07000000,0x00000000,0x39204400,0x00000001,0x00000000,0x00000000, +0x40dfefb8,0x04402ff3,0xb6b00000,0xdc800000,0x00026c6c,0x00000000,0x803640b2,0x0f84a00e, +0x00000000,0x902290d0,0x00000000,0x00000009,0x054020c0,0x81900006,0x30000286,0x0a000000, +0x04001400,0x40000084,0x00000143,0x00000000,0x3406080c,0x00008000,0x00000112,0x00000000, +0x70000164,0x00200600,0x00000000,0x45c00f84,0x00000000,0x60000000,0x07c00200,0x00000f80, +0x0521a000,0x00000000,0x00000000,0xbf400000,0x0d03ef80,0x000048b0,0x00066e60,0x0e980000, +0x0801067c,0x80080008,0x000001b2,0x000000c0,0x00000000,0x000180f0,0x00000000,0xa001d000, +0x00002002,0x81920220,0x20108306,0x08300000,0x20000000,0x40000080,0x00000183,0x00000000, +0x04062804,0x00000000,0x08000000,0x00800000,0xf0000000,0x000010c1,0x00000000,0x00000000, +0x00000800,0x80000000,0x07c00000,0x04200000,0x04c1a000,0x40001800,0x00000000,0x00000000, +0xc0ebef80,0x003c3402,0x00090003,0x00010101,0x10000000,0x80000000,0x00000000,0x000300c0, +0x00001f00,0x000210d0,0x00000002,0x02011000,0x00040000,0x800203a0,0x18000686,0x16384a00, +0x20001400,0x40000400,0x00000143,0x00000000,0x00000008,0x00000000,0x00300178,0x00000000, +0x406c8000,0x00000000,0x00000000,0x00000000,0x00004808,0x80000200,0x00000ac0,0x00010000, +0x0421a000,0x80000000,0x00000000,0x00000000,0x7dfbef80,0x02c02c03,0x36380010,0x10100008, +0x30000740,0x00400000,0x000020b2,0x000000e1,0x00000000,0x902210d0,0x00000000,0xa0011008, +0x2f603002,0x800003b8,0x20000706,0xf4302a00,0x040028ff,0x40000000,0x00000183,0x00000000, +0x34100550,0x00000150,0x00180000,0x00100000,0xc0000000,0x06000601,0x00000000,0x2c800fc4, +0x00002c40,0x24000000,0x07c008e1,0x00010000,0xc221e000,0x00000003,0x00000000,0x00000000, +0x00ffef80,0x00113520,0x24060540,0x0c980100,0x08002800,0x00400000,0x00002000,0x0f800000, +0x00000000,0x697120f0,0x00000002,0x00000008,0x00001840,0x81900220,0x00002286,0x00000000, +0x20000000,0x40000080,0x00000143,0x00000000,0x00024d44,0x00000001,0x0032c0c0,0x00000000, +0x00000164,0x00600000,0x00000000,0x00381e44,0x00006800,0x00000000,0x00000600,0x00010000, +0x8221e000,0xc0000003,0x00000000,0x3f400000,0xfffbffc0,0x02b93402,0x34106800,0x50100000, +0x3800075c,0x28480000,0x00164001,0x0f80c000,0x00000000,0x902290d0,0x00000000,0x20000006, +0x08000002,0x80020000,0x2c000286,0x08000000,0x00001000,0x48000000,0x00060143,0x00000000, +0x03200e64,0x00c80000,0x00660166,0x00000000,0x00000164,0x00800000,0x00000000,0x28800000, +0x24000810,0x00000000,0x00000000,0x00000f80,0x0521a000,0x80004380,0x00000000,0x00000000, +0x0be3fffb,0x00002cd0,0x40000000,0x00084000,0x18000808,0x00000014,0x001641b2,0x00000000, +0x00161f00,0x000660d0,0x00000002,0x00000000,0x00000200,0x80000000,0x00202686,0x12000000, +0x24000c00,0x40000020,0x00000143,0x00000000,0x07b80f40,0x00a80000,0x00310100,0x00800000, +0x002c8000,0x00000600,0x00000000,0xf4400000,0x00040002,0x00001a00,0x07c00000,0x10080f80, +0xc4c1a000,0x00000003,0x00000002,0x38400000,0x83efff80,0x04404403,0x2401cd4c,0x00000002, +0x0000000c,0x00400000,0x00001000,0x00000000,0x00000000,0x90229960,0x00000000,0x26011101, +0x04433002,0x80000000,0x00002306,0x02000000,0x00000600,0x48000000,0x00000183,0x00000000, +0x00060000,0x00000000,0x00181ad6,0x00000000,0x00000000,0x0024a000,0x00000000,0x45400388, +0x0000000b,0x00000000,0x00000000,0x10000000,0x01204000,0x80004280,0x00000001,0x805fa000, +0xc3fbef80,0x03523032,0x00040009,0x00000000,0x30026800,0x00000000,0xaa0021b2,0x000000d0, +0x00001c00,0x90209020,0x00000000,0x00015000,0x00000000,0x80000000,0x00040686,0x02302000, +0x00000400,0xc9000000,0x00000103,0x00000000,0x24000000,0x00000000,0x001ac000,0x00000000, +0x006c8000,0x008c6000,0x00000000,0x348c22c8,0x00006800,0x00100000,0x07000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x8ffbfffc,0x02804924,0x00000000,0x0a800000, +0xc0462e4c,0x00000000,0x00364000,0x00000000,0x00000000,0x902100f0,0x00000000,0x00000000, +0x05403000,0x80000000,0x00000286,0x00000000,0x00000000,0xc8000000,0x00000103,0x00000000, +0x14200000,0x00000000,0x0018c000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800f84, +0x00000003,0x001212d0,0x00000000,0x00000e00,0x0441e000,0x00000000,0x00000000,0x00000000, +0x3efbfffc,0x00c00124,0x02a00000,0x00080002,0x00000348,0x00000000,0x80164000,0x0000000c, +0x00000000,0x000260d0,0x00000000,0x00000100,0x00000000,0x80000000,0x00000207,0x00000000, +0x00000000,0x40000000,0x00000143,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000f84,0x00000800,0x0000000c,0x00000400,0x00000e00, +0x0521a000,0x80000000,0x00000007,0x00000000,0xd0ffffc0,0x00002900,0x00020000,0x0c800000, +0x30000830,0x80080000,0x00000000,0x00000000,0x00000000,0x000280f0,0x00000000,0x00011000, +0x00040000,0x80000000,0x00200686,0x0c000000,0x00000000,0x40000000,0x00000143,0x00000000, +0x00100640,0x00000000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x14000000,0x80000200,0x00000000,0x00000000,0x04c1a000,0x00004381,0x00000003,0x00000000, +0xc3ffffc0,0x04be4003,0x16200800,0x00100000,0x90000000,0x80000000,0x010020b2,0x00000000, +0x00001c00,0x90209020,0x00000000,0x00019000,0x00000004,0x80000000,0x00400706,0x02000000, +0x00000400,0x40000000,0x00000143,0x00000000,0x04000008,0xb0000000,0x00000000,0x00000000, +0x002c8002,0x00800000,0x00000000,0x489023c8,0x00006800,0xf2000000,0x07000260,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x00f7ff40,0x03c03c50,0x00026808,0x0e800000, +0xe0000000,0x00000000,0x02000000,0x00000000,0x00000000,0x9022a960,0x00000000,0x00000001, +0x00000124,0x80080000,0x4ac00286,0x12000000,0x00000000,0xc8000000,0x00000143,0x00000000, +0x00000663,0x00000000,0x00000000,0x00000000,0x00000000,0x00280000,0x00000000,0x3d400000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0421e000,0x40000000,0x00000003,0x805fa000, +0x43fbffc0,0x030c3823,0x00040808,0x08820000,0xe88e0000,0x00000000,0x02000000,0x00000000, +0x00000000,0x9022a0d0,0x00000000,0x04600000,0x00000800,0x80000000,0x00400306,0x00000000, +0x00000000,0xc8000000,0x00000143,0x00000000,0x00000660,0x00000000,0x00000000,0x00000000, +0x00000000,0x12082000,0x00000000,0x30800000,0x00000642,0x00120000,0x00000000,0x00080000, +0x0541a000,0x80000000,0x00000003,0x00000000,0x00fbffc0,0x02ca3003,0x14000000,0x0ac04000, +0x500e0000,0x00000000,0x00000000,0x00000000,0x00000000,0x902290d0,0x00000000,0x00000000, +0x00000024,0x80000000,0x00000287,0x0c000000,0x00000800,0xc8900000,0x00000143,0x00000000, +0x04000660,0x00000000,0x00000000,0x00000000,0x00000000,0x09082000,0x00000000,0x2c800000, +0x00000000,0x00120090,0x00000000,0x00000000,0x0521a000,0xc0000000,0x00000003,0x00000000, +0x0cfbffc0,0x028000c0,0x00000000,0x10000000,0x80000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x902260d0,0x00000000,0x00000000,0x00000900,0x80000000,0x00000287,0x10000000, +0x00001000,0xc0000000,0x00000103,0x00000000,0x34000660,0x00000000,0x00000000,0x00000000, +0x00000000,0x09000000,0x00000000,0x28800000,0x00000000,0x00000298,0x00000000,0x00000000, +0x04c1a000,0x00000000,0x00000000,0x00000000,0x8003ffc0,0x00002802,0x24002808,0x08801000, +0x08000020,0x00000000,0x00000000,0x00000000,0x00000000,0x000290d0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000286,0x08000000,0x00000800,0x40000000,0x00000143,0x00000000, +0x00060660,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000002,0xa0000008,0x00000000,0x00000000,0x0521a000,0x40000000,0x00000001,0x00000000, +0x0afbffc0,0x000000a0,0x40000003,0x00600000,0x18004808,0x00000000,0x80000000,0x00000100, +0x00000000,0x000260d0,0x00000000,0x0013d000,0x00000900,0x92000000,0x00000706,0x0c300000, +0x00002000,0x40000000,0x00000183,0x00000000,0x34000740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00004800,0x00000008,0x00000000,0x00000000, +0x04c1a000,0xc0000000,0x00000001,0x00000000,0x0003efc0,0x00000003,0x34004800,0x00200000, +0x08000008,0x00000000,0x00000000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00000800, +0x00000100,0x80080000,0x00000286,0x18000000,0x00004400,0x40000000,0x00000143,0x00000000, +0x24060660,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004808,0x00000000,0x00000000,0x00000000,0x0421a000,0xc0000000,0x00000000,0x00000000, +0x8003effe,0x00002c02,0x00006800,0x00000000,0x38000000,0x00000000,0x00000000,0x000000c0, +0x00000000,0x000210f0,0x00000000,0x01600c00,0x00003900,0x80000000,0x00000306,0x18300000, +0x00000400,0x40000000,0x00024183,0x00000000,0x00040020,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x003f1000,0x00006828,0x00100000,0x00000000,0x10000000, +0x0521a400,0x40000000,0x00000001,0x00000000,0x0003fffe,0x00003003,0x0400c802,0x00001000, +0x48006e40,0x00000000,0x1a000000,0x000000e1,0x00000000,0x002210d0,0x00000000,0x00000022, +0x00000224,0x80000000,0x00000286,0x1a304420,0x00002800,0x40000000,0x00000143,0x00000000, +0x03a40030,0x00000000,0x01400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004808,0x001001d0,0x00000000,0x00000000,0x0421a400,0xc0000000,0x00000002,0x00000000, +0x8003fffe,0x000b33f2,0x14010000,0x00000000,0x48000008,0x00000000,0x20000000,0x000000e1, +0x00000000,0x000110f0,0x00000000,0x00120000,0x00000800,0x92000000,0x00000286,0x04302400, +0x00000c00,0x40000000,0x00000143,0x00000000,0x00044800,0x00000000,0x01c00000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x03a0000e,0x0000000c,0x00000000,0x30000000, +0x0221e400,0xc0000000,0x00000002,0x00000000,0x8003fffe,0x00003002,0x34038001,0x00000002, +0x50000030,0x00000000,0x98000000,0x000000e0,0x00000000,0x000110f0,0x00000000,0x00000800, +0x00000000,0x80080000,0x00000286,0x08302400,0x00001400,0x40000000,0x00000143,0x00000000, +0x00060740,0x00000000,0x01440030,0x00000000,0x00000000,0x00000600,0x00000000,0x00000000, +0x0006000c,0x800000d0,0x00000000,0x10000000,0x0221e400,0x40000000,0x00000003,0x00000000, +0x0003fffe,0x00003003,0x43226c43,0x00000000,0x70004800,0x00000000,0x18010008,0x000000e1, +0x00000000,0x000110f0,0x00000000,0x00600000,0x00003000,0x81d00000,0x00000686,0x0c382434, +0x00001c00,0x40000080,0x00000143,0x00000000,0x0000002c,0x00000000,0x00064000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000fc4,0x0000000c,0xa000000c,0x00000000,0x10000000, +0x0221e400,0x80000000,0x00000003,0x00000000,0x3f03ffc0,0x00002803,0x0321000c,0x00000002, +0x78000002,0x00000000,0x18010000,0x000000e1,0x00000000,0x000110f0,0x00000000,0x00000000, +0x00000804,0x80030000,0x00000686,0x10382400,0x00003000,0x40000000,0x00000143,0x00000000, +0x34000000,0x00000000,0x000000d6,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x03a04800,0x86000000,0x00000000,0x00000000,0x0221e001,0xc0000000,0x00000003,0x00000000, +0x0003ffc0,0x00003003,0x24090770,0x00000000,0x8000480c,0x00000000,0x00000008,0x00000100, +0x00000000,0x000110f0,0x00000000,0x0001d000,0x00000000,0x80000000,0x00002286,0x12002000, +0x00003400,0x40000000,0x00000143,0x00000000,0x00060000,0x00000000,0x00000020,0x00000000, +0x00000000,0x000006e0,0x00000000,0x003f1000,0x00180000,0x86000000,0x00000000,0x00000000, +0x0221e000,0x80000000,0x00000004,0x00000000,0x0b03fffe,0x00002843,0xc0038743,0x0a800000, +0x80000008,0x00000000,0x00000008,0x000000c1,0x00000000,0x000220f0,0x00000000,0x0001dc00, +0x00002600,0x81d00000,0x00002286,0x04302020,0x00000000,0x40000400,0x00000143,0x00000000, +0x00000640,0x00000000,0x000000c0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80000000,0x00000000,0x00000000,0x04c1e400,0xc0000000,0x00000004,0x00000000, +0x0003fffe,0x003f3003,0x34030003,0x00080000,0x88006808,0x00000000,0x00000001,0x000000c1, +0x00000000,0x000210f0,0x00000000,0x00000c00,0x00003000,0x800c0000,0x00000686,0x10382400, +0x00001000,0x40000000,0x00000143,0x00000000,0x05a00008,0x50000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00000000,0x00000000,0x20000000, +0x0421e400,0x00000000,0x00000005,0x00000000,0x0303ffc0,0x00003003,0x00080000,0x00000002, +0x88000000,0x00000000,0x00001000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00600000, +0x00003000,0x80000000,0x4a800286,0x14382400,0x00000c00,0x40000000,0x00000143,0x00000000, +0x00060000,0x00000000,0x00310000,0x00000000,0x00000000,0x00000600,0x00000000,0x00000000, +0x0000680e,0x80000000,0x00000000,0x00000000,0x0221e000,0x40000000,0x00000005,0x00000000, +0x0003fffe,0x00003003,0x03220000,0x00000008,0xb0002820,0x00000000,0xa8010000,0x000000e0, +0x00000000,0x000210f0,0x00000000,0x0101d000,0x00000034,0x81d00000,0x00002286,0x20300000, +0x00003000,0x40000400,0x00000143,0x00000000,0x00200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000460,0x00000000,0x00000000,0x00006e43,0x00000000,0x00000000,0x00080000, +0x0221e400,0x80000000,0x00000007,0x00000000,0x0003ffc0,0x00003003,0x00000000,0x0c800000, +0xb8002818,0x00000000,0x80000000,0x00000000,0x00000000,0x000110f0,0x00000000,0x01800c00, +0x00000000,0x81dc0000,0x00000286,0x0c384400,0x00002c00,0x40000400,0x00000143,0x00000000, +0x00060000,0x50000000,0x00000000,0x00000000,0x00000000,0x00000460,0x00000000,0x00000000, +0x00000023,0x00000000,0x00000000,0x00000000,0x0421e000,0xc0000000,0x00000007,0x00000000, +0x0003ffc0,0x000030b3,0x64010002,0x0e80c000,0xc0000004,0x00000000,0x80001000,0x000000c0, +0x00000000,0x000260f0,0x00000000,0x00000002,0x00000200,0x81dc0000,0x00000286,0x1c304000, +0x00000400,0x40000400,0x00000143,0x00000000,0x00060740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x80000000,0x00000000,0x00000000, +0x0221e000,0x00000000,0x00000008,0x00000000,0x0003fffe,0x00003003,0x14020000,0x5000c000, +0xc8000000,0x00000000,0x28000000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00000000, +0x00000000,0x800c0000,0x00000686,0x0a302000,0x00001c00,0x40000000,0x00000143,0x00000000, +0x2418080c,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x0421e400,0x40000000,0x00000008,0x00000000, +0x00ffffc0,0x00003000,0x00048000,0x5ee2c000,0xd0000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x4a800286,0x16384400, +0x00003c00,0x40000000,0x00000143,0x00000000,0x00040740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000600,0x00000000,0x00000000,0x00180000,0x80000000,0x00000000,0x00000000, +0x0421e000,0x80000000,0x00000008,0x00000000,0x00ffffc0,0x038034c0,0x00046800,0x5ee20000, +0xd8000000,0x00000000,0x00000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000100,0x81d00000,0x00000686,0x22302000,0x00004800,0x48000080,0x00000143,0x00000000, +0x0000074c,0x00000000,0x00000000,0x00000000,0x00000000,0x12080000,0x00000000,0x388d2000, +0x00000740,0x00000000,0x00000000,0x00080000,0x0221e000,0xc0000000,0x00000008,0x00000000, +0x8bf7ff80,0x03823832,0x0000c804,0x00000000,0x00000270,0x00000000,0x02000000,0x00000000, +0x00000000,0x90229964,0x00000000,0x02000001,0x00000000,0x00000000,0x00000000,0x04000000, +0x00001000,0x08000000,0x00000000,0x00000000,0x01200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00400000,0x00000000,0x39400288,0x24004f41,0x00000090,0x00000000,0x08010000, +0x01204000,0x00000000,0x00000000,0x805fa000,0x8a03ffc0,0x000008c0,0x14000008,0x00000000, +0x00060020,0x00000000,0x00000000,0x00000000,0x00000000,0x0002a0d0,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xc9800000,0x00000103,0x00000000, +0x01b00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002000,0x00000000,0x00000000, +0x0010000b,0x001200d8,0x00000000,0x10000000,0x0541a000,0x00000000,0x00000000,0x00000000, +0x0003ef80,0x00000c20,0x36200000,0x00000000,0x00020000,0x00000000,0x01002000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x80000000,0x00000207,0x00000000, +0x00000000,0xc0000000,0x00000103,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x001023c8,0x00000000,0x0013000c,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0xcdffffc0,0x035030f2,0x24064800,0x00000000, +0x00002840,0x00000000,0x00000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000024,0x80000000,0x00000207,0x04000000,0x00000800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x348c22c8, +0x00004800,0x00000000,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x00000000, +0xa903ff80,0x0c96c84b,0x64040800,0x90080006,0x00000340,0x00400000,0x001640b2,0x0f83c000, +0x00001f00,0x9022a960,0x00000000,0xba000300,0x48000002,0x120802a2,0x18000400,0x480000d0, +0x04000000,0x10000000,0x000c0000,0x00000000,0x01b84838,0x00e99202,0x002e0112,0x00100000, +0x002c8164,0x00200a00,0x00000000,0xc9400b88,0x00040020,0x2a000000,0x07c01041,0x00010f80, +0xc1204001,0x00003983,0x00000000,0x805fa000,0x6f03ffc0,0x02febc05,0x00040004,0x9010c000, +0x00002830,0x00400000,0x001640b2,0x0f868000,0x00001f00,0x20200000,0x00000000,0x080bd800, +0x00088800,0x01920002,0x00002000,0x00000054,0x00000000,0x00000080,0x000c8000,0x00000000, +0x24300008,0x00a88192,0x002e0196,0x00800000,0xc82c8164,0x00000001,0x00000000,0xfc400000, +0x00002e40,0x00000051,0x07c002e0,0x00080f80,0x90000001,0x00004484,0x00000000,0x00000000, +0xdb03ffc0,0x094066fb,0xb7200800,0xd0500000,0x00004820,0x00400000,0x001640b2,0x0f80c000, +0x00001f00,0x00200000,0x00000000,0xa8120000,0x065030c3,0x00020000,0x1c800000,0x00200058, +0x20000000,0x00000000,0x000a0000,0x00000000,0x341c0000,0x00038008,0x00000138,0x00800000, +0x382c8164,0x00001001,0x00000000,0x00000000,0x37200020,0xe0000a06,0x07c010c0,0x00000f80, +0x00000001,0x00003c80,0x00000000,0x00000000,0x4203ffc0,0x0bfcbfbc,0x37366e48,0x9000b052, +0x20004820,0x00400000,0x000000b2,0x0003a000,0x00001f00,0x20200000,0x00000000,0xa2000606, +0x07408002,0x800002b0,0x20000686,0x00000000,0x20000000,0x40000080,0x00000183,0x00000000, +0x15b80000,0x00ac0000,0x002e0000,0x00900000,0x002c8000,0x000010e0,0x00000000,0x00000f84, +0x34184800,0xc0000b14,0x07c00ac0,0x00080000,0x00000801,0x40000000,0x00000000,0x00000000, +0xdf03ffc0,0x08febc0b,0xf41c2800,0xd0710106,0x68004964,0x00400000,0x00164000,0x00000000, +0x00000000,0x20200000,0x00000000,0xa2120302,0x06480042,0x92000002,0x12800706,0x000000d0, +0x00000000,0x40000400,0x000c0143,0x00000000,0x00006800,0x09001200,0x00000000,0x00800000, +0x00000000,0x00000a00,0x00000000,0x00000000,0x041c0008,0x00000a04,0x000000e0,0x00010f80, +0x00000000,0x80003803,0x00000002,0x00000000,0x2f03ffc0,0x087fbc07,0x07380818,0x90000000, +0x80004820,0x00400000,0x00000000,0x0004a0e0,0x00000000,0x24240000,0x00000000,0xa2000200, +0x680c0102,0x80080000,0x0b800286,0x004000b8,0x00000000,0x40000080,0x000c8103,0x00000000, +0x25b84800,0x00030002,0x00000000,0x00000000,0xc8004002,0x00000001,0x00000000,0x00000000, +0x37206810,0x30000b14,0x00000841,0x00080000,0x00000001,0x00000000,0x00000000,0x00000000, +0x0003f03e,0x0800bc00,0x34040800,0x00100010,0x10000000,0x00400000,0x00000000,0x00064000, +0x00000000,0x00200004,0x00000000,0x06e00000,0x00380034,0x80000000,0x13802286,0x00000000, +0x20000000,0x40000000,0x000a0143,0x00000000,0x373c0808,0x00000000,0x001400e0,0x00800000, +0x00000000,0x00000d00,0x00000000,0x00000f84,0x34180830,0x30000a04,0x00000e81,0x00080000, +0x00000c01,0xc0002800,0x00000000,0x00000000,0x0003f000,0x0afebc00,0x37382830,0xd0180046, +0x40000000,0x00400000,0x00a12001,0x0004a060,0x00000000,0x20200004,0x00000000,0x24020000, +0x06400056,0x80000000,0x00002286,0x000044c0,0x00000000,0x40000400,0x0000c183,0x00000000, +0x0018680c,0x00001200,0x00160042,0x00800000,0xf0004000,0x00000000,0x00000000,0xfc400000, +0x341c6800,0x72000a04,0x00000ec0,0x00080000,0x00000000,0x40000000,0x00000002,0x00000000, +0x50fbffc0,0x0a4000be,0x02b84c40,0x00180008,0x70006824,0x00400000,0x00010009,0x0001a000, +0x00000000,0x00200004,0x00000000,0x1a1b9001,0x00080624,0x81900000,0x12002286,0x100000a0, +0x20000000,0x00028480,0x00000000,0x00000000,0x000c000c,0x05000002,0x00000000,0x00800000, +0xb0000000,0x00000200,0x00000000,0x00391000,0x3418680c,0x00000b94,0x00000ae0,0x00000000, +0x0321e001,0x00000000,0x00000000,0x00000000,0x8e03ff80,0x000000d4,0x24010018,0x0e800006, +0x78014800,0x00400000,0x00000000,0x0004c000,0x00000000,0x14240000,0x00000000,0xb6000300, +0x00000026,0x81980320,0x33800286,0x00400058,0x24000000,0x00828480,0x00000000,0x00000000, +0x00a86800,0x000201d0,0x001800c0,0x00800000,0x00000000,0x00000600,0x00000000,0x00000000, +0x34186e70,0x20010bd4,0x000006c1,0x00080000,0x38000001,0x00001401,0x00000000,0x00000000, +0x1503ff80,0x00000130,0x80044808,0x0ef8c010,0x38002b70,0x00400000,0x001640b2,0x0f800060, +0x00001f00,0x00000000,0x00000000,0xb69a0e00,0x00000626,0x93d80010,0x10000706,0x00404040, +0x00000000,0x49000080,0x000a0183,0x00000000,0x05a0680c,0x00000190,0x001800c0,0x00800000, +0x002c8164,0x00000000,0x00000000,0x00000f84,0x00186c74,0x00012a06,0x07c00600,0x10080f80, +0x38000801,0x40001381,0x00000001,0x00000000,0x1703ef80,0x003e0160,0xf4000d58,0x98f80100, +0x58000054,0x28480000,0x181640b2,0x0f8400e1,0x00001f00,0x20200004,0x00000000,0xb69a0f00, +0x00000126,0x9a0c1400,0x00000306,0x04000054,0x00000000,0xc9000000,0x000a8143,0x00000000, +0x2400077c,0x00c80200,0x001800c0,0x00000000,0x002c8164,0x00040400,0x00000000,0xf8781000, +0x26206e72,0x0e012004,0x07c01081,0x25090f80,0x3c21e0a1,0x40000001,0x00000002,0x00000000, +0x9a03ff80,0x002fbdef,0x07b84d50,0x0a9c0000,0x60018000,0x08480000,0x001640b2,0x0f8000c1, +0x00000000,0x002110f0,0x00000000,0xb69b9306,0x4f400027,0x9b133410,0x18002706,0x004040c0, +0x00008c00,0xc9000080,0x00000143,0x00000000,0x05bc054c,0x000413db,0x001800c0,0x50900000, +0x00000164,0x00040401,0x00000000,0xf8400000,0x00106832,0x00120000,0x07c00000,0x00000f80, +0x39000801,0x40004381,0x00000001,0x00000000,0xe503ef80,0x000002af,0x26268660,0x50380726, +0x18010378,0x00000000,0x801640b2,0x0f860100,0x00001f00,0x142610f0,0x00000000,0x101a0f06, +0x682c2700,0x9a0c2400,0x28000287,0x3c304020,0x04004800,0xc9000080,0x00000143,0x00000000, +0xc120081c,0x0dc81a00,0x00300160,0x00000000,0x402c8164,0x00080001,0x00000000,0xf0400000, +0x34006830,0x00000a90,0x07c00000,0x20010f80,0xc421e000,0xc0004383,0x00000005,0x00000000, +0xe203ef80,0x0e0001d0,0x36ac2818,0x00180046,0x88010800,0x00080000,0x001640b2,0x0f8000a0, +0x00001f00,0x000210f0,0x00000000,0x383a0b00,0x08003117,0x9a031732,0x00000286,0x18182080, +0x04003800,0xcc000000,0x000c6143,0x00000000,0xb418281c,0x01e99310,0x00300170,0x00100000, +0x002c8164,0x00100e00,0x00000000,0x00000000,0x17382e70,0x2c121208,0x07c00001,0x20010f80, +0x8421e000,0x40004383,0x00000004,0x00000000,0x2803ef80,0x0f800120,0x03a66d50,0x0aa05107, +0xe801c860,0x00000000,0x001640b2,0x0f820100,0x00001f00,0x00200004,0x00000000,0x1b1b1f04, +0xa8008434,0x9a030000,0x00002287,0x382000a0,0x00000000,0xc8000080,0x000c0143,0x00000000, +0x05a9a81c,0x05001a0c,0x00300160,0x00000000,0x002c8164,0x00101000,0x00000000,0xec7a1000, +0x03a06800,0x80160204,0x07c00a00,0x20000f80,0xc421e000,0x80004383,0x00000002,0x00000000, +0x2c000f80,0x00000260,0x66a24d74,0xd03802c2,0xc0c04808,0x00080000,0x801640b2,0x0f8200ad, +0x00001f00,0x00040004,0x00000000,0x033a0326,0x0f700004,0x9a0f1400,0x00000687,0x00400000, +0x00001f00,0xc9000080,0x0000c143,0x00000000,0x3418281c,0x00021a03,0x00180160,0x00100000, +0x402c8164,0x00040481,0x00000000,0xf8400e04,0x04106c70,0x80120a0c,0x07c00000,0x20010f80, +0xc0000800,0xc0004383,0x00000003,0x00000000,0x2303ff80,0x000002c0,0x03a70664,0x0060f056, +0x1001cb78,0x00000001,0x801640b2,0x0f8600ad,0x00001f00,0x002002c8,0x00000000,0x0a3b1326, +0x0f4c4024,0x8b180408,0x28000687,0x0c000060,0x04001f00,0xc9000400,0x000c2143,0x00000000, +0x34380e50,0x0100000c,0x00300160,0x00100000,0x402c8164,0x00040ca1,0x00000000,0xfc400000, +0x2408074c,0x8008c000,0x07c00000,0x00010f80,0xc421e000,0x00004383,0x00000008,0x00000000, +0x5f03e000,0x003ff98e,0x001a054c,0x100811c6,0x00014808,0x00080000,0x801640b2,0x0f800000, +0x00001f00,0x002002c8,0x00000000,0xa41b5308,0x074c38e6,0x32030000,0x00000421,0x00402000, +0x04000000,0xcb000400,0x00000143,0x00000000,0x00b80f4c,0x0dcd83d0,0x00300170,0x00100000, +0x402c8164,0x00000ca1,0x00000000,0x003f1000,0x34064f72,0xec010a04,0x07c00c00,0x20010f80, +0x80000000,0x40004384,0x00000005,0x00000000,0x0003ef80,0x0000fbc0,0x94000838,0xd0290002, +0x30004828,0x00080000,0x001640b2,0x0f800060,0x00001f00,0x000290f0,0x00000000,0xb0e00720, +0x480c2206,0x82070000,0x18002306,0x324000d4,0x04001000,0x1b000400,0x00000000,0x00000000, +0x34006830,0x05061208,0x00300170,0x00000000,0x002c8164,0x00000900,0x00000000,0x00391000, +0x00060830,0xec000a01,0x07c00000,0x00000f80,0x0421e000,0x00003b04,0x00000000,0x00000000, +0x24000f80,0x0ff80000,0x27a22810,0xd06900c9,0xa0004978,0x00000000,0x001640b2,0x0f800000, +0x00001f00,0x20200004,0x00000000,0x021a0c02,0x00021124,0x920b0000,0x30002287,0x000040a0, +0x00000000,0x14000400,0x00000000,0x00000000,0x3401803c,0x00c91202,0x00320190,0x00000000, +0x282c8164,0x00000c61,0x00000000,0x003f1000,0x03a06802,0x720c0151,0x07c00240,0x20080f80, +0x00000821,0x00004380,0x00000000,0x00000000,0xa1000f80,0x0020ebff,0x07b64d50,0xd0684001, +0x00014829,0x00400000,0x801640b2,0x00000100,0x00001f00,0x24048004,0x00000000,0x3063d306, +0x0f403003,0x2a0303b8,0x13802000,0x1a040080,0x20000000,0x1c000400,0x000c4000,0x00000000, +0x04064820,0x09010a00,0x00320180,0x00000000,0xa02c8000,0x000c1060,0x00000000,0x00000000, +0x3406480c,0x12000000,0x07c00400,0x20010f80,0x3d21e000,0x00000004,0x00000000,0x00000000, +0x6403ef80,0x0000f97f,0x00060574,0xd0680420,0x00000148,0x00080000,0x001640b2,0x0f800100, +0x00000000,0x042610f0,0x00000000,0x00000026,0x0440b054,0x01d80324,0x41002000,0x0fa860a0, +0x20002c00,0xc5000400,0x00000143,0x00000000,0x34ac0800,0x0d004000,0x00324170,0x00000000, +0x40000164,0x00000901,0x00000000,0x00000000,0x00066800,0xe80a0a01,0x07c00000,0x20080f80, +0x0501e000,0x40004384,0x00000008,0x00000000,0x9a03ef80,0x000001df,0x04000804,0xdae81206, +0x01018000,0x00080000,0x001640b2,0x0f800000,0x00001f00,0x000210f0,0x00000000,0xa4fa0300, +0x08000002,0x20031406,0x13802000,0x000000cc,0x04004000,0x10000400,0x000ca000,0x00000000, +0x01b86804,0x00ca1a0c,0x00324172,0x00000000,0xb82c8164,0x00000000,0x00000000,0x00000000, +0x14000810,0x30000001,0x07c00200,0x20080f80,0x80059001,0x00004003,0x00000000,0x00000000, +0x9e03ef80,0x0000fa7f,0x03a00d48,0xd07893c6,0x38014800,0x00400000,0x801640b2,0x0f810061, +0x00001f00,0x00200000,0x00000000,0x3881df00,0x08000077,0x9a000324,0x29802687,0x0f986040, +0x20001f00,0x00000000,0x00000000,0x00000000,0xc1b8074c,0x00000200,0x00320000,0x00000000, +0x582c8164,0x00040ec0,0x00000000,0xfc400f44,0x03b00570,0x30161a08,0x07c004e1,0x00080f80, +0x80000001,0x00001003,0x00000000,0x00000000,0x2d000000,0x0ec000f0,0xc3a62810,0xd0608146, +0x0041cb49,0x00400000,0x00164000,0x0f800001,0x00001f00,0x400422c8,0x00000000,0xa613dc10, +0x68300003,0x3a030000,0x14802000,0x00004000,0x20000000,0xc0000400,0x00080143,0x00000000, +0x00a8003c,0x09070000,0x001800e0,0x00100000,0x382c8164,0x009004c1,0x00000000,0xe0400000, +0x03200010,0x00000a04,0x00000001,0x20080f80,0x00459000,0x80001404,0x00000005,0x00000000, +0xb803ef80,0x000003ef,0x00000554,0x50088300,0xd800c808,0x00000000,0x00164001,0x0f838000, +0x00001f00,0x000660f0,0x00000000,0x00020328,0x0e701600,0x92032404,0x00000687,0x0f9c6000, +0x20006800,0xc0008480,0x00000143,0x00000000,0x1408000c,0x09040000,0x00000170,0x00000000, +0x402c8164,0x00001040,0x00000000,0xec7c1e04,0x00142830,0xce0e0a04,0x00000840,0x00080f80, +0xc541e000,0xc0000003,0x00000004,0x00000000,0x1d03e000,0x0e3ff800,0x34064804,0x90190200, +0x00018008,0x00400000,0x000000b2,0x0f81a080,0x00000000,0x000290f0,0x00000000,0x241a0838, +0x68040703,0x20003730,0x13802000,0x000000a0,0x04007c00,0x00000400,0x00000000,0x00000000, +0x0000680c,0x0dcc01d8,0x002c0174,0x00800000,0x40000164,0x00000001,0x00000000,0x00000000, +0x00066800,0x26161204,0x07c01001,0x00010000,0xc0059000,0x00001803,0x00000000,0x00000000, +0x1b000000,0x00000000,0x34062800,0xd00001a2,0x0001800c,0x00080000,0x000020b2,0x0f800000, +0x00000000,0x00000004,0x00000000,0x04020324,0x680c0024,0x2000033c,0x10002400,0x000000b8, +0x04000000,0x03000000,0x00000000,0x00000000,0x00000f6c,0x00018190,0x00280170,0x00900000, +0x00004164,0x00000841,0x00000000,0x003f1e04,0x3400680c,0x00000a0c,0x07c002e0,0x20080000, +0x80000000,0x00004c03,0x00000000,0x00000000,0x00000000,0x0029fc00,0x00000554,0x0ef84142, +0x00004820,0x00400000,0x000020b2,0x0f8200e0,0x00001f00,0x00008004,0x00000000,0x063b9312, +0x48380000,0x00003404,0x14800400,0x00400060,0x20000000,0x1b000400,0x00080000,0x00000000, +0x01b86830,0x09011a07,0x002f0190,0x00000000,0x782c8164,0x00000a01,0x00000000,0x00000000, +0x00000770,0xe0000a01,0x07c00420,0x00010000,0x80000001,0x00003c84,0x00000000,0x00000000, +0x00000000,0x0a80f000,0x001a0004,0xd01842c0,0x00016838,0x00400000,0x001640b2,0x0f83c000, +0x00001f00,0x00040004,0x00000000,0x10020302,0x68040734,0x01d00000,0x00000400,0x00000040, +0x20000000,0x10000400,0x00000000,0x00000000,0x00000800,0x0904000c,0x002e0194,0x00100000, +0xf82c8164,0x00000300,0x00000000,0x003c1fc4,0x00000030,0x200c0156,0x07c00e21,0x20080f80, +0x00000800,0x00003c00,0x00000000,0x00000000,0xc0000000,0x003f7009,0x74024d6c,0x10093002, +0x00002830,0x00400000,0x001640b2,0x00004060,0x00001f00,0x00000000,0x00000000,0x001a0800, +0x683418c0,0x21dc0000,0x12800400,0x0f9ae040,0x20000000,0x00000400,0x00000000,0x00000000, +0x0006683c,0x05058000,0x002a0190,0x00800000,0x402c8000,0x00000ca1,0x00000000,0x00000000, +0x34180740,0x00000a04,0x07c00500,0x01010f80,0x80000001,0x00004b81,0x00000000,0x00000000, +0x24000000,0x0ebb0000,0x57ba080c,0x10010048,0x00006820,0x00400000,0x001640b2,0x00004060, +0x00001f00,0x20240004,0x00000000,0x20000f20,0x07744083,0x020b0000,0x18000400,0x00000000, +0x04000000,0x00000400,0x00080000,0x00000000,0x2418683c,0x00c98008,0x002a4150,0x00800000, +0xe82c8002,0x00000000,0x00000000,0xec7e1000,0x0000681c,0x80000009,0x07c00a00,0x20080f80, +0xb8059000,0x00004c04,0x00000000,0x00000000,0x0c000000,0x0f3902ae,0x27a66804,0x1010c060, +0x00014800,0x00080000,0x801640b2,0x0f84006f,0x00001f00,0x00040004,0x00000000,0x041a0000, +0x04400800,0x20012400,0x13000400,0x0f986040,0x20001f00,0x1a000000,0x00000000,0x00000000, +0x3400000c,0x09030bd0,0x002a0156,0x00800000,0x802c8164,0x00000e00,0x00000000,0xe47f1f04, +0x04000f4c,0x00021a02,0x07c00840,0x00080f80,0x80000000,0x00004b84,0x00000000,0x00000000, +0x96000000,0x067f023f,0x440e0008,0x1a910002,0x00000060,0x00400000,0x801640b2,0x0f80000b, +0x00001f00,0x800402c8,0x00000000,0x201a0d10,0x074c0103,0x20002410,0x00000000,0x0f82e000, +0x04001f00,0x19000080,0x000c8000,0x00000000,0x34186e78,0x0d001203,0x00260120,0x00100000, +0xc02c8164,0x00000d00,0x00000000,0x00000000,0x2418680c,0x00100a05,0x07c00460,0x20080f80, +0x38459000,0x00004004,0x00000000,0x00000000,0x98000000,0x0000fa8f,0xc3a42800,0x50201102, +0x00014810,0x00400000,0x801640b2,0x0f832061,0x00001f00,0x002082c8,0x00000000,0x240a0d00, +0x04400803,0x20010010,0x1c000000,0x0f986000,0x20001f00,0x1c000400,0x0006c000,0x00000000, +0x3418683c,0x00000000,0x002e0174,0x00000000,0x002c8164,0x00000000,0x00000000,0x003f1e04, +0x00000440,0x20000155,0x07c004a1,0x00010f80,0x19059000,0x00004000,0x00000000,0x00000000, +0x18000000,0x0e0001d0,0x17a60550,0x003851c1,0x00010a48,0x00400000,0x001640b2,0x0f816000, +0x00001f00,0x002002c8,0x00000000,0x1c03d002,0x680c0024,0x1a012400,0x30002000,0x00000000, +0x00000000,0x10000000,0x000c0000,0x00000000,0x362e280c,0x00060000,0x002e0180,0x00800000, +0x002c8164,0x00000400,0x00000000,0x00000000,0x34020770,0x2a001351,0x07c004e1,0x00080f80, +0x38459000,0x00003804,0x00000000,0x00000000,0x00000000,0x0fc00180,0x03a60544,0x50180081, +0x00010000,0x00400000,0x001640b2,0x0f8000e0,0x00001f00,0x00040000,0x00000000,0x3041d306, +0x6c700037,0x1a030000,0x00002000,0x00400000,0x00000000,0x00000080,0x000ac000,0x00000000, +0x14006820,0x0d000000,0x002e4130,0x00800000,0x402c8164,0x00000201,0x00000000,0x00000fc4, +0x14060f4c,0x2a0e1202,0x07c00a01,0x00010f80,0x38000000,0x00004004,0x00000000,0x00000000, +0x2d000000,0x0000fd60,0x02206d74,0x00180040,0x0000000c,0x00080000,0x001640b2,0x0f810000, +0x00001f00,0x00200004,0x00000000,0x3c1a0302,0x07780037,0x20000000,0x40002000,0x003000d4, +0x04000000,0x07000080,0x000c0000,0x00000000,0x0410281c,0x05060008,0x00320178,0x00000000, +0x002c8164,0x00000000,0x00000000,0xe0400fc4,0x34000000,0x12021208,0x07c00a01,0x20010f80, +0x00000800,0x00004000,0x00000000,0x00000000,0x11000000,0x003fe000,0xc2a20550,0x00183346, +0x0000834c,0x00080000,0x001640b2,0x000000a0,0x00001f00,0x20200004,0x00000000,0x2401d300, +0x080008c3,0x3a0c0008,0x00002000,0x000800d0,0x04000000,0x19000000,0x00060000,0x00000000, +0x00186830,0x0dcc0110,0x00328116,0x00100000,0xa82c8000,0x00000000,0x00000000,0x003e1000, +0x03be0000,0x0c00015d,0x07c00001,0x00010f80,0x80000801,0x00004804,0x00000000,0x00000000, +0x40000000,0x0500f0fe,0x36ae2824,0xd0390100,0x00004828,0x00080000,0x001640b2,0x0f800000, +0x00001f00,0x00040004,0x00000000,0x24611404,0x0f4c4603,0x3a030000,0x30002000,0x00400020, +0x20000000,0x14000000,0x000a0000,0x00000000,0x34062810,0x0d060000,0x00328112,0x00000000, +0x002c8164,0x00000601,0x00000000,0xe07f1f04,0x00060020,0x24001208,0x07c00001,0x00000f80, +0x80000801,0x00004384,0x00000000,0x00000000,0x00000000,0x0fbf03a0,0x36380d50,0x5c980812, +0x00014808,0x00000000,0x001640b2,0x0f800060,0x00001f00,0x20200000,0x00000000,0x10015116, +0x2f4c0254,0x21dc0000,0x20002000,0x004000b8,0x04000000,0x10000080,0x000c0000,0x00000000, +0x24062810,0x00c90000,0x00324170,0x00000000,0xc02c8164,0x00000400,0x00000000,0x00000fc4, +0x34006e6c,0x2a001208,0x07c00001,0x20010f80,0xc0000800,0x00003803,0x00000000,0x00000000, +0x40000000,0x0e3f018b,0x24062e74,0xd0200008,0x00004820,0x00000000,0x001640b2,0x0f8000e0, +0x00001f00,0x20200004,0x00000000,0x007a0308,0x080800c0,0x00000400,0x30002000,0x00180000, +0x04000000,0x00000080,0x000c0000,0x00000000,0x00000810,0x0dcf1a04,0x00240170,0x00000000, +0x002c8164,0x00001040,0x00000000,0x00381fc4,0x02280030,0x32001202,0x07c00000,0x00010f80, +0x00000801,0x00003c00,0x00000000,0x00000000,0xa6000000,0x003fecde,0x03b26824,0xd0583010, +0x00004808,0x00000000,0x003640b2,0x00000000,0x00001f00,0x20200004,0x00000000,0x18020006, +0x28100024,0x01d303b8,0x1b002000,0x00000080,0x04000000,0x00000400,0x00006000,0x00000000, +0x00000800,0x00cc000b,0x00320170,0x00000000,0x002c8000,0x000010c0,0x00000000,0x00000e44, +0x00002800,0x0e060a01,0x07c00001,0x00010f80,0x00000800,0x00004802,0x00000000,0x00000000, +0x3a000000,0x003801f6,0x14060000,0xdcf83158,0x00018000,0x00000000,0x001640b2,0x0002c000, +0x00001f00,0x00200000,0x00000000,0x10120308,0x2f5c8124,0x2a020000,0x0a002000,0x000000c0, +0x00000000,0x10000400,0x000a6000,0x00000000,0x00202804,0x00c90200,0x00270010,0x00000000, +0x802c8002,0x00000e00,0x00000000,0xfc400000,0x02b00740,0x0e000000,0x07c00001,0x20080f80, +0x38000000,0x00000000,0x00000000,0x00000000,0x11000000,0x0e4000d0,0xc3b02800,0xd078b800, +0x00006830,0x00000000,0x001640b2,0x0f800000,0x00001f00,0x00200000,0x00000000,0x0001d124, +0x2c508000,0x1a030000,0x00002000,0x00200080,0x04000000,0x00000080,0x0008c000,0x00000000, +0x0002080c,0x09011b58,0x00270196,0x00800000,0x002c8164,0x00001040,0x00000000,0x00000000, +0x17ae0000,0x20000a04,0x07c00201,0x00080f80,0x00000001,0x00003800,0x00000000,0x00000000, +0x14000000,0x0000f800,0x40040550,0x101882c0,0x00008000,0x00080000,0x001640b2,0x0f810000, +0x00001f00,0x00200000,0x00000000,0x001a0c00,0x054440c0,0x03dc3418,0x23002000,0x00000000, +0x00000000,0x00000400,0x00000000,0x00000000,0x34000800,0x00008003,0x00270172,0x00000000, +0x402c8364,0x00000f00,0x00000000,0xe4400e04,0x140e000c,0x0e000a01,0x07c00001,0x20000f80, +0x80000800,0x00004803,0x00000000,0x00000000,0x2d000000,0x0038fc00,0xc0064d44,0xd048f100, +0x00004808,0x00000000,0x001640b2,0x0f86a060,0x00001f00,0x20208004,0x00000000,0x0801d302, +0x2f5c0080,0x00000018,0x1c002000,0x000000ac,0x04000000,0x00000400,0x00000000,0x00000000, +0x34060800,0x01008110,0x002a0196,0x00100000,0xa82c8164,0x00000000,0x00000000,0xfc400000, +0x24000740,0x00000a07,0x07c00000,0x00080f80,0x80000000,0x00003c84,0x00000000,0x00000000, +0xe0000000,0x0000027f,0x03a02824,0x90780600,0x0000000c,0x00000000,0x001640b2,0x0f800000, +0x00001f00,0x00000004,0x00000000,0x04000e30,0x683006c0,0x020003a0,0x00000000,0x000000c0, +0x20000000,0x00000000,0x000c0000,0x00000000,0x34060800,0x00ed8000,0x00224116,0x00800000, +0x582c8164,0x00000001,0x00000000,0x003f1000,0x00000460,0x20000003,0x07c00821,0x00080f80, +0x80000001,0x00004384,0x00000000,0x00000000,0xfc000000,0x003f02ce,0xc7a62e50,0x0000db00, +0x0001826c,0x00400000,0x001640b2,0x0f850060,0x00001f00,0x20200000,0x00000000,0x201a0232, +0x28100603,0x00000400,0x00000400,0x00000000,0x20000000,0x00000000,0x00000000,0x00000000, +0x341e0000,0x0dcf0000,0x00224100,0x00000000,0x002c8164,0x00000ac0,0x00000000,0x00000000, +0x03a04800,0x000e0003,0x07c004e0,0x00000f80,0xc8000001,0x00003803,0x00000000,0x00000000, +0x0a000000,0x002e0000,0x74060574,0x10000250,0x00000000,0x00400000,0x001640b2,0x0f820000, +0x00001f00,0x24040004,0x00000000,0xa02a0302,0x08300203,0x23dd2416,0x4a800000,0x00000000, +0x00000000,0x08000400,0x00000000,0x00000000,0x34260804,0x00070001,0x00224118,0x00100000, +0xc02c8164,0x00000000,0x00000000,0xe8400000,0x00000010,0x20000a07,0x07c00001,0x00000f80, +0x48000000,0x00003800,0x00000000,0x00000000,0x00000000,0x00390000,0x47a66e64,0x0e88d152, +0x00000000,0x00000000,0x001640b2,0x0f82c0a0,0x00001f00,0x00000004,0x00000000,0x06200000, +0x2f500204,0x000c0004,0x00000400,0x00000000,0x04000000,0x17000000,0x000c2000,0x00000000, +0x14180800,0x0dc81a00,0x0022c180,0x00100000,0x002c8164,0x000010c0,0x00000000,0x00000000, +0x00100440,0x00160004,0x07c002c0,0x00080f80,0xb0000000,0x00000003,0x00000000,0x00000000, +0x00000000,0x0ba50000,0xc4080540,0xd018c202,0x00002820,0x00400000,0x001640b2,0x0f800000, +0x00000000,0x00200004,0x00000000,0x24000006,0x6c4c0637,0x3b1003a0,0x4a800000,0x004000c0, +0x04000000,0x10000404,0x00000000,0x00000000,0x34102804,0x0dcd83d3,0x00328000,0x00800000, +0xc0000164,0x00000a01,0x00000000,0x003f1000,0x0400000c,0x00000192,0x07c00000,0x00000f80, +0xc0000000,0x00001804,0x00000000,0x00000000,0x6e000000,0x0c224c04,0x34062f5c,0xd0603010, +0x0001480c,0x00000000,0x00164000,0x0f86a000,0x00000000,0x80040000,0x00000000,0x00000208, +0x480c0240,0x1a030320,0x1c000000,0x00000000,0x20000000,0x09000080,0x00000000,0x00000000, +0x34060810,0x00ee0000,0x002e00c0,0x00000000,0xc0004164,0x00000401,0x00000000,0xf8400e04, +0x00060000,0x2e001a53,0x00000001,0x00080f80,0xc8000801,0x00000003,0x00000000,0x00000000, +0xcaffffc0,0x0c78c11b,0x34064818,0x0018f010,0x0000682c,0x00000000,0x00164001,0x0f820000, +0x00000000,0x90209020,0x00000000,0x0001d006,0x00000640,0x1a030000,0x18002000,0x240000b0, +0x04009000,0x10000080,0x00000000,0x00000000,0x01b8680c,0x00001a03,0x00224114,0x00800000, +0x40000164,0x09000000,0x00000000,0xc4b02bc8,0x34000760,0xe0000add,0x00000100,0x00080f80, +0xc1204000,0x00003c83,0x00000000,0x00000000,0x80e7febc,0x07007002,0x0000000c,0x00000000, +0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x90229964,0x00000000,0x01000001, +0x00000000,0x80000000,0x00000207,0xfc000000,0x000020ff,0xc0000400,0x00000143,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00200000,0x00000000,0x71400000, +0x00000003,0x00000000,0x00000000,0x00000000,0x0421e401,0xc0000000,0x00001fff,0x805fa000, +0x4bffffc0,0x028084b8,0x00002800,0x00000000,0x000a0000,0x00000000,0x00000000,0x00000000, +0x00000000,0x90200000,0x00000000,0x00000000,0x00000034,0x80000000,0x00000206,0x00186034, +0x00000000,0x46000000,0x00000103,0x00000000,0x34100000,0x50000000,0x00000000,0x00000000, +0x00000000,0x120406c0,0x00000000,0x28800000,0x17280440,0x00092000,0x00000000,0x28010000, +0x0541a100,0x00000000,0x00000000,0x00000000,0xd0ebffbd,0x044044f2,0x36200000,0x08800000, +0x00000000,0x00000000,0x22003000,0x000000e1,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00001300,0x80000000,0x00000206,0x08382400,0x00000000,0xc0000000,0x00000143,0x00000000, +0x00000440,0xb0000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x454002c8, +0x00000000,0x00000004,0x00000000,0x00000000,0x01204000,0xc0000000,0x00001fff,0x805fa000, +0x00fbff40,0x02803900,0x04006800,0x08800000,0x008a0000,0x00000000,0x00001000,0x00000000, +0x00000000,0x902110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x00000206,0xfc000000, +0x000000ff,0x40000000,0x00000103,0x00000000,0x00000000,0x00000000,0x00001200,0x00000000, +0x00000000,0x02000000,0x00000000,0x28800000,0x00006800,0x00100001,0x00000000,0x00000000, +0x0221e000,0x00000000,0x00000000,0x00000000,0x10fffffb,0x03803503,0x00018003,0x00000000, +0xe8000000,0x80000003,0x02000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000800,0x80000000,0x00000287,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x00000540,0x00000000,0x00201600,0x00000000,0x00000000,0x02086000,0x00000000,0x388d2308, +0x0000280c,0x00001200,0x00000000,0x00000000,0x01204400,0x00000000,0x68000000,0x00000007, +0x40ebff40,0x03803804,0x02260000,0x00180000,0x00000830,0x00000000,0x00001000,0x0e000000, +0x00041c00,0x90229960,0x00000000,0x00000031,0x000c0000,0x800003a0,0x00000286,0x00000000, +0x80000800,0x08000010,0x00000000,0x00000000,0xc0000000,0x00000000,0x08000000,0x00000000, +0x006c8164,0x0024a000,0x00000000,0x39400000,0x00000000,0x000000d0,0x00000000,0x04200000, +0x0501a000,0x00000000,0x00000000,0x805fa000,0x10fbff3b,0x028044b0,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x9022a0d0,0x00000000,0x000a0000, +0x00000000,0x800002a8,0x00000286,0x00000000,0x24000000,0xc8b00020,0x00000143,0x00000000, +0x14000540,0x00000000,0x00c00040,0x00000000,0x00000000,0x00906000,0x00000000,0x28800408, +0x00000000,0x00000002,0x00000500,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x0003ef00,0x00003404,0x34000000,0x00000102,0x00000000,0x0047fff8,0x00000001,0x00034000, +0xfffe0000,0x00000003,0x00000000,0xa0000100,0x00000003,0x00000000,0x00142400,0x00000000, +0x24000000,0xc8000014,0x00000103,0x00000000,0x00080544,0x00000000,0x001a0160,0x00000000, +0x00000000,0x00000000,0x00000000,0x000f2000,0x00000000,0x00001200,0x00000000,0x10000000, +0x00000000,0x00000000,0x00000000,0x00000000,0xc0ffffc0,0x034f3002,0x04060000,0x08800006, +0x00020800,0x80000000,0x003641b2,0x00000000,0x00000000,0x90209020,0x00000000,0x01800000, +0x08000000,0x00000008,0x28000000,0x02020000,0x00000400,0x10000000,0x00000000,0x00000000, +0x00000000,0x00000110,0x00000000,0x00800000,0xc0000000,0x00800000,0x00000000,0x348c22c8, +0x00000000,0x00000000,0x07000000,0x00000e00,0x39204000,0x00001380,0x00000000,0x00000000, +0x00eff000,0x02c02c00,0x14060000,0x00000006,0x78800800,0x00000000,0x02000000,0x00000000, +0x00000000,0x9022996c,0x00000000,0x00015001,0x00000000,0x81100000,0x00142687,0x00382400, +0x00001f00,0x49028480,0x00000183,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00480600,0x00000000,0x2d400000,0x02a80000,0x80100000,0x00000000,0x20000000, +0x000000a1,0xc0000000,0x00000003,0x805fa000,0x0003ff80,0x00002800,0xc0020000,0x00000000, +0x08860800,0x00000000,0x02000000,0x00000000,0x00000000,0x000290d0,0x00000000,0x00015400, +0x00002000,0x81500000,0x00142687,0x06000000,0x00000c00,0xc8028480,0x00000143,0x00000000, +0x00000000,0x00000000,0x000012c0,0x00000000,0x00000000,0x00082000,0x00000000,0x00000000, +0x00080000,0x00120000,0x00000000,0x00000000,0x0221e000,0x40000000,0x00000001,0x00000000, +0x8003fffd,0x000000a2,0xc0010540,0x0000c000,0x38006800,0x00000000,0x22000509,0x00000100, +0x00000000,0x000260d0,0x00000000,0x00200402,0x00002040,0x80040000,0x00000287,0x1a000000, +0x00002400,0xc8000000,0x00000143,0x00000000,0x14000000,0x00000000,0x00040000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00002800,0x00000000,0x00000000,0x00000000, +0x0521a400,0xc0000000,0x00000002,0x00000000,0x0a03dfc0,0x00000000,0x03202801,0x1000c000, +0x08000030,0x00000000,0x20a12000,0x00000100,0x00000000,0x000110f0,0x00000000,0x00000002, +0x00000004,0x80000000,0x00000286,0x22382420,0x00003400,0x40000000,0x00000143,0x00000000, +0x14082800,0x00000000,0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00002804,0x00000000,0x00000000,0x00000000,0x04c1a000,0x40000000,0x00000001,0x00000000, +0x00ffdf3e,0x02800000,0x03a30000,0x50000006,0x38400000,0x00000000,0x00a12000,0x00000000, +0x00000000,0x902110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x00000306,0x12000020, +0x00004400,0x40000000,0x00000143,0x00000000,0x00082801,0x00000000,0x00000000,0x00000000, +0x00000000,0x12000600,0x00000000,0x28800000,0x03200004,0x80100000,0x00000000,0x20000000, +0x0221e4a1,0xc0000000,0x00000002,0x00000000,0x03b7fe31,0x02822840,0x43a00803,0x00000000, +0x004b4810,0x00000000,0x00003000,0x00000000,0x00000000,0x9022a960,0x00000000,0x00000001, +0x00002000,0x00000000,0x00040607,0x00300000,0x00000000,0x00000000,0x00000000,0x00000000, +0x363c0000,0x50000000,0x00200000,0x00000000,0x00000000,0x00200000,0x00000000,0x29400000, +0x0000080c,0x00107a03,0x00000000,0x00000000,0x04418400,0x00000000,0x28000000,0x805fa006, +0x80e3ff00,0x058b58c2,0x00006808,0x00000000,0x000a0000,0x00000000,0x00001000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000001,0x00000000,0x40000000,0x00000287,0x01000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x24080000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400294,0x00006802,0x00120094,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x805fa000,0xcdebff80,0x0580598f,0x34040000,0x00000000, +0x00000000,0x00000000,0x00000060,0x00000000,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00000024,0x00000000,0x00042400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x08000000,0x00000000,0x00000000,0x002006c0,0x00000000,0x59400000, +0x00000740,0x00000000,0x00000000,0x04200000,0x01030800,0x00000000,0x00000000,0x805fa000, +0x00000fc0,0x00000000,0x00060000,0x00000000,0x00006820,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x04000000,0x00000000,0x41100000,0x28000206,0x00000000, +0x00000000,0x08080e80,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000388,0x34000030,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x038c0000,0x40002800,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x00000000, +0x00000200,0x00000000,0x00000000,0x00000000,0x00000000,0x49000000,0x00000103,0x00000000, +0x00000540,0x00000000,0x00128000,0x00000000,0x00000000,0x00216000,0x00000000,0xe0400000, +0x00180000,0x00000000,0x00000000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000, +0x8003fffb,0x00382d02,0x36a00004,0x00000000,0x00000000,0x00000000,0x00010000,0x00000000, +0x00000000,0x607c9020,0x00000000,0x00000000,0x00000800,0x00000000,0x00000000,0x01000000, +0x00000200,0xa0000000,0x00000143,0x00000000,0x14080000,0x00000000,0x00000184,0x00000000, +0x00000000,0x00400000,0x00000000,0xe04b2288,0x00000000,0x80000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x0cc7ff32,0x058c5950,0x001c6800,0x90004009, +0x00006a70,0x00000000,0xa81650b2,0x0000010c,0x00000000,0x9022a964,0x00000000,0x07000201, +0x00000134,0x80020000,0x00000206,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x15ba0470,0x10000000,0x00000001,0x00000000,0x00000000,0x00200460,0x00000000,0x59400fc4, +0x0000680c,0x8a001202,0x07000000,0x00000e00,0x0201e400,0x00000000,0x48000000,0x805fa006, +0xb8fffff5,0x028008a0,0x76206d6c,0x50204006,0x000a081c,0x00000000,0x00001000,0x00000000, +0x00000000,0x902100f0,0x00000000,0x0021d000,0x00002104,0x81d00000,0x00002286,0x02434400, +0x00000000,0x45880480,0x00000143,0x00000000,0x04086810,0x00000000,0x002e0180,0x00000000, +0x00000000,0x00806000,0x00000000,0x28800000,0x14000803,0x000900d4,0x00000000,0x00000000, +0x0521a000,0x40000000,0x00000000,0x00000000,0x80e3ff00,0x058b58c2,0x00006808,0x00000000, +0x000a0000,0x00000000,0x00001000,0x00000000,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00000000,0x40000000,0x00000287,0x01000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x24080000,0x00000000,0x00000000,0x00000000,0x00000000,0x00200000,0x00000000,0x59400294, +0x00006802,0x00120094,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x805fa000, +0x00dbff3d,0x05805950,0x00006800,0x00000000,0x08404800,0x00000000,0x00001000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000001,0x00002000,0x80000000,0x00000286,0x00000000, +0x00000000,0x40000000,0x00000103,0x00000000,0x24000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400000,0x00000000,0x00150000,0x00000000,0x00000000, +0x00000400,0x00000000,0x00000000,0x805fa000,0x80ff7fc0,0x02802800,0x14082803,0x0a800000, +0x000a0020,0x00000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x00000000, +0x00000100,0x80000000,0x00000207,0x00000000,0x00000000,0x01800000,0x00000000,0x00000000, +0x00100744,0x50000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800000, +0x00006808,0x00120000,0x00000000,0x00000000,0x0521a000,0x00000000,0x00000000,0x00000000, +0x00cffcc0,0x05805950,0x040e0548,0x0ce80002,0x0001c82c,0x00000000,0x00002000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000b07,0x800c2004,0x8a0c0004,0x00000286,0x00000000, +0x00000000,0x44800000,0x00000103,0x00000000,0x05b00808,0x0d009208,0x00140000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400000,0x00080030,0x00000000,0x00000000,0x10010000, +0x0401e000,0x00000000,0x00000000,0x805fa000,0x0cdbffc0,0x000008b6,0x14000000,0x503000c0, +0x00c22800,0x00000000,0x000c0000,0x000000c0,0x00000000,0x00000000,0x00000000,0x00120000, +0x68003100,0x00043400,0x21800000,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00006800,0x00060008,0x000000d4,0x00000000,0x30000000,0x00000001,0x00000000,0x003c1000, +0x00006800,0xe4179a00,0x00000500,0x00000000,0x00000000,0x00003c80,0x00000000,0x00000000, +0x3cffef40,0x028028b0,0x662a6810,0x0aa03050,0x00000b60,0x00480000,0x000000b2,0x00000000, +0x00000000,0x902210d0,0x00000000,0x0063d006,0x08000214,0x82000320,0x48002207,0x00342000, +0x20000400,0x00000000,0x00000000,0x00000000,0x00002e50,0x09001a00,0x00300000,0x00000000, +0x00180000,0x00800000,0x00000000,0x28800000,0x24002c50,0x00000004,0x07000000,0x01090000, +0x00000000,0x00000000,0x00000000,0x00000000,0xc0d3fef6,0x058b595e,0x00066e44,0x00604008, +0x00000140,0x00000000,0x28001000,0x000000d1,0x00000000,0x9022a964,0x00000000,0x00000401, +0x00002000,0x80000000,0x00000207,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00000f40,0x50c82000,0x000000c0,0x00000000,0x00000000,0x00200000,0x00000000,0x59400f04, +0x00006804,0x00000000,0x00000000,0x00000000,0x38000400,0x00000001,0xc8000000,0x805fa006, +0x8cfffff7,0x028008a0,0x0400480e,0x10000000,0x010a6808,0x00000000,0x000010b2,0x0e000000, +0x00000000,0x902100f0,0x00000000,0x00120002,0x00000100,0x80000000,0x00000286,0x02000000, +0x00000000,0x04800000,0x00000000,0x00000000,0x34180010,0x50000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x28800000,0x00006830,0x00112050,0x07000000,0x00000000, +0x0521a400,0x00000000,0x00000000,0x00000000,0xd2dfff80,0x060f6123,0x84000800,0x00000000, +0x008a4800,0x00000000,0x02001000,0x00000000,0x00000000,0x90229964,0x00000000,0x00000001, +0x00000000,0x80000000,0x00000206,0x10000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x34180000,0x50000000,0x00000000,0x00000000,0x00000000,0x00286000,0x00000000,0x614003c8, +0x00004810,0x0012120c,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x805fa000, +0x00fffff9,0x04c04404,0x14000000,0x0a800000,0x00060020,0x00000000,0x00001000,0x00000000, +0x00000000,0x90209020,0x00000000,0x00000000,0x00000200,0x80000000,0x00000287,0x10000000, +0x00004800,0xc8000000,0x00000143,0x00000000,0x34180540,0x00000000,0x00001600,0x00000000, +0x00000000,0x09002000,0x00000000,0x4c912408,0x00002800,0x00100098,0x00000000,0x00000000, +0x01204400,0x00000000,0x28000000,0x00000007,0x92ebff80,0x03c03c06,0x47b80f44,0x00000306, +0x4000000c,0x00000001,0x000001b2,0x00020000,0x00001c00,0x90229964,0x00000000,0x001a0031, +0x00000700,0x81100400,0x18002306,0x10030000,0x04001000,0x40000080,0x00000143,0x00000000, +0x34040000,0x00000150,0x001b00d6,0x00800000,0xb86c8000,0x00200a80,0x00000000,0x3d400000, +0x17a06810,0x001212d2,0x07000400,0x10000000,0x0521a001,0x00000000,0x00000003,0x805fa000, +0x0efbefba,0x068044a0,0x04082800,0x00000001,0x20026c40,0x00080001,0x003641b2,0x00000000, +0x00000000,0x902260d0,0x00000000,0x00120800,0x280000c4,0x9a000000,0x00000286,0x7a000000, +0x2000c400,0x40000400,0x00000183,0x00000000,0x24180020,0x00000001,0x00260030,0x00100000, +0xa8000002,0x04000600,0x00000000,0x68800f44,0x00002800,0x00120000,0x07000000,0x00010e00, +0x8481a000,0xc0001184,0x0000000d,0x00000000,0xbdfbfffb,0x04406806,0x03300d64,0x00081008, +0xc8010030,0x00000001,0x003641b2,0x00060000,0x00001c00,0x902290d0,0x00000000,0x001a0c02, +0x00040800,0x811d0000,0x20000286,0x14000000,0x20002c00,0x40000080,0x00000183,0x00000000, +0x14104804,0x00000000,0x001a80d8,0x00000000,0xf86c8002,0x04000000,0x00000000,0x44be1e84, +0x00080010,0x40000008,0x070008a0,0x00000e00,0x2d21a000,0x00000002,0x0000000a,0x00000000, +0x40fbffc0,0x06404404,0x14000640,0xd8800003,0x20012800,0x00400000,0x003641b2,0x00066000, +0x00000000,0x902290d0,0x00000000,0x12035202,0x00002000,0x82000000,0x48000686,0x0c000000, +0x20001400,0x40080000,0x00000183,0x00000000,0x03284d48,0x008a0150,0x000000d4,0x00800000, +0x00000010,0x10000000,0x00000000,0x64bd1000,0x24040770,0xd2000390,0x07000000,0x00010e00, +0x0521a000,0x40001404,0x0000000d,0x00000000,0x9afbffc0,0x04ce0114,0x00020660,0x00580306, +0x68006804,0x00000000,0x000001b2,0x0e020000,0x00001c00,0x902260d0,0x00000000,0x000a0400, +0x002000d4,0x9a000000,0x00002286,0x120000a0,0x00001c00,0x40080000,0x00000143,0x00000000, +0x17a06804,0x10000a01,0x000c00d9,0x00800000,0xf06c8164,0x10000c00,0x00000000,0x4c800000, +0x14040800,0x0e001208,0x070006e1,0x00010000,0x04c1a000,0x80000000,0x00000003,0x00000000, +0xfdfbfffe,0x03804fe4,0x00000800,0x08801040,0x00002803,0x00400000,0x000030b2,0x0006a000, +0x00000000,0x902290d0,0x00000000,0x081b9d02,0x4d400000,0x80070220,0x1b802286,0x480000a0, +0x20009800,0x40000080,0x00000143,0x00000000,0x262c0030,0x10a80194,0x001a80c5,0x00100000, +0x00000000,0x10000b00,0x00000000,0x38800000,0x001a0000,0x700000de,0x07000000,0x20000000, +0xc521a000,0x40000003,0x00000000,0x00000000,0x93fbfffe,0x04803802,0x00000770,0x9a80c0c6, +0x10008004,0x00000000,0x283651b2,0x0e000060,0x00000000,0x902290d0,0x00000000,0x00000006, +0x00080800,0x83d00000,0x20002306,0x44000070,0x0000dc00,0x40000400,0x00000183,0x00000000, +0x00066d60,0x05008150,0x00260112,0x00800000,0x00000364,0x10000000,0x00000000,0x48be1e44, +0x14002800,0x8000000e,0x07000200,0x20080e00,0x04c1a000,0xc0003804,0x00000003,0x00000000, +0x80fbefc0,0x02900184,0x04020020,0xd8a05000,0x70002f40,0x80080001,0x283641b2,0x0e000061, +0x00001c00,0x902110f0,0x00000000,0x20215800,0x00040037,0x8a082400,0x13800686,0x54000000, +0x00000000,0x40000000,0x00000143,0x00000000,0x26242834,0x05008002,0x00260000,0x00000000, +0xc02c8164,0x10001001,0x00000000,0x28800000,0x02200004,0x72001200,0x07000000,0x00010e00, +0x0521a001,0x00000000,0x0000000b,0x00000000,0x8003ffc0,0x00002802,0x00004800,0x50600000, +0x78000444,0x80000001,0x00364000,0x0003c000,0xfffe0000,0x000110f3,0x00000000,0x18620106, +0x07403014,0x82000220,0x00002286,0x6a300a00,0xa8000000,0x40000090,0x00000183,0x00000000, +0x34040544,0x00020001,0x001a8060,0x00000000,0x00000000,0x00001000,0x00000000,0x003f1e04, +0x00002800,0x241000d0,0x00000401,0x00080e00,0xc521a000,0x80004003,0x0000000a,0x00000000, +0x9103ffc0,0x0000e4ef,0x02a00648,0x1ec08308,0x00000548,0x00080000,0x00364001,0x0e03c000, +0x00000000,0x000260d0,0x00000000,0x00015000,0x280000f4,0x800d0000,0x13802206,0x60300a80, +0x0000e400,0x40000080,0x00080143,0x00000000,0x36be2f44,0x00000000,0x00000060,0x00800000, +0x00004364,0x00000000,0x00000000,0x00000e44,0x00000804,0x0000000c,0x00000400,0x10000e00, +0x3a21a000,0x80001381,0x00000008,0x00000000,0xb803ffc0,0x0e404bf3,0x02a80808,0x1aa00000, +0xe8004830,0x00080001,0x18000001,0x0e0400e0,0x00001c00,0x000690d0,0x00000000,0xb8600000, +0x08100003,0x80000000,0x00000286,0x5e3000b0,0x0000b800,0x40000000,0x00000143,0x00000000, +0x001e0544,0x00000150,0x00020170,0x00800000,0xc02c8364,0x00000c01,0x00000000,0xf4400000, +0x02200020,0x00000000,0x00000000,0x20080000,0x4221a000,0xc0004200,0x0000000e,0x00000000, +0x80ffffc0,0x0000e936,0x00024800,0x0c801044,0x88010764,0x00000001,0x003640b2,0x0e03a000, +0x00021c00,0x000110d0,0x00000000,0x18000100,0x0540a234,0x81901628,0x00000306,0x58030000, +0x2000ec00,0x40000090,0x00000183,0x00000000,0x34a80644,0x09000000,0x00040020,0x00800000, +0x006c8364,0x00000c00,0x00000000,0x00000000,0x00004800,0x52001a08,0x07000400,0x00000e00, +0xc421a001,0xc0000003,0x00000000,0x00000000,0x4affffc0,0x0514400f,0x44004808,0x00680800, +0x30018800,0x00080001,0x003641b2,0x0e046000,0x00000000,0x90209020,0x00000000,0xa8000030, +0x000008c2,0x9a000002,0x00002286,0x66000054,0x0001fc00,0x40000080,0x00000143,0x00000000, +0x03a60008,0x05cc0000,0x00000030,0x00800000,0x80000364,0x00800601,0x00000000,0x50902000, +0x34082800,0xf0001a0c,0x07000000,0x00000e00,0x0481a000,0xc0000400,0x0000000c,0x00000000, +}; + +/* cga_sa */ +unsigned long rp_fw_cga_sa[] = { +0x8ae3fe80,0x03403432,0x14020004,0x00000002,0x00000000,0xa1100000,0x00000000,0x0001a000, +0x00140000,0x9022a964,0x00000000,0xa0020001,0xa8200003,0x80000320,0x28400206,0x01000000, +0x88140000,0xa0000010,0x00000143,0x00000000,0x40000000,0x00000190,0x001ac000,0x42200000, +0x0064c000,0x00400000,0x00000000,0x35400000,0x00002804,0x00001a08,0x000140c0,0x00000000, +0x0421d000,0x00000000,0x00000000,0x805fa000,0x0febfffa,0x02802cf3,0x64022800,0x10000802, +0x00ce6820,0x8c980800,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x01815000, +0x00010000,0x80000010,0x00200606,0x00000038,0x00000000,0x48000000,0x00000103,0x00000000, +0x04a40000,0x00000000,0x00000000,0x19300000,0x00000000,0x0010a700,0x00000000,0x00000000, +0x00006810,0x80100000,0x00000000,0x01930000,0x0541a000,0x00002000,0x00000000,0x00000000, +0xc2fffffa,0x038a3022,0x00000650,0x00000100,0x0c002830,0x00000800,0x00000801,0x00040000, +0x00000a01,0x90209020,0x00000000,0x00000100,0x07400000,0x40002400,0x00102287,0x04304000, +0x00000800,0xa8000400,0x00000143,0x00000000,0x34080000,0x00a80000,0x00000000,0x00000000, +0x41089002,0x010ca000,0x00000000,0x388c22c8,0x00000000,0x00000a04,0x80000600,0x00000000, +0x01204001,0x40000b80,0x00000000,0x00000000,0x26f7f000,0x0a00a2b0,0xf404682c,0x5ea03002, +0x00002810,0x00400000,0x00164001,0xd4000100,0x06301c01,0x9022a964,0x00000000,0x38000009, +0x06602137,0x21590224,0x40000400,0x004000c4,0x20000000,0x10008490,0x00000000,0x00000000, +0x14080740,0x00ec8151,0x000a0172,0x00800000,0xc02c8810,0x00201020,0x00000000,0xa1400000, +0x24006834,0xe0000a01,0x00000a00,0x21090e00,0x80000800,0x00003c01,0x00000000,0x805fa000, +0x2603ffc0,0x01682000,0x6400080c,0x50691046,0x00002810,0x00080000,0x001640b2,0x0000c060, +0x00021c00,0x606c0004,0x00000000,0x36615406,0x066846c3,0x8bd92400,0x42000607,0x00000000, +0x80000000,0x00000410,0x000c4000,0x00000000,0x14024800,0x00a81202,0x000a0000,0x00000000, +0xd02c8002,0x024010c1,0x00000000,0x003e1000,0x02282800,0x000401d1,0x07000000,0x00010d80, +0x00000801,0x00000004,0x00000000,0x00000000,0x26000000,0x0000fa70,0x66b02e58,0x5020d280, +0x00000810,0x00000900,0x00164000,0x0e02c000,0x00000000,0x00200004,0x00000000,0x04039810, +0x074800e4,0x2b910000,0x00200400,0x00000080,0x24000000,0x08908484,0x000a4000,0x00000000, +0x14080e78,0x05048110,0x00000000,0x00800000,0xc8000164,0x00000c00,0x00000000,0xf87f1000, +0x24040004,0x260000d3,0x000002c1,0x00080e00,0x00000000,0x00000c04,0x00000000,0x00000000, +0x00000000,0x00000000,0x43244808,0x50213000,0xf0000000,0x08480003,0x00000000,0x0e040000, +0x00000000,0x00240000,0x00000000,0x307b9200,0x48003617,0x82010000,0x24002286,0x000000b8, +0x24000000,0x40000080,0x00060103,0x00000000,0x14080008,0x05008000,0x00200160,0x00900800, +0x40020164,0x00001000,0x00000000,0x00000000,0x03300000,0x30000110,0x00000e01,0x001b0000, +0x00000084,0x00001804,0x00000000,0x00000000,0xc0000000,0x003e03f9,0x34066818,0x50081000, +0x00000004,0x00080000,0x008c0001,0x0e020000,0x00001b00,0x10800000,0x00000000,0x10800102, +0x48388024,0x320e0330,0x30002000,0x000000d0,0x04020000,0x0b000080,0x000ac000,0x00000000, +0x140a4800,0x09aa0000,0x000ac0f6,0x42000000,0x702c8164,0x00201001,0x00000000,0x00000000, +0x03a06d70,0x60000152,0x00000200,0x0109f700,0x40000001,0x00000003,0x00000000,0x00000000, +0x00000000,0x00000290,0x80044800,0x0a890100,0x00018000,0x00080004,0x000c0109,0x0e042000, +0x00000000,0x04240000,0x00000000,0x00611008,0x04600604,0x0a0003a8,0x28108000,0x0043c0cc, +0x20000000,0x10000080,0x00000000,0x00000000,0x14086818,0x00aa8008,0x00224190,0x00100000, +0x80000164,0x00000400,0x00000000,0x00000000,0x36260020,0x3000015d,0x00000041,0x00010000, +0x00000001,0x00004000,0x00000000,0x00000000,0x00000f40,0x002a0000,0x2418002c,0x50083152, +0x00000000,0x00480000,0x001640b2,0x00040100,0x00000000,0x60a40000,0x00000000,0xb0015c20, +0x48100227,0x0bd10000,0x00042400,0x000000b0,0x24000000,0x08000084,0x000a6000,0x00000000, +0x14024808,0x00008190,0x000c0000,0x00900000,0xc0020000,0x00201020,0x00000000,0x00000000, +0x03a60550,0x40001b90,0x06c000a0,0x20080e00,0xbc01e001,0x00002c00,0x00000000,0x00000000, +0x27000000,0x00000000,0x37300010,0x0aa02800,0x00006800,0x00400000,0x000c2000,0x0d840000, +0x00020000,0x00240004,0x00000000,0x1c020002,0x6e608054,0x1b5d0004,0x18000400,0x000000b8, +0x80000000,0x10008490,0x00060000,0x00000000,0x0002002c,0x05000a04,0x002240e0,0x00100000, +0x00424164,0x000010e1,0x00000000,0x003b1000,0x34060000,0x00000151,0x00001000,0x00000000, +0xb8000001,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00184820,0x5e8840c9, +0x0000000c,0x00080000,0x00164001,0x0d800060,0x00000000,0x10800000,0x00000000,0x20020008, +0x48200903,0x0bdd27a6,0x00000000,0x00000060,0x04020000,0x03000400,0x00000000,0x00000000, +0x00002f40,0x00000151,0x08224120,0x42000000,0xf8000164,0x00200a00,0x00000000,0x00000000, +0x37360000,0x00000154,0x000004e0,0x24200d80,0x38000001,0x00003804,0x00000000,0x00000000, +0x0003e000,0x0a00e000,0xf7344824,0x90488802,0x00006d48,0x00480000,0x001640b2,0x0d86a000, +0x00000000,0x90840004,0x00000000,0x00600110,0x80000600,0x0a040331,0x1b800000,0x00200000, +0x24000000,0x10000080,0x00060000,0x00000000,0x3410483c,0x05cb0a06,0x00180192,0x00000000, +0x78004164,0x00200401,0x00000000,0x003e1000,0x03300030,0x8008011c,0x06c00000,0x20000e00, +0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x0002f800,0xe4160440,0x901061d8, +0x00c02810,0x00000010,0x008c00b2,0x000640c0,0x00000f00,0x20208004,0x00000000,0x10220006, +0x00080824,0x20001620,0x4c908000,0x002800b0,0x24000000,0x00021000,0x000c0000,0x00000000, +0x1720082c,0x00000154,0x00000160,0x00800000,0x81180000,0x00001001,0x00000000,0xe0400f84, +0x00100820,0xc00121d1,0x06c00600,0x00080f80,0x80000800,0x00183c03,0x00000000,0x00000000, +0x00f80000,0x003e0000,0xf4100648,0x904004c8,0x00014810,0x21000004,0x00000460,0x0c0400a0, +0x000c1b00,0x20200004,0x00000000,0x240b1020,0x48300226,0x820003a4,0x10108207,0x00000000, +0x80000000,0x07000090,0x000a2000,0x00000000,0x0408480c,0x05021351,0x000e8160,0x10900000, +0x802c88c0,0x00000841,0x00000000,0x00391f84,0x37382810,0x68080150,0x01c02300,0x20080000, +0x00000821,0x00003c80,0x00000000,0x00000000,0x7e03f000,0x0038000f,0xc4160760,0x00100018, +0x00002800,0x00480000,0x00010460,0x00020100,0x000a1b00,0x00240004,0x00000000,0x241a0608, +0x0020b003,0x220007a6,0x1c802000,0x00400080,0x80020000,0x1c000410,0x00060000,0x00000000, +0x14100010,0x05cb0154,0x08200000,0x42000000,0x302c8000,0x00000a01,0x00000000,0xf87f1e04, +0x14100758,0x40160209,0x05c00200,0x04200000,0x81000800,0x00000003,0x00000000,0x00000000, +0x2703ffc0,0x003f0000,0xe4004f5c,0x00307348,0x0000e80c,0x21000008,0x00840000,0x0003a080, +0x00000000,0x20200004,0x00000000,0xb00a0032,0x6e401603,0x21510006,0x10108000,0x00280080, +0x24040000,0x19021000,0x000c0000,0x00000000,0x152e0e6c,0x01cb0bd6,0x00200060,0x42000000, +0x80000002,0x00000840,0x00000000,0x003d1e84,0x24182838,0x6e170190,0x00004500,0x30090100, +0x80000800,0x00082384,0x00000000,0x00000000,0x80000ffe,0x00000393,0x24160660,0x503100c6, +0x00016d74,0x00480000,0x98840001,0x0006006c,0x00040000,0x10801080,0x00000000,0xa6720106, +0x482c4283,0x920803a0,0x14802206,0x003000c0,0x80000100,0x13800410,0x00060000,0x00000000, +0x17af2808,0x05010390,0x000c00c0,0x00801000,0xf0024002,0x00401000,0x00000000,0xfc400e44, +0x27b02f64,0xc0171206,0x00000500,0x00080080,0x00000c84,0x00000004,0x00000000,0x00000000, +0x00fbffc0,0x0000ffe0,0x962c080c,0x10703242,0x00014b78,0x00480008,0x00002001,0x0d84a0e0, +0x00000000,0x108100f0,0x00000000,0x18015320,0x482c1324,0x92080000,0x28108206,0x002b0480, +0x24000000,0x49b21000,0x000a0103,0x00000000,0x2400480c,0x05020002,0x000ec116,0x00101000, +0x40000164,0x00400901,0x00000000,0xfc400000,0x27bc0008,0x6e000a00,0x00000700,0x00090000, +0x00000884,0x00102000,0x00000000,0x00000000,0x0003ffc0,0x003eff80,0xf4004f48,0x50303886, +0x00012a64,0x00480000,0x00012009,0x00060000,0x00000100,0x10800004,0x00000000,0x046a0406, +0x6e6c04e4,0x0a060000,0x14802000,0x00100060,0x04000000,0x46b00400,0x00060103,0x00000000, +0x24104828,0x09001b93,0x08290112,0x00801000,0xf1080000,0x00400c00,0x00000000,0xe07e1000, +0x03b84c58,0xc0010a01,0x00000700,0x04200000,0x0201e084,0x00003803,0x00000000,0x00000000, +0x00fbffc0,0x0039fbd0,0x241e6838,0x9030d889,0x00014952,0x00480008,0x00012009,0x0004a100, +0x00000000,0x10808004,0x00000000,0x10015422,0x074c0224,0x9201240e,0x38108206,0x00400060, +0x24040000,0x4cb21000,0x000a0103,0x00000000,0x24106800,0x05888192,0x000c0080,0x42001000, +0x40004002,0x00400801,0x00000000,0xfc400000,0x03b80008,0x60010a04,0x00000700,0x10090000, +0x38000884,0x00100984,0x00000000,0x00000000,0x0003ffc0,0x00000000,0x44062e4c,0x50600006, +0x0000e974,0x00480008,0x18840420,0x0d860024,0x00000000,0x00040004,0x00000000,0x100a0636, +0x07703474,0x820c1404,0x10108206,0x00000060,0x04000000,0x46821000,0x000a0103,0x00000000, +0x24126838,0x01040000,0x000c0094,0x00801000,0xc0424164,0x000010e0,0x00000000,0xf47e1000, +0x03b80548,0x20170a01,0x00400701,0x00090080,0x00000884,0x00100000,0x00000000,0x00000000, +0x3e03ffc0,0x00000000,0xf4066800,0x50311200,0x00012804,0x00480000,0x008400b2,0x000400c0, +0x00040000,0x000500f0,0x00000000,0x0e720022,0x000c8214,0x8a0c03a0,0x19002206,0x000000c0, +0x80040000,0x46800490,0x00040103,0x00000000,0x14044f4c,0x000001dc,0x08260000,0x42001000, +0xf0000000,0x00001001,0x00000000,0xf8400000,0x03b82e69,0xc0070a05,0x06c00600,0x14200080, +0x00000084,0x00003800,0x00000000,0x00000000,0x3efbffc0,0x00000000,0x0416082c,0x5c88c063, +0x00000000,0x21000000,0x98164000,0x0001a0d0,0x00000100,0x00040004,0x00000000,0xa00a0606, +0x68009067,0x92080000,0x28000606,0x00300080,0x24040000,0x49800080,0x0008a103,0x00000000, +0x24126838,0x0000019e,0x00000060,0x42001000,0x01080000,0x00000400,0x00000000,0x00000000, +0x27bc0648,0x20150201,0x00004601,0x00090d80,0x80000084,0x00004802,0x00000000,0x00000000, +0x0003fffe,0x00000000,0xc006481c,0xd00800c6,0x00002810,0x21000000,0x00000001,0x00010020, +0x00000100,0x002500f0,0x00000000,0xa7615122,0x04402107,0x81920006,0x12800606,0x00000000, +0x00000000,0x4c800080,0x00000103,0x00000000,0x04b64800,0x05021a00,0x002e0120,0x10900800, +0xf1080012,0x00000400,0x00000000,0xf8400000,0x041c4820,0xc0112000,0x000044c0,0x00010000, +0x00000c84,0x00002400,0x00000000,0x00000000,0x8003ffc0,0x0000000f,0x00066c70,0x5cc00010, +0x00012801,0x00480000,0x00164001,0x00040080,0x00000000,0x00040004,0x00000000,0x000b9100, +0x00300024,0x81d00320,0x00000606,0x00104454,0x24000000,0x49800084,0x00040103,0x00000000, +0x24004808,0x09008192,0x00000040,0x00100000,0x00024000,0x000006e0,0x00000000,0x003e1000, +0x00002818,0xb0172000,0x000010c0,0x11090d80,0x08000000,0x00002803,0x00000000,0x00000000, +0x3e03ffc0,0x0000fc05,0x00066e78,0x9058c040,0x00018550,0x08480000,0x18000001,0x00010000, +0x00000100,0x00040024,0x00000000,0x16220106,0x07400034,0x8b960010,0x10002206,0x00000000, +0x00020000,0x4c808480,0x00000103,0x00000000,0x34100448,0x00000204,0x002c0000,0x42000012, +0xf1080212,0x00001000,0x00000000,0xfc7e1000,0x03200008,0x80130a02,0x00000600,0x28010000, +0x0241e001,0x00002000,0x00000000,0x00000000,0xa7fbffc0,0x000003ff,0x0006074c,0xdcc090c4, +0x00010008,0x21000000,0x00002801,0x00040100,0x00000100,0x000120f0,0x00000000,0x06600032, +0x07708634,0x80030320,0x28000606,0x00000040,0x24000000,0x49800084,0x00000103,0x00000000, +0x24080800,0x05000192,0x002080b6,0x00100000,0x01080000,0x000006e0,0x00000000,0x00000000, +0x24040558,0xb0011200,0xc6002300,0x00010000,0x00000000,0x00002800,0x00000000,0x00000000, +0x0a03ffc0,0x000000f0,0x24006838,0xdcf00810,0x00004800,0x00480000,0x000c00b2,0x000600a0, +0x05100100,0x00000004,0x00000000,0x061a0202,0x07700024,0x93d202a8,0x4a802206,0x000000b0, +0x04000000,0x498004a0,0x000a0103,0x00000000,0x1410480c,0x05020002,0x00000100,0x00100800, +0x91080000,0x000006e1,0x00000000,0x00000000,0x24100018,0x80130a01,0x06c00620,0x00010000, +0x00000084,0x00001800,0x00000000,0x00000000,0x3a03ffc0,0x00040100,0x02360e40,0x0e981981, +0x00000268,0x00480000,0x000000b2,0x0005c060,0x00000000,0x00040004,0x00000000,0x00020020, +0x05700200,0x819207a4,0x29000606,0x000800c0,0x20000000,0x48908480,0x000a0103,0x00000000, +0x0001cf48,0x09010b90,0x00000180,0x00100000,0x88004000,0x00000a00,0x00000000,0xe47f1000, +0x03300009,0x80150002,0x07000600,0x31090000,0x00000021,0x00003800,0x00000000,0x00000000, +0x0b03ffc0,0x0eff0000,0x24066c4c,0x0cd00004,0x00000020,0x00080000,0x980000b2,0xb400010c, +0x00000000,0x00040004,0x00000000,0x22135038,0x4f602036,0x9a031408,0x18000606,0x00030040, +0x24000000,0x49800084,0x000a0103,0x00000000,0x24a0876c,0x058b0004,0x00080000,0x00800000, +0xf0005002,0x000006e1,0x00000000,0xec7e1fc4,0x03240448,0x86190005,0x07001000,0x20080000, +0x00000800,0x00001800,0x00000000,0x00000000,0xcd03ff80,0x003ee00f,0x34000778,0x00193140, +0x00004800,0x00080000,0x00164000,0xb4040000,0x00000000,0x000500f0,0x00000000,0x1e235904, +0x07700104,0x819e0000,0x28002606,0x000300b0,0x24020000,0x49800484,0x000a0103,0x00000000, +0x000c4c50,0x00ee0152,0x00000180,0x42000800,0x80005002,0x00000a01,0x00000000,0xe8400000, +0x00044d48,0x20130a00,0x00000001,0x00080e00,0xcd01e084,0x00004001,0x00000000,0x00000000, +0x4c000f80,0x0000011e,0x07bc680c,0xdc900010,0x00000000,0x00000000,0x000000b2,0x0e050060, +0x00000000,0x00040000,0x00000000,0x06600d08,0x2f4d3034,0x9b922406,0x10000606,0x000000d4, +0x20000000,0x4c900080,0x000c0103,0x00000000,0x00004c60,0x05020000,0x000a4180,0x00100000, +0xc0004164,0x00040600,0x00000000,0xe4400000,0x03204808,0x90010004,0x07000000,0x20010000, +0x0501e021,0x00001800,0x00000000,0x00000000,0x3903ef80,0x0003f400,0x02204f4c,0x90700082, +0x00000008,0x00000000,0x000100b2,0x000500e1,0x00000000,0x20200004,0x00000000,0x01815020, +0x4f6c0234,0x920e3404,0x49002606,0x000000c0,0x24000000,0xcc900084,0x00000103,0x00000000, +0x00004c72,0x00ca1b9c,0xe02c0180,0x00800010,0xf8004000,0x000c0c00,0x00000000,0xfc7e1000, +0x03344c58,0xe6000110,0x07001000,0x24080000,0x00000001,0x00001c83,0x00000000,0x00000000, +0xff03ef80,0x0fc081cf,0xf406002c,0x0c913040,0x00802834,0x00080000,0x001640b2,0x000520c0, +0x00000000,0x902200f0,0x00000000,0xa6639100,0x07630903,0x000a2406,0x48042400,0x000000a0, +0x24000000,0xc9000084,0x00000103,0x00000000,0x00004c60,0x05000192,0x00000000,0x00100000, +0xf8020002,0x240406c0,0x00000000,0xf4400000,0x03a40658,0xb2010000,0x07001080,0x20080e00, +0x40000800,0x00001803,0x00000000,0x00000000,0x1d03e000,0x000087f0,0x47b84f4c,0x50304880, +0x00004800,0x08480000,0x00000000,0x00066000,0x00000000,0x10200004,0x00000000,0x063b5002, +0x06700274,0x8b940321,0x4c002207,0x002000d0,0x24000000,0xc9108484,0x000c0103,0x00000000, +0x15200f70,0x05ee819e,0x002c0130,0x00800800,0xb8004010,0x480c0e01,0x00000000,0xe0400000, +0x00060000,0xe0000000,0x00000400,0x00010000,0x00000084,0x00001c00,0x00000000,0x00000000, +0xde03ef80,0x003e8ec7,0x04060e6c,0x5008f050,0x00c04860,0x00080000,0x00164009,0xb005c000, +0x00001c01,0x00040000,0x00000000,0x06000436,0x00323874,0x00022405,0x49000400,0x001800d4, +0x24000000,0xc0000084,0x00080103,0x00000000,0x14122800,0x05069a08,0x000000a0,0x00900000, +0x882c8810,0x00000001,0x00000000,0x00000fc4,0x03a00444,0x8a182190,0x000010e0,0x20080e00, +0x00000821,0x00000001,0x00000000,0x00000000,0x12000f80,0x0000fd30,0x3626680c,0x500303c9, +0x00c06820,0x00480000,0x000000b2,0x00030000,0x00000000,0x00048004,0x00000000,0x06035808, +0x04403000,0x9a0003a0,0x40002607,0x000000cc,0x20000000,0x09600000,0x000c8000,0x00000000, +0x2400482c,0x010403d7,0x00270180,0x00800000,0xc0000002,0x000c0641,0x00000000,0xfc400f84, +0x00002800,0xa818c002,0x07000000,0x01090000,0x38000801,0x00001803,0x00000000,0x00000000, +0xce000000,0x00003d6f,0x37260f7e,0x90013000,0x0001c804,0x00000000,0x002120b2,0x0e000000, +0x00001c00,0x04240000,0x00000000,0x00320100,0x68103040,0x81940330,0x40002207,0x000000c0, +0x24000000,0xc9c00484,0x000ca103,0x00000000,0x24100f48,0x0d0101dc,0xe00800a0,0x00100007, +0xa82c8164,0x00080641,0x00000000,0x00000000,0x17ae4c60,0xa8000190,0x07000000,0x24080000, +0x00000001,0x00000000,0x00000000,0x00000000,0x17000000,0x00380140,0x34182f4c,0x904000c8, +0x0001c808,0x00080000,0x001640b2,0x000000c1,0x00000000,0x00200000,0x00000000,0x00015038, +0x48003234,0x0b920230,0x18002000,0x000000c0,0x20000000,0xc0000480,0x00080103,0x00000000, +0x0010680c,0x00c80000,0x00000120,0x00000000,0xf0000000,0x00001000,0x00000000,0xfc400000, +0x00082818,0x8e001202,0x07000400,0x00010e00,0x00000001,0x00003800,0x00000000,0x00000000, +0x9803e000,0x003e0396,0x3418081c,0x90400116,0x0001c838,0x00080000,0x000000b2,0x00020000, +0x00001c00,0x000620f0,0x00000000,0x18035900,0x00000904,0x00060006,0x4b802400,0x0000004c, +0x24000000,0x00000084,0x00080000,0x00000000,0x00000830,0x09050a02,0x04200180,0x00000000, +0x002c8002,0x00000c01,0x00000000,0xe0400000,0x03a64d50,0xc4101212,0x07000060,0x24200000, +0x00000000,0x00000000,0x00000000,0x00000000,0x21000000,0x003891b0,0x3416680c,0x10300081, +0x0001a820,0x08480000,0x001640b2,0xd40660e0,0x00000001,0x24240000,0x00000000,0x00615d00, +0x680c3134,0x20000018,0x21842400,0x000000cc,0x04000000,0x00000080,0x000a0000,0x00000000, +0x24006800,0x00ed9a0c,0x00000130,0x00100000,0xc0001002,0x00001080,0x00000000,0x00000000, +0x02204808,0x02160b92,0x07000421,0x00080e00,0x00000001,0x00001804,0x00000000,0x00000000, +0x15000f80,0x003f0190,0x47a60f5c,0xd0003302,0x00014810,0x00480000,0x000000b2,0x0e0280e0, +0x00000000,0x00040004,0x00000000,0x1c015d36,0x2e6b2024,0x2b900320,0x20002000,0x000000d0, +0x24000000,0x00008484,0x0006a000,0x00000000,0x3404680c,0x09010000,0x002c00a0,0x00900000, +0x18004164,0x00001041,0x00000000,0xfc781000,0x03a64820,0x4e000a06,0x07000400,0x20080000, +0x00000021,0x00004c00,0x00000000,0x00000000,0x20000000,0x003f0190,0x00000000,0x90004802, +0x00014820,0x00080000,0x001640b2,0x00000000,0x00000000,0x00240004,0x00000000,0x042b9102, +0x68200014,0x120e3400,0x10002000,0x003800d4,0x24000000,0x09b00404,0x00000000,0x00000000, +0x2400481c,0x00c90194,0x002240a0,0x00800000,0x40020000,0x000c1040,0x00000000,0x00000000, +0x00064820,0x00061315,0x07000200,0x00010e00,0x38000001,0x00003803,0x00000000,0x00000000, +0x00000000,0x00000230,0xc3a6045c,0x901008c2,0x0001a820,0x00080000,0x001640b2,0x0e020060, +0x00001c00,0x00000000,0x00000000,0xa07a0120,0x000c0007,0x22000404,0x21000000,0x00400000, +0x24000000,0xc6000404,0x000a2103,0x00000000,0x00042f78,0x00010003,0x00000120,0x00000000, +0xc02c8164,0x000010c1,0x00000000,0x00000000,0x03a00444,0x000c0a00,0x07000461,0x20080e00, +0x38000821,0x00001804,0x00000000,0x00000000,0x2103e000,0x00009ba0,0x3626074c,0x0cc00000, +0x00012e44,0x08480000,0x000000b2,0x0e01c000,0x00001c00,0x04240004,0x00000000,0x06420e04, +0x07403624,0x21d42409,0x40000400,0x00380084,0x20000000,0x10000400,0x00000000,0x00000000, +0x2400680c,0x0dcf01d2,0x00230000,0x00100000,0xf02c8164,0x000010c1,0x00000000,0x003f1f84, +0x00020648,0x30001356,0x070002c1,0x00080000,0x00000800,0x00001800,0x00000000,0x00000000, +0x1f03e000,0x0e40979e,0x2418074c,0x00111000,0x00c06801,0x00480000,0x00164000,0x00060000, +0x00001c00,0x40040000,0x00000000,0x00015238,0x077c0004,0x01980327,0x43802400,0x000000a0, +0x24000000,0x07008484,0x000ca000,0x00000000,0x0014080c,0x00cd8000,0x000000a0,0x10900000, +0xd02c8000,0x6c0010c0,0x00000000,0xe0400000,0x02204820,0x08160209,0x000004e1,0x00010e00, +0xb8000801,0x00000001,0x00000000,0x00000000,0x1a000000,0x00000150,0x03a0000c,0x9000cb06, +0x00c0e838,0x00400000,0x000000b2,0x00020000,0x00000000,0x00200000,0x00000000,0xb0039100, +0x07700003,0x920207a0,0x31002607,0x000000c4,0x24000000,0x10000400,0x000a0000,0x00000000, +0x00006800,0x008c1202,0x002400a0,0x00148000,0xc0000010,0x00000001,0x00000000,0x00000000, +0x02a02800,0x2e18120c,0x07000e01,0x01090000,0x38000081,0x00003c03,0x00000000,0x00000000, +0x3803e000,0x003ef390,0x03be044c,0x90110003,0x00004800,0x20400000,0x000020b2,0x0e01c0e0, +0x01b00000,0x2426a0f0,0x00000000,0x004a0008,0x0d443000,0x819836b9,0x0b802207,0x00280000, +0x20000000,0x10000090,0x00000000,0x00000000,0x00066830,0x0000019b,0x00080000,0x00100000, +0x00020164,0x00000c00,0x00000000,0xf8400000,0x03a60544,0xe0101a08,0x070908a0,0x21090000, +0x00000021,0x00003804,0x00000000,0x00000000,0xa3000000,0x003ff808,0x34060740,0x905901c0, +0x00c06838,0x00400000,0x00840000,0x0e02c000,0x00001c00,0x20240004,0x00000000,0x06000128, +0x00300524,0x20000006,0x28000400,0x00280060,0x00000000,0x00000080,0x000c0000,0x00000000, +0x25a0680c,0x00ea0000,0x000ac136,0x10900000,0x802c8164,0x00000c00,0x00000000,0x00000fc4, +0x00064820,0x20100190,0x00000d01,0x00080080,0x00000800,0x00000000,0x00000000,0x00000000, +0x40000000,0x003fe629,0x373c680c,0x90588050,0x00002830,0x00400a20,0x002120b2,0x0005c080, +0x00000000,0x20240000,0x00000000,0xa00a0300,0x0f5c1003,0x800003a0,0x13902207,0x00400060, +0x04000000,0x10000080,0x0006c080,0x00000000,0x3416080c,0x0d058392,0x002c0120,0x10900000, +0xd0000000,0x00000241,0x00000000,0x00000f84,0x03a02e49,0x20000196,0x07000481,0x20010000, +0x38000800,0x00003803,0x0000002d,0x00000000,0x00000000,0x00000240,0x74060544,0xd0401346, +0x00004b40,0x00400000,0x800020b2,0x0e03c0e0,0x00000000,0x04240004,0x00000000,0x06000d00, +0x003c0600,0x01920018,0x38000400,0x000000d0,0x24000000,0x13008480,0x000c0080,0x00000000, +0x34060004,0x09001358,0x00200000,0x00800000,0x70004164,0x00000e61,0x00000000,0x00000fc4, +0x03b82e64,0x0018019e,0x070010c1,0x00080000,0x00000801,0x00004800,0x00000024,0x00000000, +0x2403e000,0x09ff0390,0xf416074c,0x0c803902,0x00004809,0x00400fc0,0x00164000,0x00004060, +0x00000000,0x102220f0,0x00000000,0xa001d002,0x68000303,0x3b5c0000,0x48102000,0x00400000, +0x20000000,0x10000400,0x000c8000,0x00000000,0x34066d54,0x01c9000c,0xc0224140,0x10900006, +0x80004000,0x7e000c61,0x00000000,0xe0400000,0x03a62804,0x30100002,0x00000621,0x24080e00, +0xc0000001,0x00001804,0x00000000,0x00000000,0x22000000,0x00250250,0x34196c4c,0x00007006, +0x00006e78,0x08480000,0x00164408,0x000340ec,0x02401c00,0x00200004,0x00000000,0x04615008, +0x680c0040,0x33de36a8,0x48002000,0x000000c0,0x20000000,0x08000410,0x00060000,0x00000000, +0x353c281c,0x00ee0002,0xc0224120,0x00800006,0xc02c8212,0x00001000,0x00000000,0xfc400e84, +0x03260441,0xc0001350,0xb4001000,0x24080e00,0x00000800,0x00000003,0x00000000,0x00000000, +0x3f03e000,0x000003d0,0x03a6480c,0x50400309,0x0001280c,0x20400000,0x80164001,0x0e05c00a, +0x00000000,0x000600f0,0x00000000,0x38615130,0x074c0937,0x120203a6,0x1b842400,0x00402000, +0x20000000,0x10000080,0x00000000,0x00000000,0x00100830,0x00070000,0x40140120,0x0086c002, +0xc0000164,0x00000c01,0x00000000,0xf4400000,0x02a80448,0x20000098,0x000902c1,0x04080e00, +0x38000081,0x00003004,0x00000000,0x00000000,0x3903ef80,0x0aa7ee60,0xc41e6808,0x00004012, +0x00004b48,0x08480000,0x001640b2,0x0e0200c0,0x03f00000,0x902280f0,0x00000000,0x1c0a0106, +0x2f4c00f4,0x0192032e,0x42000400,0x004000d4,0x20000000,0x00000090,0x00000000,0x00000000, +0x25b80030,0x00c80154,0x00000000,0x00800000,0xf0004164,0x00201081,0x00000000,0xfc400000, +0x04040e48,0x0e001a0a,0x07000a01,0x00080e00,0x1441e000,0x00003c84,0x00000000,0x00000000, +0x80fc0000,0x097f9e3e,0x83a04810,0x900041c0,0x00004818,0x00080000,0x00000000,0x0e032000, +0x00000000,0x60a40004,0x00000000,0xa6135600,0x074c04c3,0x01920000,0x43802400,0x000000d4, +0x24000000,0x09008484,0x000c8000,0x00000000,0x341c4804,0x00c913d0,0x00160060,0x00100000, +0xe0020164,0x01e010e1,0x00000000,0xa8b91fc4,0x36200460,0x2000009b,0x00000201,0x00080000, +0x00000801,0x00003800,0x00000000,0x00000000,0x0003f000,0x0000e3f0,0x34066c4c,0x9ef00003, +0x0001c820,0x00080000,0x00164001,0x0005c000,0x00001c00,0x04240000,0x00000000,0x06135900, +0x48303040,0x01dc0000,0x23800400,0x1c400040,0x20000002,0x10000400,0x00000000,0x00000000, +0x24000000,0x05e90198,0x002e00a0,0x00800000,0xc02c8000,0x000010e1,0x00000000,0x00000000, +0x03260800,0x201013da,0x000004c1,0x20090e00,0x80800821,0x00001803,0x00000000,0x00000000, +0xcdf7ef80,0x00004cc2,0x00004800,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000c, +0x00000000,0x00009020,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000008c0,0x00000000,0x00132000,0x00000000,0x00000000,0x00000000,0x00000000, +0x05218800,0x00000000,0x00000000,0xbf400000,0x00000000,0x00000d30,0x00000008,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x000180c4,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000, +0x01b00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000006,0x00000040,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x20000000,0x00000206,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000008c0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x01900000,0x00000000,0x00000000,0x00000000,0x00008480,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x40000000,0x00000005,0x00000000,0x00000000,0x00000020,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00080000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000c000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00060000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x80000000,0x00000003,0x24000000,0x90000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000034, +0x00000000,0x00000000,0x00000000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x04000f40,0x00000000,0x00040000,0x00040000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002000,0x00000000, +0x34000000,0x00000000,0x90000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x28010000,0x00000005,0x00000000,0x00000000,0x00000000, +0x80fbef80,0x05002c02,0x00006800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80209020,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x02000000, +0x00000100,0x08000000,0x00060000,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00080400,0x00000000,0x508b2288,0x00000000,0x00000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x00fc0000,0x00140000,0x0000000c,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x29740000,0x00000002,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xc0000400,0x00000103,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3f400000, +0x0ff7ef80,0x00004cf3,0x00040000,0x00100000,0x00000000,0x80000000,0x00000000,0x00000000, +0x00000000,0x00009020,0x00000000,0x01000801,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000300,0xc0000000,0x00000103,0x00000000,0x00080000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00132000,0x00000000,0x00000000,0x00000000,0x00000000, +0x05418800,0x00000000,0x00000000,0xbf400000,0x40000000,0x00004c04,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000002, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x08a00000,0x00000000,0x00000000, +0x00100000,0x00000000,0x00000000,0x00000000,0x00000000,0x0004a000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x04000000,0x00000000,0x00004800,0x00000000,0x00000800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x20000000,0x00000206,0x00000000, +0x00000000,0xc0000000,0x00000103,0x00000000,0x24004800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0003d000,0x00000040,0x00000008,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x01300002,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000001,0x00000000,0x00000000,0x00800000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00060000,0x00120000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002804,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000002,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80000000,0x00000207,0x00000034,0x00000000,0x00000000,0x00000000,0x00000000, +0x24000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34060000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00004180,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000034, +0x00000300,0x00000000,0x00000000,0x00000000,0x24100000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x34060000,0x00000000,0x00000000,0x00000000, +0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00152c00,0x00000000,0x00000000, +0x00000030,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000054,0x00000000,0x00000000,0x00000000,0x00000000, +0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00180000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00006800,0x00000000,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00002000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x03a00000,0x80000000,0x000000c0,0x20000000, +0x00000021,0x00000000,0x00000000,0x00000000,0x4efbef80,0x05123803,0x34000030,0x00000000, +0x00000030,0x08480000,0x00000000,0x00000000,0x00000000,0x80209020,0x00000000,0xa0000000, +0x00000007,0x00000000,0x00008000,0x01800000,0x00000c00,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x508e2348, +0x00180000,0x00000000,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x00000000, +0xd5ffefbe,0x00143002,0x00060000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000c, +0x00000000,0x69749020,0x00000002,0x01800000,0x00000000,0x00000000,0x00000000,0x06000000, +0x00000300,0x00000000,0x00000000,0x00000000,0x01200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x48000000,0x00000000,0x000c22c8,0x00000000,0x60000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x3f400000,0xcdfbffc0,0x02800c03,0x34000000,0xd0000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x902280c4,0x00000000,0x0001d000, +0x00000034,0x00000000,0x00042400,0x00000000,0x00000000,0x08900000,0x00000000,0x00000000, +0x01a00000,0x00000000,0x00000000,0x00000000,0x00000000,0x01840000,0x00000000,0x28800000, +0x00000000,0x00000000,0x00000000,0x00000000,0x05418800,0x00000000,0x00000000,0x00000000, +0x84d3ff76,0x04ce4c02,0x0004e800,0x00000000,0x00000060,0x80000000,0x00001000,0x00000000, +0x00000000,0x90229964,0x00000000,0x00000001,0x00000600,0x20000000,0x2b800286,0x00300000, +0x00001600,0xc0000000,0x00000103,0x00000000,0x34180000,0x00000000,0x000a0000,0x00000000, +0x00000000,0x00200000,0x00000000,0x4d400e44,0x00000000,0x80000a00,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x805fa000,0x0cffff00,0x02f92950,0x77200000,0x00000000, +0x000a6800,0x00000000,0x00212000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000000,0x00000000,0x00002000,0x00000000,0x00000400,0x08000000,0x00000000,0x00000000, +0x34060000,0x00000000,0x00000000,0x00000000,0x00000000,0x0020a000,0x00000000,0x2c8a2000, +0x00002800,0x001000d6,0x00000000,0x00200000,0x04418800,0x00000000,0x00000000,0x00000000, +0x4edbf000,0x04c04c05,0x00000000,0xd0000000,0x00006830,0x08480000,0x00000000,0x00000000, +0x00000000,0x90229964,0x00000000,0xa0120003,0x00000003,0x00000000,0x00000000,0x00300000, +0x00001600,0x08a00000,0x00000000,0x00000000,0x04060000,0x00000000,0x00000000,0x00000000, +0x00000000,0x0024a000,0x00000000,0x4d400000,0x00020030,0x00000050,0x00000000,0x00000000, +0x00000004,0x00000000,0x00000000,0x805fa000,0x0bfc0f38,0x02842800,0x74000000,0x00184000, +0x00000800,0x80000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x01800800, +0x00000000,0x00000000,0x00000000,0x00000034,0x00000000,0xc0000000,0x00000103,0x00000000, +0x34302800,0x00000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800000, +0x24000800,0x00000004,0x000000c0,0x00000000,0x04418800,0x00000000,0x00000000,0x00000000, +0x00e3ff00,0x050050a0,0x43a10000,0x00000000,0x000a4810,0x00000000,0x01003000,0x00000000, +0x00000000,0x9022a960,0x00000000,0x00000001,0x00000000,0x80000000,0x00000287,0x02302800, +0x00000000,0x00000000,0x00000000,0x00000000,0x34040000,0x00000000,0x00000000,0x00000000, +0x00000000,0x01000000,0x00000000,0x51400000,0x00006c4b,0x00101204,0x00000000,0x08010000, +0x0221e000,0x00000000,0x00000000,0x805fa000,0x17ebffbc,0x059758e3,0x1403a803,0x0ae80000, +0x00000030,0x00000000,0x02000000,0x0e000002,0x00001c00,0x9022a960,0x00000000,0x00000001, +0x00000064,0x80000004,0x00000206,0x08000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00066c40,0x0d000000,0x08180140,0x00000000,0x006c8164,0x00800000,0x00000000,0x59400308, +0x00000758,0x00100008,0x00000000,0x19200000,0x01204400,0x00000000,0x00000000,0x805fa000, +0x80fbdfba,0x02c00002,0x00030808,0x00080000,0x00020000,0x00000008,0x20002001,0x000000d1, +0x00060000,0x90200184,0x00000000,0x04000000,0x04400100,0x80000000,0x00102206,0x08342400, +0x20000000,0x08000010,0x00000000,0x00000000,0x14080030,0x00e9c000,0x04000000,0x00000000, +0x00000000,0x02000000,0x00000000,0x2c800288,0x00000030,0x001700d4,0x00000000,0x14080000, +0x01204400,0x00004000,0x00000000,0x00000000,0x8d03ffc0,0x00002c20,0x24004800,0x1a804002, +0x01020000,0x00000000,0x00000000,0x00000000,0x00000000,0x000100f0,0x00000000,0x000a0000, +0x05400200,0x80000000,0x10000206,0x00422400,0x00000000,0x40800000,0x00000103,0x00000000, +0x34000460,0x00000000,0x001b0166,0x00000000,0xc0004000,0x00000000,0x00000000,0x00192000, +0x00004800,0x6013920c,0x00000000,0x00000000,0x0201e000,0x00000000,0x00000000,0x00000000, +0x0cffffc0,0x03590970,0x24146820,0x10080000,0x00002800,0x00000008,0x023641b2,0x00000000, +0x00040000,0x00000000,0x00000000,0x00200408,0x00040880,0x800003a0,0x00108207,0x00000000, +0x80000000,0x40000010,0x00000103,0x00000000,0x00000000,0x00000000,0x08000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000740,0x00000000,0x07000000,0x04200e00, +0x0201e000,0x00000000,0x00000000,0x00000000,0x40f3ffc0,0x06406573,0x36282c44,0x0c800000, +0x00000800,0x00000000,0x00000000,0x00000000,0x00000000,0x90209044,0x00000000,0x00200002, +0x00000514,0x80000000,0x00000206,0x08000000,0x00002000,0x48000000,0x00000103,0x00000000, +0x00006800,0x00000000,0x00001200,0x00000000,0x00000000,0x00800000,0x00000000,0x00000348, +0x0000680c,0x00061a00,0x00000000,0x00000000,0x39204000,0x00004481,0x00000000,0x00000000, +0xcfe3ffb8,0x064064b2,0x14000742,0xda800002,0x00000008,0x00000000,0x28165000,0x0e0000e1, +0x00000000,0x90229964,0x00000000,0x00000009,0x00000000,0x80000000,0x00000206,0x08302400, +0x00001000,0x40000000,0x00000103,0x00000000,0x00060550,0x00000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x654002c8,0x00000008,0x000000dc,0x00000000,0x10000e00, +0x01204400,0x00004380,0x00000000,0x805fa000,0x57fbfffb,0x028038f3,0x66200000,0x00600000, +0x00022810,0x00000000,0x28000000,0x000000c1,0x00001c00,0x902110f0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000206,0xfc302400,0x0001f4ff,0x40000000,0x00000103,0x00000000, +0x00106e40,0x00880000,0x00000000,0x00000000,0x002c8000,0x02000000,0x00000000,0x28800000, +0x00000000,0x0010000c,0x00000000,0x00000000,0x0221e400,0x00000000,0x00000000,0x00000000, +0x17ffffbb,0x00003170,0x40040000,0x00080006,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00020000,0x07400100,0x80000000,0x00000206,0x00000000, +0x0001fc00,0x40000000,0x00000103,0x00000000,0x34000038,0x50000000,0x000000d6,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00001200,0x00000000,0x00000000, +0x0221e400,0x00000000,0x00000000,0x00000000,0x0ffffffc,0x039734f3,0x00006803,0x0a810000, +0x00006830,0x00000000,0x000011b2,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00300800,0x80000000,0x00000206,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x04060640,0x50000000,0x001b0000,0x00000000,0x00000000,0x02000000,0x00000000,0x388d2308, +0x0000680c,0x00000008,0x07000000,0x00000000,0x39204400,0x00000001,0x00000000,0x00000000, +0xcfe3ffb8,0x064064b2,0x14000742,0xda800002,0x00000008,0x00000000,0x28165000,0x0e0000e1, +0x00000000,0x90229964,0x00000000,0x00000009,0x00000000,0x80000000,0x00000206,0x08302400, +0x00002200,0x40000000,0x00000103,0x00000000,0x00060550,0x00000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x654002c8,0x00000008,0x000000dc,0x00000000,0x10000e00, +0x01204400,0x00004380,0x00000000,0x805fa000,0x57fbfffb,0x028038f3,0x66200000,0x00600000, +0x00022810,0x00000000,0x28000000,0x000000c1,0x00001c00,0x902110f0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000206,0xfc302400,0x0001f4ff,0x40000000,0x00000103,0x00000000, +0x00106e40,0x00880000,0x00000000,0x00000000,0x002c8000,0x02000000,0x00000000,0x28800000, +0x00000000,0x0010000c,0x00000000,0x00000000,0x0221e400,0x00000000,0x00000000,0x00000000, +0x17ffffbb,0x00003170,0x40040000,0x00080006,0x00006800,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00020000,0x07400100,0x80000000,0x00000206,0x00000000, +0x0001fc00,0x40000000,0x00000103,0x00000000,0x34000038,0x50000000,0x000000d6,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00001200,0x00000000,0x00000000, +0x0221e400,0x00000000,0x00000000,0x00000000,0x0ffffffc,0x039734f3,0x00006803,0x0a810000, +0x00006830,0x00000000,0x000011b2,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00300800,0x80000000,0x00000206,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x04060640,0x50000000,0x001b0000,0x00000000,0x00000000,0x02000000,0x00000000,0x388d2308, +0x0000680c,0x00000008,0x07000000,0x00000000,0x39204400,0x00000001,0x00000000,0x00000000, +0x40dfefb8,0x04402ff3,0xb6b00000,0xdc800000,0x00026c6c,0x00000000,0x803640b2,0x0f84a00e, +0x00000000,0x902290d0,0x00000000,0x00000009,0x054020c0,0x81900006,0x30000286,0x0a000000, +0x04001400,0x40000084,0x00000143,0x00000000,0x3406080c,0x00008000,0x00000112,0x00000000, +0x70000164,0x00200600,0x00000000,0x45c00f84,0x00000000,0x60000000,0x07c00200,0x00000f80, +0x0521a000,0x00000000,0x00000000,0xbf400000,0x0d03ef80,0x000048b0,0x00066e60,0x0e980000, +0x0801067c,0x80080008,0x000001b2,0x000000c0,0x00000000,0x000180f0,0x00000000,0xa001d000, +0x00002002,0x81920220,0x20108306,0x08300000,0x20000000,0x40000080,0x00000183,0x00000000, +0x04062804,0x00000000,0x08000000,0x00800000,0xf0000000,0x000010c1,0x00000000,0x00000000, +0x00000800,0x80000000,0x07c00000,0x04200000,0x04c1a000,0x40001800,0x00000000,0x00000000, +0xc0ebef80,0x003c3402,0x00090003,0x00010101,0x10000000,0x80000000,0x00000000,0x000300c0, +0x00001f00,0x000210d0,0x00000002,0x02011000,0x00040000,0x800203a0,0x18000686,0x16384a00, +0x20001400,0x40000400,0x00000143,0x00000000,0x00000008,0x00000000,0x00300178,0x00000000, +0x406c8000,0x00000000,0x00000000,0x00000000,0x00004808,0x80000200,0x00000ac0,0x00010000, +0x0421a000,0x80000000,0x00000000,0x00000000,0x7dfbef80,0x02c02c03,0x36380010,0x10100008, +0x30000740,0x00400000,0x000020b2,0x000000e1,0x00000000,0x902210d0,0x00000000,0xa0011008, +0x2f603002,0x800003b8,0x20000706,0xf4302a00,0x040028ff,0x40000000,0x00000183,0x00000000, +0x34100550,0x00000150,0x00180000,0x00100000,0xc0000000,0x06000601,0x00000000,0x2c800fc4, +0x00002c40,0x24000000,0x07c008e1,0x00010000,0xc221e000,0x00000003,0x00000000,0x00000000, +0x00ffef80,0x00113520,0x24060540,0x0c980100,0x08002800,0x00400000,0x00002000,0x0f800000, +0x00000000,0x697120f0,0x00000002,0x00000008,0x00001840,0x81900220,0x00002286,0x00000000, +0x20000000,0x40000080,0x00000143,0x00000000,0x00024d44,0x00000001,0x0032c0c0,0x00000000, +0x00000164,0x00600000,0x00000000,0x00381e44,0x00006800,0x00000000,0x00000600,0x00010000, +0x8221e000,0xc0000003,0x00000000,0x3f400000,0xfffbffc0,0x02b93402,0x34106800,0x50100000, +0x3800075c,0x28480000,0x00164001,0x0f80c000,0x00000000,0x902290d0,0x00000000,0x20000006, +0x08000002,0x80020000,0x2c000286,0x08000000,0x00001000,0x48000000,0x00060143,0x00000000, +0x03200e64,0x00c80000,0x00660166,0x00000000,0x00000164,0x00800000,0x00000000,0x28800000, +0x24000810,0x00000000,0x00000000,0x00000f80,0x0521a000,0x80004380,0x00000000,0x00000000, +0x0be3fffb,0x00002cd0,0x40000000,0x00084000,0x18000808,0x00000014,0x001641b2,0x00000000, +0x00161f00,0x000660d0,0x00000002,0x00000000,0x00000200,0x80000000,0x00202686,0x12000000, +0x24000c00,0x40000020,0x00000143,0x00000000,0x07b80f40,0x00a80000,0x00310100,0x00800000, +0x002c8000,0x00000600,0x00000000,0xf4400000,0x00040002,0x00001a00,0x07c00000,0x10080f80, +0xc4c1a000,0x00000003,0x00000002,0x38400000,0x83efff80,0x04404403,0x2401cd4c,0x00000002, +0x0000000c,0x00400000,0x00001000,0x00000000,0x00000000,0x90229960,0x00000000,0x26011101, +0x04433002,0x80000000,0x00002306,0x02000000,0x00000600,0x48000000,0x00000183,0x00000000, +0x00060000,0x00000000,0x00181ad6,0x00000000,0x00000000,0x0024a000,0x00000000,0x45400388, +0x0000000b,0x00000000,0x00000000,0x10000000,0x01204000,0x80004280,0x00000001,0x805fa000, +0xc3fbef80,0x03523032,0x00040009,0x00000000,0x30026800,0x00000000,0xaa0021b2,0x000000d0, +0x00001c00,0x90209020,0x00000000,0x00015000,0x00000000,0x80000000,0x00040686,0x02302000, +0x00000400,0xc9000000,0x00000103,0x00000000,0x24000000,0x00000000,0x001ac000,0x00000000, +0x006c8000,0x008c6000,0x00000000,0x348c22c8,0x00006800,0x00100000,0x07000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x8ffbfffc,0x02804924,0x00000000,0x0a800000, +0xc0462e4c,0x00000000,0x00364000,0x00000000,0x00000000,0x902100f0,0x00000000,0x00000000, +0x05403000,0x80000000,0x00000286,0x00000000,0x00000000,0xc8000000,0x00000103,0x00000000, +0x14200000,0x00000000,0x0018c000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800f84, +0x00000003,0x001212d0,0x00000000,0x00000e00,0x0441e000,0x00000000,0x00000000,0x00000000, +0x3efbfffc,0x00c00124,0x02a00000,0x00080002,0x00000348,0x00000000,0x80164000,0x0000000c, +0x00000000,0x000260d0,0x00000000,0x00000100,0x00000000,0x80000000,0x00000207,0x00000000, +0x00000000,0x40000000,0x00000143,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000f84,0x00000800,0x0000000c,0x00000400,0x00000e00, +0x0521a000,0x80000000,0x00000007,0x00000000,0xd0ffffc0,0x00002900,0x00020000,0x0c800000, +0x30000830,0x80080000,0x00000000,0x00000000,0x00000000,0x000280f0,0x00000000,0x00011000, +0x00040000,0x80000000,0x00200686,0x0c000000,0x00000000,0x40000000,0x00000143,0x00000000, +0x00100640,0x00000000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x14000000,0x80000200,0x00000000,0x00000000,0x04c1a000,0x00004381,0x00000003,0x00000000, +0xc3ffffc0,0x04be4003,0x16200800,0x00100000,0x90000000,0x80000000,0x010020b2,0x00000000, +0x00001c00,0x90209020,0x00000000,0x00019000,0x00000004,0x80000000,0x00400706,0x02000000, +0x00000400,0x40000000,0x00000143,0x00000000,0x04000008,0xb0000000,0x00000000,0x00000000, +0x002c8002,0x00800000,0x00000000,0x489023c8,0x00006800,0xf2000000,0x07000260,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x00f7ff40,0x03c03c50,0x00026808,0x0e800000, +0xe0000000,0x00000000,0x02000000,0x00000000,0x00000000,0x9022a960,0x00000000,0x00000001, +0x00000124,0x80080000,0x4ac00286,0x12000000,0x00000000,0xc8000000,0x00000143,0x00000000, +0x00000663,0x00000000,0x00000000,0x00000000,0x00000000,0x00280000,0x00000000,0x3d400000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0421e000,0x40000000,0x00000003,0x805fa000, +0x43fbffc0,0x030c3823,0x00040808,0x08820000,0xe88e0000,0x00000000,0x02000000,0x00000000, +0x00000000,0x9022a0d0,0x00000000,0x04600000,0x00000800,0x80000000,0x00400306,0x00000000, +0x00000000,0xc8000000,0x00000143,0x00000000,0x00000660,0x00000000,0x00000000,0x00000000, +0x00000000,0x12082000,0x00000000,0x30800000,0x00000642,0x00120000,0x00000000,0x00080000, +0x0541a000,0x80000000,0x00000003,0x00000000,0x00fbffc0,0x02ca3003,0x14000000,0x0ac04000, +0x500e0000,0x00000000,0x00000000,0x00000000,0x00000000,0x902290d0,0x00000000,0x00000000, +0x00000024,0x80000000,0x00000287,0x0c000000,0x00000800,0xc8900000,0x00000143,0x00000000, +0x04000660,0x00000000,0x00000000,0x00000000,0x00000000,0x09082000,0x00000000,0x2c800000, +0x00000000,0x00120090,0x00000000,0x00000000,0x0521a000,0xc0000000,0x00000003,0x00000000, +0x0cfbffc0,0x028000c0,0x00000000,0x10000000,0x80000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x902260d0,0x00000000,0x00000000,0x00000900,0x80000000,0x00000287,0x10000000, +0x00001000,0xc0000000,0x00000103,0x00000000,0x34000660,0x00000000,0x00000000,0x00000000, +0x00000000,0x09000000,0x00000000,0x28800000,0x00000000,0x00000298,0x00000000,0x00000000, +0x04c1a000,0x00000000,0x00000000,0x00000000,0x8003ffc0,0x00002802,0x24002808,0x08801000, +0x08000020,0x00000000,0x00000000,0x00000000,0x00000000,0x000290d0,0x00000000,0x00000020, +0x00000000,0x80000000,0x00000286,0x08000000,0x00000800,0x40000000,0x00000143,0x00000000, +0x00060660,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000002,0xa0000008,0x00000000,0x00000000,0x0521a000,0x40000000,0x00000001,0x00000000, +0x0afbffc0,0x000000a0,0x40000003,0x00600000,0x18004808,0x00000000,0x80000000,0x00000100, +0x00000000,0x000260d0,0x00000000,0x0013d000,0x00000900,0x92000000,0x00000706,0x0c300000, +0x00002000,0x40000000,0x00000183,0x00000000,0x34000740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00004800,0x00000008,0x00000000,0x00000000, +0x04c1a000,0xc0000000,0x00000001,0x00000000,0x0003efc0,0x00000003,0x34004800,0x00200000, +0x08000008,0x00000000,0x00000000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00000800, +0x00000100,0x80080000,0x00000286,0x18000000,0x00004400,0x40000000,0x00000143,0x00000000, +0x24060660,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004808,0x00000000,0x00000000,0x00000000,0x0421a000,0xc0000000,0x00000000,0x00000000, +0x8003effe,0x00002c02,0x00006800,0x00000000,0x38000000,0x00000000,0x00000000,0x000000c0, +0x00000000,0x000210f0,0x00000000,0x01600c00,0x00003900,0x80000000,0x00000306,0x18300000, +0x00000400,0x40000000,0x00024183,0x00000000,0x00040020,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x003f1000,0x00006828,0x00100000,0x00000000,0x10000000, +0x0521a400,0x40000000,0x00000001,0x00000000,0x0003fffe,0x00003003,0x0400c802,0x00001000, +0x48006e40,0x00000000,0x1a000000,0x000000e1,0x00000000,0x002210d0,0x00000000,0x00000022, +0x00000224,0x80000000,0x00000286,0x1a304420,0x00002800,0x40000000,0x00000143,0x00000000, +0x03a40030,0x00000000,0x01400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00004808,0x001001d0,0x00000000,0x00000000,0x0421a400,0xc0000000,0x00000002,0x00000000, +0x8003fffe,0x000b33f2,0x14010000,0x00000000,0x48000008,0x00000000,0x20000000,0x000000e1, +0x00000000,0x000110f0,0x00000000,0x00120000,0x00000800,0x92000000,0x00000286,0x04302400, +0x00000c00,0x40000000,0x00000143,0x00000000,0x00044800,0x00000000,0x01c00000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x03a0000e,0x0000000c,0x00000000,0x30000000, +0x0221e400,0xc0000000,0x00000002,0x00000000,0x8003fffe,0x00003002,0x34038001,0x00000002, +0x50000030,0x00000000,0x98000000,0x000000e0,0x00000000,0x000110f0,0x00000000,0x00000800, +0x00000000,0x80080000,0x00000286,0x08302400,0x00001400,0x40000000,0x00000143,0x00000000, +0x00060740,0x00000000,0x01440030,0x00000000,0x00000000,0x00000600,0x00000000,0x00000000, +0x0006000c,0x800000d0,0x00000000,0x10000000,0x0221e400,0x40000000,0x00000003,0x00000000, +0x0003fffe,0x00003003,0x43226c43,0x00000000,0x70004800,0x00000000,0x18010008,0x000000e1, +0x00000000,0x000110f0,0x00000000,0x00600000,0x00003000,0x81d00000,0x00000686,0x0c382434, +0x00001c00,0x40000080,0x00000143,0x00000000,0x0000002c,0x00000000,0x00064000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000fc4,0x0000000c,0xa000000c,0x00000000,0x10000000, +0x0221e400,0x80000000,0x00000003,0x00000000,0x3f03ffc0,0x00002803,0x0321000c,0x00000002, +0x78000002,0x00000000,0x18010000,0x000000e1,0x00000000,0x000110f0,0x00000000,0x00000000, +0x00000804,0x80030000,0x00000686,0x10382400,0x00003000,0x40000000,0x00000143,0x00000000, +0x34000000,0x00000000,0x000000d6,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x03a04800,0x86000000,0x00000000,0x00000000,0x0221e001,0xc0000000,0x00000003,0x00000000, +0x0003ffc0,0x00003003,0x24090770,0x00000000,0x8000480c,0x00000000,0x00000008,0x00000100, +0x00000000,0x000110f0,0x00000000,0x0001d000,0x00000000,0x80000000,0x00002286,0x12002000, +0x00003400,0x40000000,0x00000143,0x00000000,0x00060000,0x00000000,0x00000020,0x00000000, +0x00000000,0x000006e0,0x00000000,0x003f1000,0x00180000,0x86000000,0x00000000,0x00000000, +0x0221e000,0x80000000,0x00000004,0x00000000,0x0b03fffe,0x00002843,0xc0038743,0x0a800000, +0x80000008,0x00000000,0x00000008,0x000000c1,0x00000000,0x000220f0,0x00000000,0x0001dc00, +0x00002600,0x81d00000,0x00002286,0x04302020,0x00000000,0x40000400,0x00000143,0x00000000, +0x00000640,0x00000000,0x000000c0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80000000,0x00000000,0x00000000,0x04c1e400,0xc0000000,0x00000004,0x00000000, +0x0003fffe,0x003f3003,0x34030003,0x00080000,0x88006808,0x00000000,0x00000001,0x000000c1, +0x00000000,0x000210f0,0x00000000,0x00000c00,0x00003000,0x800c0000,0x00000686,0x10382400, +0x00001000,0x40000000,0x00000143,0x00000000,0x05a00008,0x50000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00006800,0x00000000,0x00000000,0x20000000, +0x0421e400,0x00000000,0x00000005,0x00000000,0x0303ffc0,0x00003003,0x00080000,0x00000002, +0x88000000,0x00000000,0x00001000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00600000, +0x00003000,0x80000000,0x4a800286,0x14382400,0x00000c00,0x40000000,0x00000143,0x00000000, +0x00060000,0x00000000,0x00310000,0x00000000,0x00000000,0x00000600,0x00000000,0x00000000, +0x0000680e,0x80000000,0x00000000,0x00000000,0x0221e000,0x40000000,0x00000005,0x00000000, +0x0003fffe,0x00003003,0x03220000,0x00000008,0xb0002820,0x00000000,0xa8010000,0x000000e0, +0x00000000,0x000210f0,0x00000000,0x0101d000,0x00000034,0x81d00000,0x00002286,0x20300000, +0x00003000,0x40000400,0x00000143,0x00000000,0x00200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000460,0x00000000,0x00000000,0x00006e43,0x00000000,0x00000000,0x00080000, +0x0221e400,0x80000000,0x00000007,0x00000000,0x0003ffc0,0x00003003,0x00000000,0x0c800000, +0xb8002818,0x00000000,0x80000000,0x00000000,0x00000000,0x000110f0,0x00000000,0x01800c00, +0x00000000,0x81dc0000,0x00000286,0x0c384400,0x00002c00,0x40000400,0x00000143,0x00000000, +0x00060000,0x50000000,0x00000000,0x00000000,0x00000000,0x00000460,0x00000000,0x00000000, +0x00000023,0x00000000,0x00000000,0x00000000,0x0421e000,0xc0000000,0x00000007,0x00000000, +0x0003ffc0,0x000030b3,0x64010002,0x0e80c000,0xc0000004,0x00000000,0x80001000,0x000000c0, +0x00000000,0x000260f0,0x00000000,0x00000002,0x00000200,0x81dc0000,0x00000286,0x1c304000, +0x00000400,0x40000400,0x00000143,0x00000000,0x00060740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x80000000,0x00000000,0x00000000, +0x0221e000,0x00000000,0x00000008,0x00000000,0x0003fffe,0x00003003,0x14020000,0x5000c000, +0xc8000000,0x00000000,0x28000000,0x000000c1,0x00000000,0x000210f0,0x00000000,0x00000000, +0x00000000,0x800c0000,0x00000686,0x0a302000,0x00001c00,0x40000000,0x00000143,0x00000000, +0x2418080c,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x00000000,0x00000000,0x0421e400,0x40000000,0x00000008,0x00000000, +0x00ffffc0,0x00003000,0x00048000,0x5ee2c000,0xd0000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x000110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x4a800286,0x16384400, +0x00003c00,0x40000000,0x00000143,0x00000000,0x00040740,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000600,0x00000000,0x00000000,0x00180000,0x80000000,0x00000000,0x00000000, +0x0421e000,0x80000000,0x00000008,0x00000000,0x00ffffc0,0x038034c0,0x00046800,0x5ee20000, +0xd8000000,0x00000000,0x00000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000100,0x81d00000,0x00000686,0x22302000,0x00004800,0x48000080,0x00000143,0x00000000, +0x0000074c,0x00000000,0x00000000,0x00000000,0x00000000,0x12080000,0x00000000,0x388d2000, +0x00000740,0x00000000,0x00000000,0x00080000,0x0221e000,0xc0000000,0x00000008,0x00000000, +0x8bf7ff80,0x03823832,0x0000c804,0x00000000,0x00000270,0x00000000,0x02000000,0x00000000, +0x00000000,0x90229964,0x00000000,0x02000001,0x00000000,0x00000000,0x00000000,0x04000000, +0x00001000,0x08000000,0x00000000,0x00000000,0x01200000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00400000,0x00000000,0x39400288,0x24004f41,0x00000090,0x00000000,0x08010000, +0x01204000,0x00000000,0x00000000,0x805fa000,0x8a03ffc0,0x000008c0,0x14000008,0x00000000, +0x00060020,0x00000000,0x00000000,0x00000000,0x00000000,0x0002a0d0,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xc9800000,0x00000103,0x00000000, +0x01b00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00002000,0x00000000,0x00000000, +0x0010000b,0x001200d8,0x00000000,0x10000000,0x0541a000,0x00000000,0x00000000,0x00000000, +0x0003ef80,0x00000c20,0x36200000,0x00000000,0x00020000,0x00000000,0x01002000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x80000000,0x00000207,0x00000000, +0x00000000,0xc0000000,0x00000103,0x00000000,0x00180000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x001023c8,0x00000000,0x0013000c,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0xcdffffc0,0x035030f2,0x24064800,0x00000000, +0x00002840,0x00000000,0x00000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000024,0x80000000,0x00000207,0x04000000,0x00000800,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x348c22c8, +0x00004800,0x00000000,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x00000000, +0xa903ff80,0x0c96c84b,0x64040800,0x90080006,0x00000340,0x00400000,0x001640b2,0x0f83c000, +0x00001f00,0x9022a960,0x00000000,0xba000300,0x48000002,0x120802a2,0x18000400,0x480000d0, +0x04000000,0x10000000,0x000c0000,0x00000000,0x01b84838,0x00e99202,0x002e0112,0x00100000, +0x002c8164,0x00200a00,0x00000000,0xc9400b88,0x00040020,0x2a000000,0x07c01041,0x00010f80, +0xc1204001,0x00003983,0x00000000,0x805fa000,0x6f03ffc0,0x02febc05,0x00040004,0x9010c000, +0x00002830,0x00400000,0x001640b2,0x0f868000,0x00001f00,0x20200000,0x00000000,0x080bd800, +0x00088800,0x01920002,0x00002000,0x00000054,0x00000000,0x00000080,0x000c8000,0x00000000, +0x24300008,0x00a88192,0x002e0196,0x00800000,0xc82c8164,0x00000001,0x00000000,0xfc400000, +0x00002e40,0x00000051,0x07c002e0,0x00080f80,0x90000001,0x00004484,0x00000000,0x00000000, +0xdb03ffc0,0x094066fb,0xb7200800,0xd0500000,0x00004820,0x00400000,0x001640b2,0x0f80c000, +0x00001f00,0x00200000,0x00000000,0xa8120000,0x065030c3,0x00020000,0x1c800000,0x00200058, +0x20000000,0x00000000,0x000a0000,0x00000000,0x341c0000,0x00038008,0x00000138,0x00800000, +0x382c8164,0x00001001,0x00000000,0x00000000,0x37200020,0xe0000a06,0x07c010c0,0x00000f80, +0x00000001,0x00003c80,0x00000000,0x00000000,0x4203ffc0,0x0bfcbfbc,0x37366e48,0x9000b052, +0x20004820,0x00400000,0x000000b2,0x0003a000,0x00001f00,0x20200000,0x00000000,0xa2000606, +0x07408002,0x800002b0,0x20000686,0x00000000,0x20000000,0x40000080,0x00000183,0x00000000, +0x15b80000,0x00ac0000,0x002e0000,0x00900000,0x002c8000,0x000010e0,0x00000000,0x00000f84, +0x34184800,0xc0000b14,0x07c00ac0,0x00080000,0x00000801,0x40000000,0x00000000,0x00000000, +0xdf03ffc0,0x08febc0b,0xf41c2800,0xd0710106,0x68004964,0x00400000,0x00164000,0x00000000, +0x00000000,0x20200000,0x00000000,0xa2120302,0x06480042,0x92000002,0x12800706,0x000000d0, +0x00000000,0x40000400,0x000c0143,0x00000000,0x00006800,0x09001200,0x00000000,0x00800000, +0x00000000,0x00000a00,0x00000000,0x00000000,0x041c0008,0x00000a04,0x000000e0,0x00010f80, +0x00000000,0x80003803,0x00000002,0x00000000,0x2f03ffc0,0x087fbc07,0x07380818,0x90000000, +0x80004820,0x00400000,0x00000000,0x0004a0e0,0x00000000,0x24240000,0x00000000,0xa2000200, +0x680c0102,0x80080000,0x0b800286,0x004000b8,0x00000000,0x40000080,0x000c8103,0x00000000, +0x25b84800,0x00030002,0x00000000,0x00000000,0xc8004002,0x00000001,0x00000000,0x00000000, +0x37206810,0x30000b14,0x00000841,0x00080000,0x00000001,0x00000000,0x00000000,0x00000000, +0x0003f03e,0x0800bc00,0x34040800,0x00100010,0x10000000,0x00400000,0x00000000,0x00064000, +0x00000000,0x00200004,0x00000000,0x06e00000,0x00380034,0x80000000,0x13802286,0x00000000, +0x20000000,0x40000000,0x000a0143,0x00000000,0x373c0808,0x00000000,0x001400e0,0x00800000, +0x00000000,0x00000d00,0x00000000,0x00000f84,0x34180830,0x30000a04,0x00000e81,0x00080000, +0x00000c01,0xc0002800,0x00000000,0x00000000,0x0003f000,0x0afebc00,0x37382830,0xd0180046, +0x40000000,0x00400000,0x00a12001,0x0004a060,0x00000000,0x20200004,0x00000000,0x24020000, +0x06400056,0x80000000,0x00002286,0x000044c0,0x00000000,0x40000400,0x0000c183,0x00000000, +0x0018680c,0x00001200,0x00160042,0x00800000,0xf0004000,0x00000000,0x00000000,0xfc400000, +0x341c6800,0x72000a04,0x00000ec0,0x00080000,0x00000000,0x40000000,0x00000002,0x00000000, +0x50fbffc0,0x0a4000be,0x02b84c40,0x00180008,0x70006824,0x00400000,0x00010009,0x0001a000, +0x00000000,0x00200004,0x00000000,0x1a1b9001,0x00080624,0x81900000,0x12002286,0x100000a0, +0x20000000,0x00028480,0x00000000,0x00000000,0x000c000c,0x05000002,0x00000000,0x00800000, +0xb0000000,0x00000200,0x00000000,0x00391000,0x3418680c,0x00000b94,0x00000ae0,0x00000000, +0x0321e001,0x00000000,0x00000000,0x00000000,0x8e03ff80,0x000000d4,0x24010018,0x0e800006, +0x78014800,0x00400000,0x00000000,0x0004c000,0x00000000,0x14240000,0x00000000,0xb6000300, +0x00000026,0x81980320,0x33800286,0x00400058,0x24000000,0x00828480,0x00000000,0x00000000, +0x00a86800,0x000201d0,0x001800c0,0x00800000,0x00000000,0x00000600,0x00000000,0x00000000, +0x34186e70,0x20010bd4,0x000006c1,0x00080000,0x38000001,0x00001401,0x00000000,0x00000000, +0x1503ff80,0x00000130,0x80044808,0x0ef8c010,0x38002b70,0x00400000,0x001640b2,0x0f800060, +0x00001f00,0x00000000,0x00000000,0xb69a0e00,0x00000626,0x93d80010,0x10000706,0x00404040, +0x00000000,0x49000080,0x000a0183,0x00000000,0x05a0680c,0x00000190,0x001800c0,0x00800000, +0x002c8164,0x00000000,0x00000000,0x00000f84,0x00186c74,0x00012a06,0x07c00600,0x10080f80, +0x38000801,0x40001381,0x00000001,0x00000000,0x1703ef80,0x003e0160,0xf4000d58,0x98f80100, +0x58000054,0x28480000,0x181640b2,0x0f8400e1,0x00001f00,0x20200004,0x00000000,0xb69a0f00, +0x00000126,0x9a0c1400,0x00000306,0x04000054,0x00000000,0xc9000000,0x000a8143,0x00000000, +0x2400077c,0x00c80200,0x001800c0,0x00000000,0x002c8164,0x00040400,0x00000000,0xf8781000, +0x26206e72,0x0e012004,0x07c01081,0x25090f80,0x3c21e0a1,0x40000001,0x00000002,0x00000000, +0x9a03ff80,0x002fbdef,0x07b84d50,0x0a9c0000,0x60018000,0x08480000,0x001640b2,0x0f8000c1, +0x00000000,0x002110f0,0x00000000,0xb69b9306,0x4f400027,0x9b133410,0x18002706,0x004040c0, +0x00008c00,0xc9000080,0x00000143,0x00000000,0x05bc054c,0x000413db,0x001800c0,0x50900000, +0x00000164,0x00040401,0x00000000,0xf8400000,0x00106832,0x00120000,0x07c00000,0x00000f80, +0x39000801,0x40004381,0x00000001,0x00000000,0xe503ef80,0x000002af,0x26268660,0x50380726, +0x18010378,0x00000000,0x801640b2,0x0f860100,0x00001f00,0x142610f0,0x00000000,0x101a0f06, +0x682c2700,0x9a0c2400,0x28000287,0x3c304020,0x04004800,0xc9000080,0x00000143,0x00000000, +0xc120081c,0x0dc81a00,0x00300160,0x00000000,0x402c8164,0x00080001,0x00000000,0xf0400000, +0x34006830,0x00000a90,0x07c00000,0x20010f80,0xc421e000,0xc0004383,0x00000005,0x00000000, +0xe203ef80,0x0e0001d0,0x36ac2818,0x00180046,0x88010800,0x00080000,0x001640b2,0x0f8000a0, +0x00001f00,0x000210f0,0x00000000,0x383a0b00,0x08003117,0x9a031732,0x00000286,0x18182080, +0x04003800,0xcc000000,0x000c6143,0x00000000,0xb418281c,0x01e99310,0x00300170,0x00100000, +0x002c8164,0x00100e00,0x00000000,0x00000000,0x17382e70,0x2c121208,0x07c00001,0x20010f80, +0x8421e000,0x40004383,0x00000004,0x00000000,0x2803ef80,0x0f800120,0x03a66d50,0x0aa05107, +0xe801c860,0x00000000,0x001640b2,0x0f820100,0x00001f00,0x00200004,0x00000000,0x1b1b1f04, +0xa8008434,0x9a030000,0x00002287,0x382000a0,0x00000000,0xc8000080,0x000c0143,0x00000000, +0x05a9a81c,0x05001a0c,0x00300160,0x00000000,0x002c8164,0x00101000,0x00000000,0xec7a1000, +0x03a06800,0x80160204,0x07c00a00,0x20000f80,0xc421e000,0x80004383,0x00000002,0x00000000, +0x2c000f80,0x00000260,0x66a24d74,0xd03802c2,0xc0c04808,0x00080000,0x801640b2,0x0f8200ad, +0x00001f00,0x00040004,0x00000000,0x033a0326,0x0f700004,0x9a0f1400,0x00000687,0x00400000, +0x00001f00,0xc9000080,0x0000c143,0x00000000,0x3418281c,0x00021a03,0x00180160,0x00100000, +0x402c8164,0x00040481,0x00000000,0xf8400e04,0x04106c70,0x80120a0c,0x07c00000,0x20010f80, +0xc0000800,0xc0004383,0x00000003,0x00000000,0x2303ff80,0x000002c0,0x03a70664,0x0060f056, +0x1001cb78,0x00000001,0x801640b2,0x0f8600ad,0x00001f00,0x002002c8,0x00000000,0x0a3b1326, +0x0f4c4024,0x8b180408,0x28000687,0x0c000060,0x04001f00,0xc9000400,0x000c2143,0x00000000, +0x34380e50,0x0100000c,0x00300160,0x00100000,0x402c8164,0x00040ca1,0x00000000,0xfc400000, +0x2408074c,0x8008c000,0x07c00000,0x00010f80,0xc421e000,0x00004383,0x00000008,0x00000000, +0x5f03e000,0x003ff98e,0x001a054c,0x100811c6,0x00014808,0x00080000,0x801640b2,0x0f800000, +0x00001f00,0x002002c8,0x00000000,0xa41b5308,0x074c38e6,0x32030000,0x00000421,0x00402000, +0x04000000,0xcb000400,0x00000143,0x00000000,0x00b80f4c,0x0dcd83d0,0x00300170,0x00100000, +0x402c8164,0x00000ca1,0x00000000,0x003f1000,0x34064f72,0xec010a04,0x07c00c00,0x20010f80, +0x80000000,0x40004384,0x00000005,0x00000000,0x0003ef80,0x0000fbc0,0x94000838,0xd0290002, +0x30004828,0x00080000,0x001640b2,0x0f800060,0x00001f00,0x000290f0,0x00000000,0xb0e00720, +0x480c2206,0x82070000,0x18002306,0x324000d4,0x04001000,0x1b000400,0x00000000,0x00000000, +0x34006830,0x05061208,0x00300170,0x00000000,0x002c8164,0x00000900,0x00000000,0x00391000, +0x00060830,0xec000a01,0x07c00000,0x00000f80,0x0421e000,0x00003b04,0x00000000,0x00000000, +0x24000f80,0x0ff80000,0x27a22810,0xd06900c9,0xa0004978,0x00000000,0x001640b2,0x0f800000, +0x00001f00,0x20200004,0x00000000,0x021a0c02,0x00021124,0x920b0000,0x30002287,0x000040a0, +0x00000000,0x14000400,0x00000000,0x00000000,0x3401803c,0x00c91202,0x00320190,0x00000000, +0x282c8164,0x00000c61,0x00000000,0x003f1000,0x03a06802,0x720c0151,0x07c00240,0x20080f80, +0x00000821,0x00004380,0x00000000,0x00000000,0xa1000f80,0x0020ebff,0x07b64d50,0xd0684001, +0x00014829,0x00400000,0x801640b2,0x00000100,0x00001f00,0x24048004,0x00000000,0x3063d306, +0x0f403003,0x2a0303b8,0x13802000,0x1a040080,0x20000000,0x1c000400,0x000c4000,0x00000000, +0x04064820,0x09010a00,0x00320180,0x00000000,0xa02c8000,0x000c1060,0x00000000,0x00000000, +0x3406480c,0x12000000,0x07c00400,0x20010f80,0x3d21e000,0x00000004,0x00000000,0x00000000, +0x6403ef80,0x0000f97f,0x00060574,0xd0680420,0x00000148,0x00080000,0x001640b2,0x0f800100, +0x00000000,0x042610f0,0x00000000,0x00000026,0x0440b054,0x01d80324,0x41002000,0x0fa860a0, +0x20002c00,0xc5000400,0x00000143,0x00000000,0x34ac0800,0x0d004000,0x00324170,0x00000000, +0x40000164,0x00000901,0x00000000,0x00000000,0x00066800,0xe80a0a01,0x07c00000,0x20080f80, +0x0501e000,0x40004384,0x00000008,0x00000000,0x9a03ef80,0x000001df,0x04000804,0xdae81206, +0x01018000,0x00080000,0x001640b2,0x0f800000,0x00001f00,0x000210f0,0x00000000,0xa4fa0300, +0x08000002,0x20031406,0x13802000,0x000000cc,0x04004000,0x10000400,0x000ca000,0x00000000, +0x01b86804,0x00ca1a0c,0x00324172,0x00000000,0xb82c8164,0x00000000,0x00000000,0x00000000, +0x14000810,0x30000001,0x07c00200,0x20080f80,0x80059001,0x00004003,0x00000000,0x00000000, +0x9e03ef80,0x0000fa7f,0x03a00d48,0xd07893c6,0x38014800,0x00400000,0x801640b2,0x0f810061, +0x00001f00,0x00200000,0x00000000,0x3881df00,0x08000077,0x9a000324,0x29802687,0x0f986040, +0x20001f00,0x00000000,0x00000000,0x00000000,0xc1b8074c,0x00000200,0x00320000,0x00000000, +0x582c8164,0x00040ec0,0x00000000,0xfc400f44,0x03b00570,0x30161a08,0x07c004e1,0x00080f80, +0x80000001,0x00001003,0x00000000,0x00000000,0x2d000000,0x0ec000f0,0xc3a62810,0xd0608146, +0x0041cb49,0x00400000,0x00164000,0x0f800001,0x00001f00,0x400422c8,0x00000000,0xa613dc10, +0x68300003,0x3a030000,0x14802000,0x00004000,0x20000000,0xc0000400,0x00080143,0x00000000, +0x00a8003c,0x09070000,0x001800e0,0x00100000,0x382c8164,0x009004c1,0x00000000,0xe0400000, +0x03200010,0x00000a04,0x00000001,0x20080f80,0x00459000,0x80001404,0x00000005,0x00000000, +0xb803ef80,0x000003ef,0x00000554,0x50088300,0xd800c808,0x00000000,0x00164001,0x0f838000, +0x00001f00,0x000660f0,0x00000000,0x00020328,0x0e701600,0x92032404,0x00000687,0x0f9c6000, +0x20006800,0xc0008480,0x00000143,0x00000000,0x1408000c,0x09040000,0x00000170,0x00000000, +0x402c8164,0x00001040,0x00000000,0xec7c1e04,0x00142830,0xce0e0a04,0x00000840,0x00080f80, +0xc541e000,0xc0000003,0x00000004,0x00000000,0x1d03e000,0x0e3ff800,0x34064804,0x90190200, +0x00018008,0x00400000,0x000000b2,0x0f81a080,0x00000000,0x000290f0,0x00000000,0x241a0838, +0x68040703,0x20003730,0x13802000,0x000000a0,0x04007c00,0x00000400,0x00000000,0x00000000, +0x0000680c,0x0dcc01d8,0x002c0174,0x00800000,0x40000164,0x00000001,0x00000000,0x00000000, +0x00066800,0x26161204,0x07c01001,0x00010000,0xc0059000,0x00001803,0x00000000,0x00000000, +0x1b000000,0x00000000,0x34062800,0xd00001a2,0x0001800c,0x00080000,0x000020b2,0x0f800000, +0x00000000,0x00000004,0x00000000,0x04020324,0x680c0024,0x2000033c,0x10002400,0x000000b8, +0x04000000,0x03000000,0x00000000,0x00000000,0x00000f6c,0x00018190,0x00280170,0x00900000, +0x00004164,0x00000841,0x00000000,0x003f1e04,0x3400680c,0x00000a0c,0x07c002e0,0x20080000, +0x80000000,0x00004c03,0x00000000,0x00000000,0x00000000,0x0029fc00,0x00000554,0x0ef84142, +0x00004820,0x00400000,0x000020b2,0x0f8200e0,0x00001f00,0x00008004,0x00000000,0x063b9312, +0x48380000,0x00003404,0x14800400,0x00400060,0x20000000,0x1b000400,0x00080000,0x00000000, +0x01b86830,0x09011a07,0x002f0190,0x00000000,0x782c8164,0x00000a01,0x00000000,0x00000000, +0x00000770,0xe0000a01,0x07c00420,0x00010000,0x80000001,0x00003c84,0x00000000,0x00000000, +0x00000000,0x0a80f000,0x001a0004,0xd01842c0,0x00016838,0x00400000,0x001640b2,0x0f83c000, +0x00001f00,0x00040004,0x00000000,0x10020302,0x68040734,0x01d00000,0x00000400,0x00000040, +0x20000000,0x10000400,0x00000000,0x00000000,0x00000800,0x0904000c,0x002e0194,0x00100000, +0xf82c8164,0x00000300,0x00000000,0x003c1fc4,0x00000030,0x200c0156,0x07c00e21,0x20080f80, +0x00000800,0x00003c00,0x00000000,0x00000000,0xc0000000,0x003f7009,0x74024d6c,0x10093002, +0x00002830,0x00400000,0x001640b2,0x00004060,0x00001f00,0x00000000,0x00000000,0x001a0800, +0x683418c0,0x21dc0000,0x12800400,0x0f9ae040,0x20000000,0x00000400,0x00000000,0x00000000, +0x0006683c,0x05058000,0x002a0190,0x00800000,0x402c8000,0x00000ca1,0x00000000,0x00000000, +0x34180740,0x00000a04,0x07c00500,0x01010f80,0x80000001,0x00004b81,0x00000000,0x00000000, +0x24000000,0x0ebb0000,0x57ba080c,0x10010048,0x00006820,0x00400000,0x001640b2,0x00004060, +0x00001f00,0x20240004,0x00000000,0x20000f20,0x07744083,0x020b0000,0x18000400,0x00000000, +0x04000000,0x00000400,0x00080000,0x00000000,0x2418683c,0x00c98008,0x002a4150,0x00800000, +0xe82c8002,0x00000000,0x00000000,0xec7e1000,0x0000681c,0x80000009,0x07c00a00,0x20080f80, +0xb8059000,0x00004c04,0x00000000,0x00000000,0x0c000000,0x0f3902ae,0x27a66804,0x1010c060, +0x00014800,0x00080000,0x801640b2,0x0f84006f,0x00001f00,0x00040004,0x00000000,0x041a0000, +0x04400800,0x20012400,0x13000400,0x0f986040,0x20001f00,0x1a000000,0x00000000,0x00000000, +0x3400000c,0x09030bd0,0x002a0156,0x00800000,0x802c8164,0x00000e00,0x00000000,0xe47f1f04, +0x04000f4c,0x00021a02,0x07c00840,0x00080f80,0x80000000,0x00004b84,0x00000000,0x00000000, +0x96000000,0x067f023f,0x440e0008,0x1a910002,0x00000060,0x00400000,0x801640b2,0x0f80000b, +0x00001f00,0x800402c8,0x00000000,0x201a0d10,0x074c0103,0x20002410,0x00000000,0x0f82e000, +0x04001f00,0x19000080,0x000c8000,0x00000000,0x34186e78,0x0d001203,0x00260120,0x00100000, +0xc02c8164,0x00000d00,0x00000000,0x00000000,0x2418680c,0x00100a05,0x07c00460,0x20080f80, +0x38459000,0x00004004,0x00000000,0x00000000,0x98000000,0x0000fa8f,0xc3a42800,0x50201102, +0x00014810,0x00400000,0x801640b2,0x0f832061,0x00001f00,0x002082c8,0x00000000,0x240a0d00, +0x04400803,0x20010010,0x1c000000,0x0f986000,0x20001f00,0x1c000400,0x0006c000,0x00000000, +0x3418683c,0x00000000,0x002e0174,0x00000000,0x002c8164,0x00000000,0x00000000,0x003f1e04, +0x00000440,0x20000155,0x07c004a1,0x00010f80,0x19059000,0x00004000,0x00000000,0x00000000, +0x18000000,0x0e0001d0,0x17a60550,0x003851c1,0x00010a48,0x00400000,0x001640b2,0x0f816000, +0x00001f00,0x002002c8,0x00000000,0x1c03d002,0x680c0024,0x1a012400,0x30002000,0x00000000, +0x00000000,0x10000000,0x000c0000,0x00000000,0x362e280c,0x00060000,0x002e0180,0x00800000, +0x002c8164,0x00000400,0x00000000,0x00000000,0x34020770,0x2a001351,0x07c004e1,0x00080f80, +0x38459000,0x00003804,0x00000000,0x00000000,0x00000000,0x0fc00180,0x03a60544,0x50180081, +0x00010000,0x00400000,0x001640b2,0x0f8000e0,0x00001f00,0x00040000,0x00000000,0x3041d306, +0x6c700037,0x1a030000,0x00002000,0x00400000,0x00000000,0x00000080,0x000ac000,0x00000000, +0x14006820,0x0d000000,0x002e4130,0x00800000,0x402c8164,0x00000201,0x00000000,0x00000fc4, +0x14060f4c,0x2a0e1202,0x07c00a01,0x00010f80,0x38000000,0x00004004,0x00000000,0x00000000, +0x2d000000,0x0000fd60,0x02206d74,0x00180040,0x0000000c,0x00080000,0x001640b2,0x0f810000, +0x00001f00,0x00200004,0x00000000,0x3c1a0302,0x07780037,0x20000000,0x40002000,0x003000d4, +0x04000000,0x07000080,0x000c0000,0x00000000,0x0410281c,0x05060008,0x00320178,0x00000000, +0x002c8164,0x00000000,0x00000000,0xe0400fc4,0x34000000,0x12021208,0x07c00a01,0x20010f80, +0x00000800,0x00004000,0x00000000,0x00000000,0x11000000,0x003fe000,0xc2a20550,0x00183346, +0x0000834c,0x00080000,0x001640b2,0x000000a0,0x00001f00,0x20200004,0x00000000,0x2401d300, +0x080008c3,0x3a0c0008,0x00002000,0x000800d0,0x04000000,0x19000000,0x00060000,0x00000000, +0x00186830,0x0dcc0110,0x00328116,0x00100000,0xa82c8000,0x00000000,0x00000000,0x003e1000, +0x03be0000,0x0c00015d,0x07c00001,0x00010f80,0x80000801,0x00004804,0x00000000,0x00000000, +0x40000000,0x0500f0fe,0x36ae2824,0xd0390100,0x00004828,0x00080000,0x001640b2,0x0f800000, +0x00001f00,0x00040004,0x00000000,0x24611404,0x0f4c4603,0x3a030000,0x30002000,0x00400020, +0x20000000,0x14000000,0x000a0000,0x00000000,0x34062810,0x0d060000,0x00328112,0x00000000, +0x002c8164,0x00000601,0x00000000,0xe07f1f04,0x00060020,0x24001208,0x07c00001,0x00000f80, +0x80000801,0x00004384,0x00000000,0x00000000,0x00000000,0x0fbf03a0,0x36380d50,0x5c980812, +0x00014808,0x00000000,0x001640b2,0x0f800060,0x00001f00,0x20200000,0x00000000,0x10015116, +0x2f4c0254,0x21dc0000,0x20002000,0x004000b8,0x04000000,0x10000080,0x000c0000,0x00000000, +0x24062810,0x00c90000,0x00324170,0x00000000,0xc02c8164,0x00000400,0x00000000,0x00000fc4, +0x34006e6c,0x2a001208,0x07c00001,0x20010f80,0xc0000800,0x00003803,0x00000000,0x00000000, +0x40000000,0x0e3f018b,0x24062e74,0xd0200008,0x00004820,0x00000000,0x001640b2,0x0f8000e0, +0x00001f00,0x20200004,0x00000000,0x007a0308,0x080800c0,0x00000400,0x30002000,0x00180000, +0x04000000,0x00000080,0x000c0000,0x00000000,0x00000810,0x0dcf1a04,0x00240170,0x00000000, +0x002c8164,0x00001040,0x00000000,0x00381fc4,0x02280030,0x32001202,0x07c00000,0x00010f80, +0x00000801,0x00003c00,0x00000000,0x00000000,0xa6000000,0x003fecde,0x03b26824,0xd0583010, +0x00004808,0x00000000,0x003640b2,0x00000000,0x00001f00,0x20200004,0x00000000,0x18020006, +0x28100024,0x01d303b8,0x1b002000,0x00000080,0x04000000,0x00000400,0x00006000,0x00000000, +0x00000800,0x00cc000b,0x00320170,0x00000000,0x002c8000,0x000010c0,0x00000000,0x00000e44, +0x00002800,0x0e060a01,0x07c00001,0x00010f80,0x00000800,0x00004802,0x00000000,0x00000000, +0x3a000000,0x003801f6,0x14060000,0xdcf83158,0x00018000,0x00000000,0x001640b2,0x0002c000, +0x00001f00,0x00200000,0x00000000,0x10120308,0x2f5c8124,0x2a020000,0x0a002000,0x000000c0, +0x00000000,0x10000400,0x000a6000,0x00000000,0x00202804,0x00c90200,0x00270010,0x00000000, +0x802c8002,0x00000e00,0x00000000,0xfc400000,0x02b00740,0x0e000000,0x07c00001,0x20080f80, +0x38000000,0x00000000,0x00000000,0x00000000,0x11000000,0x0e4000d0,0xc3b02800,0xd078b800, +0x00006830,0x00000000,0x001640b2,0x0f800000,0x00001f00,0x00200000,0x00000000,0x0001d124, +0x2c508000,0x1a030000,0x00002000,0x00200080,0x04000000,0x00000080,0x0008c000,0x00000000, +0x0002080c,0x09011b58,0x00270196,0x00800000,0x002c8164,0x00001040,0x00000000,0x00000000, +0x17ae0000,0x20000a04,0x07c00201,0x00080f80,0x00000001,0x00003800,0x00000000,0x00000000, +0x14000000,0x0000f800,0x40040550,0x101882c0,0x00008000,0x00080000,0x001640b2,0x0f810000, +0x00001f00,0x00200000,0x00000000,0x001a0c00,0x054440c0,0x03dc3418,0x23002000,0x00000000, +0x00000000,0x00000400,0x00000000,0x00000000,0x34000800,0x00008003,0x00270172,0x00000000, +0x402c8364,0x00000f00,0x00000000,0xe4400e04,0x140e000c,0x0e000a01,0x07c00001,0x20000f80, +0x80000800,0x00004803,0x00000000,0x00000000,0x2d000000,0x0038fc00,0xc0064d44,0xd048f100, +0x00004808,0x00000000,0x001640b2,0x0f86a060,0x00001f00,0x20208004,0x00000000,0x0801d302, +0x2f5c0080,0x00000018,0x1c002000,0x000000ac,0x04000000,0x00000400,0x00000000,0x00000000, +0x34060800,0x01008110,0x002a0196,0x00100000,0xa82c8164,0x00000000,0x00000000,0xfc400000, +0x24000740,0x00000a07,0x07c00000,0x00080f80,0x80000000,0x00003c84,0x00000000,0x00000000, +0xe0000000,0x0000027f,0x03a02824,0x90780600,0x0000000c,0x00000000,0x001640b2,0x0f800000, +0x00001f00,0x00000004,0x00000000,0x04000e30,0x683006c0,0x020003a0,0x00000000,0x000000c0, +0x20000000,0x00000000,0x000c0000,0x00000000,0x34060800,0x00ed8000,0x00224116,0x00800000, +0x582c8164,0x00000001,0x00000000,0x003f1000,0x00000460,0x20000003,0x07c00821,0x00080f80, +0x80000001,0x00004384,0x00000000,0x00000000,0xfc000000,0x003f02ce,0xc7a62e50,0x0000db00, +0x0001826c,0x00400000,0x001640b2,0x0f850060,0x00001f00,0x20200000,0x00000000,0x201a0232, +0x28100603,0x00000400,0x00000400,0x00000000,0x20000000,0x00000000,0x00000000,0x00000000, +0x341e0000,0x0dcf0000,0x00224100,0x00000000,0x002c8164,0x00000ac0,0x00000000,0x00000000, +0x03a04800,0x000e0003,0x07c004e0,0x00000f80,0xc8000001,0x00003803,0x00000000,0x00000000, +0x0a000000,0x002e0000,0x74060574,0x10000250,0x00000000,0x00400000,0x001640b2,0x0f820000, +0x00001f00,0x24040004,0x00000000,0xa02a0302,0x08300203,0x23dd2416,0x4a800000,0x00000000, +0x00000000,0x08000400,0x00000000,0x00000000,0x34260804,0x00070001,0x00224118,0x00100000, +0xc02c8164,0x00000000,0x00000000,0xe8400000,0x00000010,0x20000a07,0x07c00001,0x00000f80, +0x48000000,0x00003800,0x00000000,0x00000000,0x00000000,0x00390000,0x47a66e64,0x0e88d152, +0x00000000,0x00000000,0x001640b2,0x0f82c0a0,0x00001f00,0x00000004,0x00000000,0x06200000, +0x2f500204,0x000c0004,0x00000400,0x00000000,0x04000000,0x17000000,0x000c2000,0x00000000, +0x14180800,0x0dc81a00,0x0022c180,0x00100000,0x002c8164,0x000010c0,0x00000000,0x00000000, +0x00100440,0x00160004,0x07c002c0,0x00080f80,0xb0000000,0x00000003,0x00000000,0x00000000, +0x00000000,0x0ba50000,0xc4080540,0xd018c202,0x00002820,0x00400000,0x001640b2,0x0f800000, +0x00000000,0x00200004,0x00000000,0x24000006,0x6c4c0637,0x3b1003a0,0x4a800000,0x004000c0, +0x04000000,0x10000404,0x00000000,0x00000000,0x34102804,0x0dcd83d3,0x00328000,0x00800000, +0xc0000164,0x00000a01,0x00000000,0x003f1000,0x0400000c,0x00000192,0x07c00000,0x00000f80, +0xc0000000,0x00001804,0x00000000,0x00000000,0x6e000000,0x0c224c04,0x34062f5c,0xd0603010, +0x0001480c,0x00000000,0x00164000,0x0f86a000,0x00000000,0x80040000,0x00000000,0x00000208, +0x480c0240,0x1a030320,0x1c000000,0x00000000,0x20000000,0x09000080,0x00000000,0x00000000, +0x34060810,0x00ee0000,0x002e00c0,0x00000000,0xc0004164,0x00000401,0x00000000,0xf8400e04, +0x00060000,0x2e001a53,0x00000001,0x00080f80,0xc8000801,0x00000003,0x00000000,0x00000000, +0xcaffffc0,0x0c78c11b,0x34064818,0x0018f010,0x0000682c,0x00000000,0x00164001,0x0f820000, +0x00000000,0x90209020,0x00000000,0x0001d006,0x00000640,0x1a030000,0x18002000,0x240000b0, +0x04009000,0x10000080,0x00000000,0x00000000,0x01b8680c,0x00001a03,0x00224114,0x00800000, +0x40000164,0x09000000,0x00000000,0xc4b02bc8,0x34000760,0xe0000add,0x00000100,0x00080f80, +0xc1204000,0x00003c83,0x00000000,0x00000000,0x80e7febc,0x07007002,0x0000000c,0x00000000, +0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x90229964,0x00000000,0x01000001, +0x00000000,0x80000000,0x00000207,0xfc000000,0x000020ff,0xc0000400,0x00000143,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00200000,0x00000000,0x71400000, +0x00000003,0x00000000,0x00000000,0x00000000,0x0421e401,0xc0000000,0x00001fff,0x805fa000, +0x4bffffc0,0x028084b8,0x00002800,0x00000000,0x000a0000,0x00000000,0x00000000,0x00000000, +0x00000000,0x90200000,0x00000000,0x00000000,0x00000034,0x80000000,0x00000206,0x00186034, +0x00000000,0x46000000,0x00000103,0x00000000,0x34100000,0x50000000,0x00000000,0x00000000, +0x00000000,0x120406c0,0x00000000,0x28800000,0x17280440,0x00092000,0x00000000,0x28010000, +0x0541a100,0x00000000,0x00000000,0x00000000,0xd0ebffbd,0x044044f2,0x36200000,0x08800000, +0x00000000,0x00000000,0x22003000,0x000000e1,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00001300,0x80000000,0x00000206,0x08382400,0x00000000,0xc0000000,0x00000143,0x00000000, +0x00000440,0xb0000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x454002c8, +0x00000000,0x00000004,0x00000000,0x00000000,0x01204000,0xc0000000,0x00001fff,0x805fa000, +0x00fbff40,0x02803900,0x04006800,0x08800000,0x008a0000,0x00000000,0x00001000,0x00000000, +0x00000000,0x902110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x00000206,0xfc000000, +0x000000ff,0x40000000,0x00000103,0x00000000,0x00000000,0x00000000,0x00001200,0x00000000, +0x00000000,0x02000000,0x00000000,0x28800000,0x00006800,0x00100001,0x00000000,0x00000000, +0x0221e000,0x00000000,0x00000000,0x00000000,0x10fffffb,0x03803503,0x00018003,0x00000000, +0xe8000000,0x80000003,0x02000000,0x00000000,0x00000000,0x90209020,0x00000000,0x00000000, +0x00000800,0x80000000,0x00000287,0x08000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x00000540,0x00000000,0x00201600,0x00000000,0x00000000,0x02086000,0x00000000,0x388d2308, +0x0000280c,0x00001200,0x00000000,0x00000000,0x01204400,0x00000000,0x68000000,0x00000007, +0x40ebff40,0x03803804,0x02260000,0x00180000,0x00000830,0x00000000,0x00001000,0x0e000000, +0x00041c00,0x90229960,0x00000000,0x00000031,0x000c0000,0x800003a0,0x00000286,0x00000000, +0x80000800,0x08000010,0x00000000,0x00000000,0xc0000000,0x00000000,0x08000000,0x00000000, +0x006c8164,0x0024a000,0x00000000,0x39400000,0x00000000,0x000000d0,0x00000000,0x04200000, +0x0501a000,0x00000000,0x00000000,0x805fa000,0x10fbff3b,0x028044b0,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x9022a0d0,0x00000000,0x000a0000, +0x00000000,0x800002a8,0x00000286,0x00000000,0x24000000,0xc8b00020,0x00000143,0x00000000, +0x14000540,0x00000000,0x00c00040,0x00000000,0x00000000,0x00906000,0x00000000,0x28800408, +0x00000000,0x00000002,0x00000500,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x0003ef00,0x00003404,0x34000000,0x00000102,0x00000000,0x0047fff8,0x00000001,0x00034000, +0xfffe0000,0x00000003,0x00000000,0xa0000100,0x00000003,0x00000000,0x00142400,0x00000000, +0x24000000,0xc8000014,0x00000103,0x00000000,0x00080544,0x00000000,0x001a0160,0x00000000, +0x00000000,0x00000000,0x00000000,0x000f2000,0x00000000,0x00001200,0x00000000,0x10000000, +0x00000000,0x00000000,0x00000000,0x00000000,0xc0ffffc0,0x034f3002,0x04060000,0x08800006, +0x00020800,0x80000000,0x003641b2,0x00000000,0x00000000,0x90209020,0x00000000,0x01800000, +0x08000000,0x00000008,0x28000000,0x02020000,0x00000400,0x10000000,0x00000000,0x00000000, +0x00000000,0x00000110,0x00000000,0x00800000,0xc0000000,0x00800000,0x00000000,0x348c22c8, +0x00000000,0x00000000,0x07000000,0x00000e00,0x39204000,0x00001380,0x00000000,0x00000000, +0x00eff000,0x02c02c00,0x14060000,0x00000006,0x78800800,0x00000000,0x02000000,0x00000000, +0x00000000,0x9022996c,0x00000000,0x00015001,0x00000000,0x81100000,0x00142687,0x00382400, +0x00001f00,0x49028480,0x00000183,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00480600,0x00000000,0x2d400000,0x02a80000,0x80100000,0x00000000,0x20000000, +0x000000a1,0xc0000000,0x00000003,0x805fa000,0x0003ff80,0x00002800,0xc0020000,0x00000000, +0x08860800,0x00000000,0x02000000,0x00000000,0x00000000,0x000290d0,0x00000000,0x00015400, +0x00002000,0x81500000,0x00142687,0x06000000,0x00000c00,0xc8028480,0x00000143,0x00000000, +0x00000000,0x00000000,0x000012c0,0x00000000,0x00000000,0x00082000,0x00000000,0x00000000, +0x00080000,0x00120000,0x00000000,0x00000000,0x0221e000,0x40000000,0x00000001,0x00000000, +0x8003fffd,0x000000a2,0xc0010540,0x0000c000,0x38006800,0x00000000,0x22000509,0x00000100, +0x00000000,0x000260d0,0x00000000,0x00200402,0x00002040,0x80040000,0x00000287,0x1a000000, +0x00002400,0xc8000000,0x00000143,0x00000000,0x14000000,0x00000000,0x00040000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00002800,0x00000000,0x00000000,0x00000000, +0x0521a400,0xc0000000,0x00000002,0x00000000,0x0a03dfc0,0x00000000,0x03202801,0x1000c000, +0x08000030,0x00000000,0x20a12000,0x00000100,0x00000000,0x000110f0,0x00000000,0x00000002, +0x00000004,0x80000000,0x00000286,0x22382420,0x00003400,0x40000000,0x00000143,0x00000000, +0x14082800,0x00000000,0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00002804,0x00000000,0x00000000,0x00000000,0x04c1a000,0x40000000,0x00000001,0x00000000, +0x00ffdf3e,0x02800000,0x03a30000,0x50000006,0x38400000,0x00000000,0x00a12000,0x00000000, +0x00000000,0x902110f0,0x00000000,0x00000000,0x00000000,0x80000000,0x00000306,0x12000020, +0x00004400,0x40000000,0x00000143,0x00000000,0x00082801,0x00000000,0x00000000,0x00000000, +0x00000000,0x12000600,0x00000000,0x28800000,0x03200004,0x80100000,0x00000000,0x20000000, +0x0221e4a1,0xc0000000,0x00000002,0x00000000,0x03b7fe31,0x02822840,0x43a00803,0x00000000, +0x004b4810,0x00000000,0x00003000,0x00000000,0x00000000,0x9022a960,0x00000000,0x00000001, +0x00002000,0x00000000,0x00040607,0x00300000,0x00000000,0x00000000,0x00000000,0x00000000, +0x363c0000,0x50000000,0x00200000,0x00000000,0x00000000,0x00200000,0x00000000,0x29400000, +0x0000080c,0x00107a03,0x00000000,0x00000000,0x04418400,0x00000000,0x28000000,0x805fa006, +0x80e3ff00,0x058b58c2,0x00006808,0x00000000,0x000a0000,0x00000000,0x00001000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000001,0x00000000,0x40000000,0x00000287,0x01000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x24080000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400294,0x00006802,0x00120094,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x805fa000,0xcdebff80,0x0580598f,0x34040000,0x00000000, +0x00000000,0x00000000,0x00000060,0x00000000,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00000024,0x00000000,0x00042400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x34000000,0x00000000,0x08000000,0x00000000,0x00000000,0x002006c0,0x00000000,0x59400000, +0x00000740,0x00000000,0x00000000,0x04200000,0x01030800,0x00000000,0x00000000,0x805fa000, +0x00000fc0,0x00000000,0x00060000,0x00000000,0x00006820,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x04000000,0x00000000,0x41100000,0x28000206,0x00000000, +0x00000000,0x08080e80,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000388,0x34000030,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x038c0000,0x40002800,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x00000000, +0x00000200,0x00000000,0x00000000,0x00000000,0x00000000,0x49000000,0x00000103,0x00000000, +0x00000540,0x00000000,0x00128000,0x00000000,0x00000000,0x00216000,0x00000000,0xe0400000, +0x00180000,0x00000000,0x00000000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000, +0x8003fffb,0x00382d02,0x36a00004,0x00000000,0x00000000,0x00000000,0x00010000,0x00000000, +0x00000000,0x607c9020,0x00000000,0x00000000,0x00000800,0x00000000,0x00000000,0x01000000, +0x00000200,0xa0000000,0x00000143,0x00000000,0x14080000,0x00000000,0x00000184,0x00000000, +0x00000000,0x00400000,0x00000000,0xe04b2288,0x00000000,0x80000000,0x00000000,0x00000000, +0x01204000,0x00000000,0x00000000,0x00000000,0x0cc7ff32,0x058c5950,0x001c6800,0x90004009, +0x00006a70,0x00000000,0xa81650b2,0x0000010c,0x00000000,0x9022a964,0x00000000,0x07000201, +0x00000134,0x80020000,0x00000206,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x15ba0470,0x10000000,0x00000001,0x00000000,0x00000000,0x00200460,0x00000000,0x59400fc4, +0x0000680c,0x8a001202,0x07000000,0x00000e00,0x0201e400,0x00000000,0x48000000,0x805fa006, +0xb8fffff5,0x028008a0,0x76206d6c,0x50204006,0x000a081c,0x00000000,0x00001000,0x00000000, +0x00000000,0x902100f0,0x00000000,0x0021d000,0x00002104,0x81d00000,0x00002286,0x02434400, +0x00000000,0x45880480,0x00000143,0x00000000,0x04086810,0x00000000,0x002e0180,0x00000000, +0x00000000,0x00806000,0x00000000,0x28800000,0x14000803,0x000900d4,0x00000000,0x00000000, +0x0521a000,0x40000000,0x00000000,0x00000000,0x80e3ff00,0x058b58c2,0x00006808,0x00000000, +0x000a0000,0x00000000,0x00001000,0x00000000,0x00000000,0x9022a964,0x00000000,0x00000001, +0x00000000,0x40000000,0x00000287,0x01000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x24080000,0x00000000,0x00000000,0x00000000,0x00000000,0x00200000,0x00000000,0x59400294, +0x00006802,0x00120094,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x805fa000, +0x00dbff3d,0x05805950,0x00006800,0x00000000,0x08404800,0x00000000,0x00001000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000001,0x00002000,0x80000000,0x00000286,0x00000000, +0x00000000,0x40000000,0x00000103,0x00000000,0x24000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400000,0x00000000,0x00150000,0x00000000,0x00000000, +0x00000400,0x00000000,0x00000000,0x805fa000,0x80ff7fc0,0x02802800,0x14082803,0x0a800000, +0x000a0020,0x00000000,0x00000000,0x00000000,0x00000000,0x90200000,0x00000000,0x00000000, +0x00000100,0x80000000,0x00000207,0x00000000,0x00000000,0x01800000,0x00000000,0x00000000, +0x00100744,0x50000000,0x00000000,0x00000000,0x00000000,0x00800000,0x00000000,0x28800000, +0x00006808,0x00120000,0x00000000,0x00000000,0x0521a000,0x00000000,0x00000000,0x00000000, +0x00cffcc0,0x05805950,0x040e0548,0x0ce80002,0x0001c82c,0x00000000,0x00002000,0x00000000, +0x00000000,0x9022a964,0x00000000,0x00000b07,0x800c2004,0x8a0c0004,0x00000286,0x00000000, +0x00000000,0x44800000,0x00000103,0x00000000,0x05b00808,0x0d009208,0x00140000,0x00000000, +0x00000000,0x00200000,0x00000000,0x59400000,0x00080030,0x00000000,0x00000000,0x10010000, +0x0401e000,0x00000000,0x00000000,0x805fa000,0x0cdbffc0,0x000008b6,0x14000000,0x503000c0, +0x00c22800,0x00000000,0x000c0000,0x000000c0,0x00000000,0x00000000,0x00000000,0x00120000, +0x68003100,0x00043400,0x21800000,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00006800,0x00060008,0x000000d4,0x00000000,0x30000000,0x00000001,0x00000000,0x003c1000, +0x00006800,0xe4179a00,0x00000500,0x00000000,0x00000000,0x00003c80,0x00000000,0x00000000, +0x3cffef40,0x028028b0,0x662a6810,0x0aa03050,0x00000b60,0x00480000,0x000000b2,0x00000000, +0x00000000,0x902210d0,0x00000000,0x0063d006,0x08000214,0x82000320,0x48002207,0x00342000, +0x20000400,0x00000000,0x00000000,0x00000000,0x00002e50,0x09001a00,0x00300000,0x00000000, +0x00180000,0x00800000,0x00000000,0x28800000,0x24002c50,0x00000004,0x07000000,0x01090000, +0x00000000,0x00000000,0x00000000,0x00000000,0xc0d3fef6,0x058b595e,0x00066e44,0x00604008, +0x00000140,0x00000000,0x28001000,0x000000d1,0x00000000,0x9022a964,0x00000000,0x00000401, +0x00002000,0x80000000,0x00000207,0x00000000,0x00000000,0x40000000,0x00000103,0x00000000, +0x00000f40,0x50c82000,0x000000c0,0x00000000,0x00000000,0x00200000,0x00000000,0x59400f04, +0x00006804,0x00000000,0x00000000,0x00000000,0x38000400,0x00000001,0xc8000000,0x805fa006, +0x8cfffff7,0x028008a0,0x0400480e,0x10000000,0x010a6808,0x00000000,0x000010b2,0x0e000000, +0x00000000,0x902100f0,0x00000000,0x00120002,0x00000100,0x80000000,0x00000286,0x02000000, +0x00000000,0x04800000,0x00000000,0x00000000,0x34180010,0x50000000,0x00000000,0x00000000, +0x00000164,0x00800000,0x00000000,0x28800000,0x00006830,0x00112050,0x07000000,0x00000000, +0x0521a400,0x00000000,0x00000000,0x00000000,0xd2dfff80,0x060f6123,0x84000800,0x00000000, +0x008a4800,0x00000000,0x02001000,0x00000000,0x00000000,0x90229964,0x00000000,0x00000001, +0x00000000,0x80000000,0x00000206,0x10000000,0x00001000,0x48000000,0x00000103,0x00000000, +0x34180000,0x50000000,0x00000000,0x00000000,0x00000000,0x00286000,0x00000000,0x614003c8, +0x00004810,0x0012120c,0x00000000,0x00000000,0x01204000,0x00000000,0x00000000,0x805fa000, +0x00fffff9,0x04c04404,0x14000000,0x0a800000,0x00060020,0x00000000,0x00001000,0x00000000, +0x00000000,0x90209020,0x00000000,0x00000000,0x00000200,0x80000000,0x00000287,0x10000000, +0x00004800,0xc8000000,0x00000143,0x00000000,0x34180540,0x00000000,0x00001600,0x00000000, +0x00000000,0x09002000,0x00000000,0x4c912408,0x00002800,0x00100098,0x00000000,0x00000000, +0x01204400,0x00000000,0x28000000,0x00000007,0x92ebff80,0x03c03c06,0x47b80f44,0x00000306, +0x4000000c,0x00000001,0x000001b2,0x00020000,0x00001c00,0x90229964,0x00000000,0x001a0031, +0x00000700,0x81100400,0x18002306,0x10030000,0x04001000,0x40000080,0x00000143,0x00000000, +0x34040000,0x00000150,0x001b00d6,0x00800000,0xb86c8000,0x00200a80,0x00000000,0x3d400000, +0x17a06810,0x001212d2,0x07000400,0x10000000,0x0521a001,0x00000000,0x00000003,0x805fa000, +0x0efbefba,0x068044a0,0x04082800,0x00000001,0x20026c40,0x00080001,0x003641b2,0x00000000, +0x00000000,0x902260d0,0x00000000,0x00120800,0x280000c4,0x9a000000,0x00000286,0x7a000000, +0x2000c400,0x40000400,0x00000183,0x00000000,0x24180020,0x00000001,0x00260030,0x00100000, +0xa8000002,0x04000600,0x00000000,0x68800f44,0x00002800,0x00120000,0x07000000,0x00010e00, +0x8481a000,0xc0001184,0x0000000d,0x00000000,0xbdfbfffb,0x04406806,0x03300d64,0x00081008, +0xc8010030,0x00000001,0x003641b2,0x00060000,0x00001c00,0x902290d0,0x00000000,0x001a0c02, +0x00040800,0x811d0000,0x20000286,0x14000000,0x20002c00,0x40000080,0x00000183,0x00000000, +0x14104804,0x00000000,0x001a80d8,0x00000000,0xf86c8002,0x04000000,0x00000000,0x44be1e84, +0x00080010,0x40000008,0x070008a0,0x00000e00,0x2d21a000,0x00000002,0x0000000a,0x00000000, +0x40fbffc0,0x06404404,0x14000640,0xd8800003,0x20012800,0x00400000,0x003641b2,0x00066000, +0x00000000,0x902290d0,0x00000000,0x12035202,0x00002000,0x82000000,0x48000686,0x0c000000, +0x20001400,0x40080000,0x00000183,0x00000000,0x03284d48,0x008a0150,0x000000d4,0x00800000, +0x00000010,0x10000000,0x00000000,0x64bd1000,0x24040770,0xd2000390,0x07000000,0x00010e00, +0x0521a000,0x40001404,0x0000000d,0x00000000,0x9afbffc0,0x04ce0114,0x00020660,0x00580306, +0x68006804,0x00000000,0x000001b2,0x0e020000,0x00001c00,0x902260d0,0x00000000,0x000a0400, +0x002000d4,0x9a000000,0x00002286,0x120000a0,0x00001c00,0x40080000,0x00000143,0x00000000, +0x17a06804,0x10000a01,0x000c00d9,0x00800000,0xf06c8164,0x10000c00,0x00000000,0x4c800000, +0x14040800,0x0e001208,0x070006e1,0x00010000,0x04c1a000,0x80000000,0x00000003,0x00000000, +0xfdfbfffe,0x03804fe4,0x00000800,0x08801040,0x00002803,0x00400000,0x000030b2,0x0006a000, +0x00000000,0x902290d0,0x00000000,0x081b9d02,0x4d400000,0x80070220,0x1b802286,0x480000a0, +0x20009800,0x40000080,0x00000143,0x00000000,0x262c0030,0x10a80194,0x001a80c5,0x00100000, +0x00000000,0x10000b00,0x00000000,0x38800000,0x001a0000,0x700000de,0x07000000,0x20000000, +0xc521a000,0x40000003,0x00000000,0x00000000,0x93fbfffe,0x04803802,0x00000770,0x9a80c0c6, +0x10008004,0x00000000,0x283651b2,0x0e000060,0x00000000,0x902290d0,0x00000000,0x00000006, +0x00080800,0x83d00000,0x20002306,0x44000070,0x0000dc00,0x40000400,0x00000183,0x00000000, +0x00066d60,0x05008150,0x00260112,0x00800000,0x00000364,0x10000000,0x00000000,0x48be1e44, +0x14002800,0x8000000e,0x07000200,0x20080e00,0x04c1a000,0xc0003804,0x00000003,0x00000000, +0x80fbefc0,0x02900184,0x04020020,0xd8a05000,0x70002f40,0x80080001,0x283641b2,0x0e000061, +0x00001c00,0x902110f0,0x00000000,0x20215800,0x00040037,0x8a082400,0x13800686,0x54000000, +0x00000000,0x40000000,0x00000143,0x00000000,0x26242834,0x05008002,0x00260000,0x00000000, +0xc02c8164,0x10001001,0x00000000,0x28800000,0x02200004,0x72001200,0x07000000,0x00010e00, +0x0521a001,0x00000000,0x0000000b,0x00000000,0x8003ffc0,0x00002802,0x00004800,0x50600000, +0x78000444,0x80000001,0x00364000,0x0003c000,0xfffe0000,0x000110f3,0x00000000,0x18620106, +0x07403014,0x82000220,0x00002286,0x6a300a00,0xa8000000,0x40000090,0x00000183,0x00000000, +0x34040544,0x00020001,0x001a8060,0x00000000,0x00000000,0x00001000,0x00000000,0x003f1e04, +0x00002800,0x241000d0,0x00000401,0x00080e00,0xc521a000,0x80004003,0x0000000a,0x00000000, +0x9103ffc0,0x0000e4ef,0x02a00648,0x1ec08308,0x00000548,0x00080000,0x00364001,0x0e03c000, +0x00000000,0x000260d0,0x00000000,0x00015000,0x280000f4,0x800d0000,0x13802206,0x60300a80, +0x0000e400,0x40000080,0x00080143,0x00000000,0x36be2f44,0x00000000,0x00000060,0x00800000, +0x00004364,0x00000000,0x00000000,0x00000e44,0x00000804,0x0000000c,0x00000400,0x10000e00, +0x3a21a000,0x80001381,0x00000008,0x00000000,0xb803ffc0,0x0e404bf3,0x02a80808,0x1aa00000, +0xe8004830,0x00080001,0x18000001,0x0e0400e0,0x00001c00,0x000690d0,0x00000000,0xb8600000, +0x08100003,0x80000000,0x00000286,0x5e3000b0,0x0000b800,0x40000000,0x00000143,0x00000000, +0x001e0544,0x00000150,0x00020170,0x00800000,0xc02c8364,0x00000c01,0x00000000,0xf4400000, +0x02200020,0x00000000,0x00000000,0x20080000,0x4221a000,0xc0004200,0x0000000e,0x00000000, +0x80ffffc0,0x0000e936,0x00024800,0x0c801044,0x88010764,0x00000001,0x003640b2,0x0e03a000, +0x00021c00,0x000110d0,0x00000000,0x18000100,0x0540a234,0x81901628,0x00000306,0x58030000, +0x2000ec00,0x40000090,0x00000183,0x00000000,0x34a80644,0x09000000,0x00040020,0x00800000, +0x006c8364,0x00000c00,0x00000000,0x00000000,0x00004800,0x52001a08,0x07000400,0x00000e00, +0xc421a001,0xc0000003,0x00000000,0x00000000,0x4affffc0,0x0514400f,0x44004808,0x00680800, +0x30018800,0x00080001,0x003641b2,0x0e046000,0x00000000,0x90209020,0x00000000,0xa8000030, +0x000008c2,0x9a000002,0x00002286,0x66000054,0x0001fc00,0x40000080,0x00000143,0x00000000, +0x03a60008,0x05cc0000,0x00000030,0x00800000,0x80000364,0x00800601,0x00000000,0x50902000, +0x34082800,0xf0001a0c,0x07000000,0x00000e00,0x0481a000,0xc0000400,0x0000000c,0x00000000, +}; + +/* cga_sa */ +unsigned long rp_fw_data[] = { +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x80050000,0x000a800f,0x001e801b,0x80110014,0x00368033,0x8039003c,0x802d0028, +0x00228027,0x00668063,0x8069006c,0x807d0078,0x00728077,0x80550050,0x005a805f,0x004e804b, +0x80410044,0x00c680c3,0x80c900cc,0x80dd00d8,0x00d280d7,0x80f500f0,0x00fa80ff,0x00ee80eb, +0x80e100e4,0x80a500a0,0x00aa80af,0x00be80bb,0x80b100b4,0x00968093,0x8099009c,0x808d0088, +0x00828087,0x01868183,0x8189018c,0x819d0198,0x01928197,0x81b501b0,0x01ba81bf,0x01ae81ab, +0x81a101a4,0x81e501e0,0x01ea81ef,0x01fe81fb,0x81f101f4,0x01d681d3,0x81d901dc,0x81cd01c8, +0x01c281c7,0x81450140,0x014a814f,0x015e815b,0x81510154,0x01768173,0x8179017c,0x816d0168, +0x01628167,0x01268123,0x8129012c,0x813d0138,0x01328137,0x81150110,0x011a811f,0x010e810b, +0x81010104,0x03068303,0x8309030c,0x831d0318,0x03128317,0x83350330,0x033a833f,0x032e832b, +0x83210324,0x83650360,0x036a836f,0x037e837b,0x83710374,0x03568353,0x8359035c,0x834d0348, +0x03428347,0x83c503c0,0x03ca83cf,0x03de83db,0x83d103d4,0x03f683f3,0x83f903fc,0x83ed03e8, +0x03e283e7,0x03a683a3,0x83a903ac,0x83bd03b8,0x03b283b7,0x83950390,0x039a839f,0x038e838b, +0x83810384,0x82850280,0x028a828f,0x029e829b,0x82910294,0x02b682b3,0x82b902bc,0x82ad02a8, +0x02a282a7,0x02e682e3,0x82e902ec,0x82fd02f8,0x02f282f7,0x82d502d0,0x02da82df,0x02ce82cb, +0x82c102c4,0x02468243,0x8249024c,0x825d0258,0x02528257,0x82750270,0x027a827f,0x026e826b, +0x82610264,0x82250220,0x022a822f,0x023e823b,0x82310234,0x02168213,0x8219021c,0x820d0208, +0x02028207,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00007d00, +0x0000fa00,0x00017700,0x0001f400,0x00027100,0x0002ee00,0x00036b00,0x0003e800,0x00046500, +0x0004e200,0x00055f00,0x0005dc00,0x00065900,0x0006d600,0x00000000,0x00007d00,0x0000bb80, +0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580,0x0001f400,0x00027100,0x0002ee00, +0x00036b00,0x0003e800,0x0004e200,0x0005dc00,0x00000000,0x00007d00,0x00009c40,0x0000bb80, +0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580,0x0001f400,0x00027100,0x0002ee00, +0x00036b00,0x0003e800,0x0004e200,0x00000000,0x00007d00,0x0000bb80,0x0000dac0,0x0000fa00, +0x00013880,0x00017700,0x0001b580,0x0001f400,0x00023280,0x00027100,0x0002af80,0x0002ee00, +0x00036b00,0x0003e800,0x00000000,0x00001f40,0x00003e80,0x00005dc0,0x00007d00,0x00009c40, +0x0000bb80,0x0000dac0,0x0000fa00,0x00013880,0x00017700,0x0001b580,0x0001f400,0x00023280, +0x00027100,0x0000ac44,0x0000bb80,0x00007d00,0x00100200,0x00000002,0x02000000,0x00020014, +0x00000100,0x00180100,0x00000001,0x01000001,0x0001001a,0x00010001,0x01040401,0x01000004, +0x04010100,0x00040108,0x01010000,0x01020401,0x00010004,0x04010100,0x01040101,0x01000000, +0x01000101,0x00000001,0x01010100,0x00010100,0x01000000,0x01000101,0x00000001,0x01010100, +0x00010100,0x01000000,0x01000101,0x00000001,0x01010100,0x00010100,0x01000000,0x01000101, +0x00000001,0x01010100,0x00010100,0x01000000,0x010d0201,0x01000102,0x02010101,0x0102010f, +0x01010101,0x010b0201,0x00010102,0x02010101,0x01020107,0x01000101,0x010e0201,0x01010002, +0x02010101,0x0002010a,0x01010001,0x01090101,0x00000101,0x01010101,0x01010109,0x01010000, +0x01060101,0x01010001,0x01010100,0x0001010c,0x01010100,0x01050101,0x01000101,0x01010100, +0x01010103,0x01000001,0x010f0401,0x01010104,0x04010101,0x01040107,0x01000101,0x010b0401, +0x00010104,0x04010101,0x01040103,0x01000001,0x010d0401,0x01000104,0x04010101,0x01040105, +0x01000100,0x01090401,0x00000104,0x04010101,0x01040101,0x01000000,0x010e0401,0x01010004, +0x04010101,0x00040106,0x01000101,0x010a0401,0x00010004,0x04010101,0x00040102,0x01000001, +0x010c0401,0x01000004,0x04010101,0x00040104,0x01000100,0x01080401,0x00000004,0x04010101, +0x00040100,0x01000000,0x00000001,0x10311131,0x01210121,0x00110011,0x00110011,0x11310830, +0x01311031,0x00110011,0x00110011,0x20312231,0x21212121,0x12211221,0x02210221,0x01310830, +0x11211121,0x10211021,0x00210021,0x20312231,0x21212121,0x12211221,0x02210221,0x11310840, +0x01311031,0x00110011,0x00110011,0x23411810,0x13311331,0x30413141,0x22410341,0x21312131, +0x12311231,0x20312031,0x02310231,0x32113311,0x18101030,0x21411a10,0x02411241,0x10311031, +0x11211121,0x11211121,0x01310131,0x00310031,0x30313331,0x32213221,0x23212321,0x03210321, +0x13113111,0x20112211,0x20401040,0x11413020,0x10311031,0x01310131,0x00110011,0x00110011, +0x00110011,0x00110011,0x38103420,0x51413a10,0x3c101541,0x3e100541,0x24414241,0x41314131, +0x14311431,0x04310431,0x32414041,0x30412341,0x31313131,0x13311331,0x03310331,0x22312231, +0x21212121,0x21212121,0x12111211,0x02212021,0x54215521,0x35214521,0x44115311,0x25115211, +0x43115011,0x33113411,0x20401040,0x12412141,0x11211121,0x11211121,0x10311031,0x01310131, +0x00210021,0x00210021,0x38203030,0x51413c10,0x3e101541,0x42414010,0x41412441,0x14311431, +0x04414041,0x23413241,0x13413141,0x03413041,0x22212221,0x22212221,0x20212021,0x20212021, +0x02210221,0x02210221,0x45315531,0x54215421,0x35113511,0x35113511,0x44215321,0x52115211, +0x50112511,0x34114311,0x33110511,0x20301040,0x2c202820,0x21413010,0x02411241,0x11311131, +0x10311031,0x01310131,0x00310031,0x53413210,0x34103541,0x52414441,0x51412541,0x15311531, +0x43314331,0x34313431,0x40410541,0x24314231,0x04313331,0x41214121,0x14211421,0x23213221, +0x31113111,0x13111311,0x03213021,0x20112211,0x54115511,0x50114511,0x20401040,0x11413020, +0x10311031,0x01310131,0x00110011,0x00110011,0x00110011,0x00110011,0x3c203430,0x48104030, +0x4e204a20,0x71415220,0x56101741,0x5c205820,0x16416141,0x60100641,0x64106210,0x14414141, +0x32410441,0x30412341,0x31313131,0x13311331,0x03310331,0x22312231,0x12212121,0x02212021, +0x76317731,0x75316731,0x66315731,0x74217421,0x65214721,0x73215621,0x37213721,0x64216421, +0x45315531,0x36213621,0x27117211,0x70214621,0x07110711,0x26112611,0x53215421,0x60116011, +0x44213521,0x62116311,0x25215221,0x51115111,0x15111511,0x34214321,0x05115011,0x24114211, +0x40113311,0x20401040,0x40303040,0x48102141,0x11311131,0x10311031,0x01310131,0x00210021, +0x00210021,0x4e304a20,0x5a105620,0x72415c20,0x60102741,0x17311731,0x07417141,0x36416341, +0x62100641,0x51416410,0x26312631,0x60416241,0x61316131,0x16311631,0x43411541,0x66100541, +0x24414241,0x14414141,0x04414041,0x32313231,0x23312331,0x31213121,0x31213121,0x13211321, +0x13211321,0x03313031,0x22212221,0x12111211,0x12111211,0x02112011,0x76217721,0x57216721, +0x66216621,0x74217421,0x47214721,0x55317531,0x56216521,0x73117311,0x64113711,0x45215421, +0x35215321,0x70114611,0x52114411,0x50112511,0x33113411,0x20401040,0x40203040,0x4c104430, +0x12412141,0x00414e10,0x11311131,0x10311031,0x01310131,0x54105020,0x58105610,0x73416541, +0x72415a10,0x64412741,0x71414641,0x5c101741,0x36416341,0x45415441,0x5e104441,0x62316231, +0x26312631,0x16311631,0x06416141,0x35415341,0x25415241,0x51315131,0x15311531,0x43314331, +0x34313431,0x40410541,0x42314231,0x24312431,0x41314131,0x14213321,0x23213221,0x30310431, +0x03210321,0x31113111,0x31113111,0x22111311,0x02112011,0x76217721,0x67116711,0x57117511, +0x74116611,0x56114711,0x55113711,0x07117011,0x50116011,0x20404040,0x31314141,0x11111111, +0x11111111,0x40404040,0x30304040,0x30303030,0x10302010,0x20202020,0x10101041,0x41411020, +0x41101010,0x41413131,0x31314141,0x31313131,0x31313131,0x21212121,0x30404040,0x20302020, +0x20202010,0x41412020,0x10101041,0x41411041,0x10101010,0x41411010,0x41414110,0x41101041, +0x31314110,0x41414141,0x41414141,0x31313131,0x31313131,0x31314141,0x41413131,0x41413131, +0x31314141,0x41413131,0x41413131,0x41413131,0x41413131,0x21212121,0x21212121,0x31313131, +0x31313131,0x21212121,0x21212121,0x21213131,0x21213131,0x31313131,0x21212121,0x21213131, +0x31312121,0x31313131,0x21211111,0x21212121,0x11113131,0x11111111,0x11112121,0x21211111, +0x21212121,0x21212121,0x11111111,0x21211111,0x11111111,0x11111111,0x41301111,0x41414141, +0x41414141,0x31311041,0x41413131,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131, +0x31314141,0x21214141,0x21212121,0x31313131,0x21212121,0x21212121,0x21212121,0x31312121, +0x11112121,0x11112121,0x11112121,0x11112121,0x11112121,0x11112121,0x21211111,0x11111111, +0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x21213131,0x11111111, +0x00001111,0x40404040,0x20303040,0x31311010,0x31314141,0x40404040,0x40303040,0x30303030, +0x20303020,0x20202020,0x20202020,0x20101010,0x10201010,0x10411010,0x10101010,0x41414141, +0x10101010,0x41414141,0x41104141,0x41414141,0x41104141,0x41413131,0x31313131,0x31313131, +0x31314141,0x31313131,0x31312121,0x21212121,0x21213131,0x11112121,0x11111111,0x10411010, +0x10411010,0x41414141,0x41414141,0x41414141,0x41414141,0x41414141,0x10414141,0x31313131, +0x41414141,0x31313131,0x31313131,0x31313131,0x31314141,0x31313131,0x31313131,0x31313131, +0x41413131,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131, +0x31313131,0x41413131,0x31313131,0x31313131,0x31312121,0x31313131,0x21212121,0x21213131, +0x21212121,0x31312121,0x21212121,0x21212121,0x31312121,0x21212121,0x21212121,0x31312121, +0x21211111,0x21212121,0x21212121,0x11112121,0x21212121,0x21211111,0x21211111,0x21212121, +0x11112121,0x11111111,0x21211111,0x11111111,0x11111111,0x11112121,0x11111111,0x11111111, +0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, +0x20404040,0x31314141,0x11111111,0x11111111,0x41203030,0x41401020,0x40414110,0x40404040, +0x30303040,0x30303030,0x20102020,0x10411020,0x41101010,0x41411041,0x31313131,0x31314141, +0x21212121,0x31313131,0x31313131,0x31312121,0x21213131,0x21212121,0x11112121,0x11111111, +0x11111111,0x21211111,0x30402121,0x11113030,0x10202020,0x20102020,0x41202020,0x10101010, +0x41101010,0x41101010,0x10414110,0x41413131,0x41414141,0x31311041,0x41414141,0x41413131, +0x41414141,0x31314141,0x31314141,0x31313131,0x41413131,0x41414141,0x31314141,0x31314141, +0x31314141,0x31314141,0x31314141,0x21212121,0x31312121,0x31313131,0x21212121,0x21213131, +0x31312121,0x31313131,0x21213131,0x21213131,0x21212121,0x21213131,0x31312121,0x21212121, +0x21213131,0x11111111,0x21211111,0x21212121,0x11111111,0x11112121,0x11112121,0x11111111, +0x11111111,0x10411111,0x31313131,0x21214141,0x31312121,0x21213131,0x31312121,0x21212121, +0x31313131,0x31312121,0x11112121,0x11111111,0x21212121,0x21212121,0x11112121,0x21212121, +0x21211111,0x11111111,0x21212121,0x11111111,0x11112121,0x11112121,0x11111111,0x11111111, +0x11111111,0x11111111,0x11111111,0x11111111,0x00001111,0x41404040,0x40404040,0x20304040, +0x41414141,0x41414141,0x41414141,0x41413131,0x31313131,0x31314141,0x31313131,0x31313131, +0x31313131,0x31313131,0x31313131,0x41413131,0x30303030,0x30303040,0x20202020,0x20202020, +0x20203020,0x30203020,0x10202010,0x10101020,0x10101010,0x10101010,0x10101010,0x10201010, +0x41104120,0x41414141,0x41414141,0x41414141,0x41414110,0x10414141,0x41413131,0x31313131, +0x31313131,0x41413131,0x31313131,0x21212121,0x21212121,0x21213131,0x11111111,0x21211111, +0x11111111,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131,0x31313131, +0x31313131,0x31313131,0x31314141,0x21212121,0x21213131,0x21212121,0x31312121,0x21212121, +0x21212121,0x21213131,0x21212121,0x21212121,0x21212121,0x21212121,0x21212121,0x21212121, +0x21212121,0x21212121,0x21212121,0x21212121,0x21213131,0x21212121,0x21212121,0x21212121, +0x21213131,0x21213131,0x21211111,0x21212121,0x21213131,0x21211111,0x21211111,0x11112121, +0x11112121,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, +0x11111111,0x11111111,0x11112121,0x21211111,0x11111111,0x00001111,0x00200010,0x00400030, +0x00100011,0x00010001,0x00000000,0x00000000,0x00000000,0x00000000,0x00540044,0x00740064, +0x00940084,0x00ac00a4,0x00bc00b4,0x00cc00c4,0x00d600d4,0x00e200da,0x00e800e4,0x00f000ec, +0x00f40018,0x00f800f6,0x00fe00fa,0x00150051,0x01020100,0x00410104,0x00140014,0x00040040, +0x00230032,0x00310031,0x00130013,0x00300030,0x00030003,0x00220022,0x00120021,0x00020020, +0x01160106,0x01360126,0x0142013e,0x014e0146,0x01540152,0x015c0158,0x01640160,0x001f00f1, +0x0168000f,0x016c016a,0x016e002e,0x001e00e1,0x01720170,0x01760174,0x017a0178,0x00d3006c, +0x00d2017c,0x00d1002d,0x017e007b,0x003c0180,0x00b40182,0x001d001d,0x000d00d0,0x008a00a8, +0x004c00c4,0x006b00b6,0x00c300c3,0x00c200c2,0x002c002c,0x00b500b5,0x0098005b,0x00c100c1, +0x001c001c,0x00c00089,0x000c000c,0x00a6004b,0x0097006a,0x00b300b3,0x003b003b,0x00a50088, +0x00b200b2,0x0096005a,0x004a004a,0x00780087,0x00490049,0x00670077,0x002b002b,0x002b002b, +0x00b100b1,0x001b001b,0x000b00b0,0x00a40069,0x003a00a3,0x00590095,0x00a200a2,0x002a002a, +0x00a100a1,0x001a001a,0x008600a0,0x000a000a,0x00940068,0x00390039,0x00850093,0x00760058, +0x00920092,0x00290029,0x00570075,0x00830083,0x00380038,0x00740066,0x00650047,0x00370056, +0x00190091,0x00090090,0x00480084,0x00270027,0x00460064,0x00820082,0x00820082,0x00810028, +0x00720073,0x00710071,0x00170017,0x00700055,0x00630007,0x00540036,0x00620045,0x00530026, +0x00080080,0x00160061,0x00060060,0x00440035,0x00520052,0x00500025,0x00340043,0x00420005, +0x00330024,0x00ff0184,0x00fd00fe,0x00fc00ee,0x00fb00ed,0x00ec00bf,0x018c00cd,0x00ce00ce, +0x00dd00dd,0x00dc00af,0x00eb00eb,0x00be00be,0x00f900f9,0x009f009f,0x00ae00ae,0x00db00db, +0x00bd00bd,0x00f800f8,0x008f008f,0x00cc00cc,0x00e900ea,0x00e800e8,0x00e700f7,0x007f007f, +0x007f007f,0x00ad00ad,0x00cb00da,0x006f00bc,0x00f600f6,0x00f5008e,0x009d00d9,0x007e005f, +0x00bb00ca,0x00f400f4,0x004f004f,0x006e00ac,0x003f003f,0x00f300f3,0x008d00d8,0x002f00f2, +0x00c900e6,0x00f000f0,0x00e5009c,0x00ba00ba,0x007d00d7,0x00e400e4,0x006d008c,0x00e300e3, +0x009b009b,0x00aa00b9,0x005e00ab,0x00c8004e,0x003e00d6,0x00e000e2,0x00d5000e,0x00c7005d, +0x00d4007c,0x008b00b8,0x00a9004d,0x00c6009a,0x00b7003d,0x005c00c5,0x00a70099,0x0079007a, +0x00cf00ef,0x00df00df,0x00de00de,0x00de00de,0x009e00fa,0x00200010,0x00400030,0x00600050, +0x00700068,0x00760074,0x00110011,0x00010010,0x00000000,0x00880078,0x00a80098,0x00c800b8, +0x00d800d0,0x00f000e8,0x010000f8,0x010c0108,0x011c0114,0x01240120,0x012c0128,0x01340130, +0x013c0138,0x01420140,0x01460144,0x014c014a,0x0152014e,0x01560154,0x01580019,0x015c015a, +0x0160015e,0x00280082,0x00180081,0x01640162,0x01680166,0x00270072,0x00710046,0x00170055, +0x0063016a,0x00540036,0x00620045,0x00610026,0x0053016c,0x00160016,0x00440035,0x00520052, +0x00250025,0x00510051,0x00150015,0x00050050,0x00430043,0x00420034,0x00330024,0x00140014, +0x00400041,0x00320032,0x00230023,0x00300004,0x00310031,0x00030013,0x00220022,0x00120021, +0x00020020,0x0170016e,0x017200ee,0x01760174,0x017800bf,0x00fa00dd,0x00eb00af,0x00dc00be, +0x00f900cd,0x00ae009f,0x00bd00db,0x008f00f8,0x00e900cc,0x00f7009e,0x00da007f,0x00cb00ad, +0x017a00f6,0x00bc00bc,0x006f006f,0x008e00e8,0x00d900f5,0x005f005f,0x00e700e7,0x007e007e, +0x00ca00ca,0x00ac00ac,0x00bb00bb,0x00d8009d,0x00f400f4,0x004f004f,0x00f300f3,0x003f003f, +0x008d008d,0x006e006e,0x00f200f2,0x002f002f,0x000f00e6,0x00f100f1,0x001f001f,0x00c900c9, +0x009c009c,0x00ba00e5,0x005e00ab,0x007d00d7,0x004e00e4,0x008c00c8,0x00d600e3,0x003e006d, +0x009b00b9,0x00e200e2,0x00aa00aa,0x002e002e,0x00e100e1,0x001e001e,0x000e00e0,0x00d500d5, +0x005d005d,0x007c00c7,0x00b800d4,0x004d004d,0x00a9008b,0x00c6009a,0x00d3006c,0x003d003d, +0x002d002d,0x00d000d2,0x00d100d1,0x00b700b7,0x007b007b,0x001d001d,0x000d00c5,0x005c005c, +0x00a800a8,0x00c4008a,0x00b6004c,0x006b006b,0x00c00099,0x00c300c3,0x003c003c,0x00a700a7, +0x007a007a,0x006a006a,0x00b0000c,0x002c002c,0x00b500c2,0x00c1005b,0x00890098,0x00b4001c, +0x00a6004b,0x009700b3,0x003b003b,0x00880079,0x00a500b2,0x002b002b,0x00b1005a,0x001b001b, +0x0096000b,0x00a40069,0x0087004a,0x00a30078,0x003a003a,0x00590095,0x002a00a2,0x001a00a1, +0x000a00a0,0x00860086,0x00940068,0x00930049,0x00390039,0x00900077,0x00580085,0x00760092, +0x00290067,0x00090091,0x00480084,0x00570075,0x00380083,0x00740066,0x00800047,0x00650008, +0x00730056,0x00640037,0x00070070,0x00060060,0x00fe00ff,0x00fd00ef,0x00fc00df,0x00ed00cf, +0x00fb00de,0x00ce00ec,0x00f000ea,0x00200010,0x00400030,0x00100011,0x00010001,0x00000000, +0x00000000,0x00000000,0x00000000,0x004c0044,0x00ff0054,0x005c0058,0x002f005e,0x00f1006e, +0x0070001f,0x00900080,0x00b000a0,0x00d000c0,0x00e000d8,0x00f000e8,0x010000f8,0x010c0108, +0x01120110,0x011a0116,0x011c0015,0x0120011e,0x00410122,0x01240014,0x00230032,0x00310031, +0x00130013,0x00030030,0x00220022,0x00120021,0x00020020,0x00ef00fe,0x00df00fd,0x00cf00fc, +0x00bf00fb,0x00fa00fa,0x00f900af,0x008f009f,0x00f800f8,0x007f00f7,0x006f00f6,0x005f00f5, +0x00f400f4,0x003f004f,0x000f000f,0x000f000f,0x000f000f,0x000f000f,0x00f300f3,0x00f300f3, +0x01360126,0x0146013e,0x00f000f2,0x0152014e,0x015a0156,0x0160015c,0x01660164,0x016e016a, +0x003e0172,0x01780176,0x017c017a,0x0180017e,0x00d00182,0x01860184,0x00c30188,0x00c1018a, +0x018c000c,0x002e002e,0x00e100e2,0x00d2003d,0x001d002d,0x018e00b3,0x00d100d1,0x00b6004c, +0x007a003c,0x00c200c2,0x005b002c,0x00c0001c,0x004b00b4,0x006a00a6,0x003b003b,0x005a00a5, +0x00b200b2,0x002b002b,0x00b100b1,0x001b001b,0x000b00b0,0x00690096,0x004a00a4,0x00780087, +0x003a003a,0x009500a3,0x00a200a2,0x00860059,0x001a001a,0x00770068,0x00490049,0x00750094, +0x00760076,0x002a002a,0x002a002a,0x00a100a1,0x000a00a0,0x00390093,0x00580085,0x00920092, +0x00290029,0x00900067,0x00910091,0x00190019,0x00840009,0x00570048,0x00380083,0x00820066, +0x00280028,0x00470074,0x00810081,0x00180018,0x00080008,0x00650080,0x00730073,0x00370037, +0x00640056,0x00720072,0x00270027,0x00550046,0x00700070,0x00710071,0x00710071,0x00170017, +0x00630007,0x00540036,0x00620045,0x00610026,0x00160016,0x00060060,0x00350035,0x00440053, +0x00250052,0x00500051,0x00340043,0x00420005,0x00330024,0x00040040,0x019000ec,0x00ed00ed, +0x009e009e,0x009d00ae,0x00ee00ee,0x00ee00ee,0x00de00de,0x00be00be,0x00eb00eb,0x00dc00dc, +0x00bd00cd,0x00ea00ea,0x00cc00cc,0x00ad00da,0x00ca00e7,0x00ac00ac,0x00d7009c,0x00e500e5, +0x00db00db,0x00db00db,0x00e900e9,0x00bc00cb,0x008e00e8,0x007e00d9,0x00d800bb,0x00e6008d, +0x00c9006e,0x00ab00ba,0x007d005e,0x00e400e4,0x00c8004e,0x00e3008c,0x00d600d6,0x00b9006d, +0x00aa009b,0x001e001e,0x004d004d,0x009a008b,0x00b700b7,0x000d007b,0x000e00e0,0x005d00d5, +0x007c00c7,0x00b800d4,0x00c600a9,0x00d3006c,0x005c00c5,0x008a00a8,0x00c40099,0x00a7006b, +0x009800b5,0x00970089,0x00880079,0x00dd00ce,0x00200010,0x00ff0030,0x00500040,0x00700060, +0x00900080,0x00a800a0,0x00100011,0x00000001,0x00ef00fe,0x00df00fd,0x00cf00fc,0x00bf00fb, +0x00af00af,0x00f900fa,0x009f009f,0x008f008f,0x00f700f8,0x007f007f,0x00f600f6,0x006f006f, +0x00f500f5,0x005f005f,0x00f400f4,0x004f004f,0x00f300f3,0x003f003f,0x00f200f2,0x002f002f, +0x001f001f,0x000f00f1,0x00b400ac,0x00c400bc,0x00dc00cc,0x00ec00e4,0x00f800f4,0x010000fc, +0x01080104,0x0110010c,0x01180114,0x01240120,0x012c0128,0x01380134,0x01420140,0x014a0146, +0x0150014c,0x01540152,0x01580156,0x015c015a,0x0160015e,0x01640162,0x01680166,0x016c016a, +0x0170016e,0x01760172,0x00370178,0x0027017c,0x00460064,0x00170055,0x00360063,0x00450054, +0x00260062,0x00160061,0x0053017e,0x00440035,0x00250052,0x01800051,0x00150015,0x00340043, +0x00420042,0x00240024,0x00330033,0x00410041,0x00140014,0x00040040,0x00320032,0x00230023, +0x00310031,0x00310031,0x00130013,0x00130013,0x00030030,0x00220022,0x00210021,0x00210021, +0x00120012,0x00020020,0x00f000f0,0x00f000f0,0x00ed00ee,0x00ec00de,0x00dd00ce,0x00be00eb, +0x00cd00dc,0x00ae00ea,0x00bd00db,0x00e900cc,0x00da009e,0x00cb00ad,0x00e800bc,0x00d9008e, +0x00e7009d,0x00ca007e,0x00ac00ac,0x00bb00bb,0x00d800d8,0x008d008d,0x000e00e0,0x00d000d0, +0x006e006e,0x006e006e,0x00c900e6,0x009c009c,0x00e500e5,0x00ab00ab,0x005e005e,0x00d700ba, +0x007d007d,0x004e004e,0x00c800c8,0x008c008c,0x00e200e4,0x00e300e3,0x006d00d6,0x00b9003e, +0x00aa009b,0x00e1002e,0x00d5001e,0x00c7005d,0x00d4007c,0x008b00b8,0x00a9004d,0x00c6009a, +0x00d3006c,0x00d2003d,0x00d1002d,0x007b00b7,0x00c5001d,0x00a8005c,0x0099008a,0x004c00c4, +0x00b600b6,0x006b006b,0x00c0000d,0x00c300c3,0x00a7003c,0x00c2007a,0x00b5002c,0x00c1005b, +0x00890098,0x00b4001c,0x00b0000c,0x00b300b3,0x00a0000b,0x00a100a1,0x004b004b,0x006a00a6, +0x00970097,0x00790079,0x0090000a,0x00090009,0x0088003b,0x00a500b2,0x002b002b,0x00b1005a, +0x0096001b,0x004a0069,0x008700a4,0x00780078,0x003a00a3,0x00590095,0x002a00a2,0x0086001a, +0x00770068,0x00490094,0x00390093,0x00580085,0x00760092,0x00290067,0x00190091,0x00480084, +0x00570075,0x00380083,0x00820066,0x00810028,0x00470074,0x00180018,0x00080080,0x00560065, +0x00710071,0x00070070,0x00720073,0x00060060,0x00050050,0x00000628,0x0000062c,0x0000063c, +0x0000065c,0x00000628,0x0000067c,0x000006b0,0x000006e8,0x00000768,0x000007ec,0x00000858, +0x00000924,0x000009f4,0x00000ab4,0x00000628,0x00000c44,0x00000dc0,0x00000dc0,0x00000dc0, +0x00000dc0,0x00000dc0,0x00000dc0,0x00000dc0,0x00000dc0,0x00000f54,0x00000f54,0x00000f54, +0x00000f54,0x00000f54,0x00000f54,0x00000f54,0x00000f54,0x00000000,0x00000000,0x00000000, +0x00000000,0x04030201,0x0d0a0806,0x07060504,0x0d0b0908,0x03030300,0x04040300,0x04040404, +0x04000404,0x04040404,0x04040404,0x04040404,0x04040404,0x000010d8,0x00000000,0x000013f4, +0x000016ec,0x000016ec,0x000016ec,0x000016ec,0x000016ec,0x000016ec,0x000016ec,0x000016ec, +0x00001a10,0x00001a10,0x00001a10,0x00001a10,0x00001a10,0x00001a10,0x00001a10,0x00001a10, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0xfffe3000,0x000d5000,0xffe35000,0x007f5000,0xfebdf000,0x019ae000,0xf6d8f000, +0x1251e000,0x09271000,0x019ae000,0x01421000,0x007f5000,0x001cb000,0x000d5000,0x0001d000, +0x00000000,0xfffe3000,0x000d5000,0xffe35000,0x007f5000,0xfebdf000,0x019ae000,0xf6d8f000, +0x1251e000,0x09271000,0x019ae000,0x01421000,0x007f5000,0x001cb000,0x000d5000,0x0001d000, +0xfffff000,0xfffe1000,0x000da000,0xffdf9000,0x007d0000,0xfea73000,0x01747000,0xf6658000, +0x124f0000,0x08b38000,0x01bde000,0x012b4000,0x0080f000,0x00191000,0x000d0000,0x0001a000, +0xfffff000,0xfffe1000,0x000da000,0xffdf9000,0x007d0000,0xfea73000,0x01747000,0xf6658000, +0x124f0000,0x08b38000,0x01bde000,0x012b4000,0x0080f000,0x00191000,0x000d0000,0x0001a000, +0xfffff000,0xfffdd000,0x000de000,0xffdbb000,0x007a0000,0xfe909000,0x014a8000,0xf5f28000, +0x12468000,0x083ff000,0x01dd8000,0x01149000,0x00820000,0x0015b000,0x000ca000,0x00018000, +0xfffff000,0xfffdd000,0x000de000,0xffdbb000,0x007a0000,0xfe909000,0x014a8000,0xf5f28000, +0x12468000,0x083ff000,0x01dd8000,0x01149000,0x00820000,0x0015b000,0x000ca000,0x00018000, +0xfffff000,0xfffda000,0x000e1000,0xffd7b000,0x00765000,0xfe7a3000,0x011d1000,0xf5802000, +0x12386000,0x07ccb000,0x01f9c000,0x00fdf000,0x00827000,0x00126000,0x000c4000,0x00015000, +0xfffff000,0xfffda000,0x000e1000,0xffd7b000,0x00765000,0xfe7a3000,0x011d1000,0xf5802000, +0x12386000,0x07ccb000,0x01f9c000,0x00fdf000,0x00827000,0x00126000,0x000c4000,0x00015000, +0xfffff000,0xfffd7000,0x000e3000,0xffd39000,0x0071e000,0xfe643000,0x00ec0000,0xf50eb000, +0x12249000,0x075a0000,0x0212c000,0x00e79000,0x00825000,0x000f4000,0x000be000,0x00013000, +0xfffff000,0xfffd7000,0x000e3000,0xffd39000,0x0071e000,0xfe643000,0x00ec0000,0xf50eb000, +0x12249000,0x075a0000,0x0212c000,0x00e79000,0x00825000,0x000f4000,0x000be000,0x00013000, +0xfffff000,0xfffd3000,0x000e4000,0xffcf5000,0x006cb000,0xfe4e9000,0x00b77000,0xf49e7000, +0x120b4000,0x06e81000,0x02288000,0x00d17000,0x0081b000,0x000c5000,0x000b7000,0x00011000, +0xfffff000,0xfffd3000,0x000e4000,0xffcf5000,0x006cb000,0xfe4e9000,0x00b77000,0xf49e7000, +0x120b4000,0x06e81000,0x02288000,0x00d17000,0x0081b000,0x000c5000,0x000b7000,0x00011000, +0xfffff000,0xfffcf000,0x000e4000,0xffcb0000,0x0066c000,0xfe399000,0x007f5000,0xf42fa000, +0x11ec7000,0x06772000,0x023b3000,0x00bbc000,0x00809000,0x00099000,0x000b0000,0x00010000, +0xfffff000,0xfffcf000,0x000e4000,0xffcb0000,0x0066c000,0xfe399000,0x007f5000,0xf42fa000, +0x11ec7000,0x06772000,0x023b3000,0x00bbc000,0x00809000,0x00099000,0x000b0000,0x00010000, +0xffffe000,0xfffcb000,0x000e3000,0xffc69000,0x005ff000,0xfe253000,0x0043a000,0xf3c27000, +0x11c83000,0x06076000,0x024ad000,0x00a67000,0x007f0000,0x0006f000,0x000a9000,0x0000e000, +0xffffe000,0xfffcb000,0x000e3000,0xffc69000,0x005ff000,0xfe253000,0x0043a000,0xf3c27000, +0x11c83000,0x06076000,0x024ad000,0x00a67000,0x007f0000,0x0006f000,0x000a9000,0x0000e000, +0xffffe000,0xfffc6000,0x000e0000,0xffc21000,0x00586000,0xfe11a000,0x00046000,0xf3573000, +0x119e9000,0x05991000,0x02578000,0x0091a000,0x007d1000,0x00048000,0x000a1000,0x0000d000, +0xffffe000,0xfffc6000,0x000e0000,0xffc21000,0x00586000,0xfe11a000,0x00046000,0xf3573000, +0x119e9000,0x05991000,0x02578000,0x0091a000,0x007d1000,0x00048000,0x000a1000,0x0000d000, +0xffffe000,0xfffc1000,0x000dd000,0xffbd8000,0x00500000,0xfdfef000,0xffc1a000,0xf2ee2000, +0x116fc000,0x052c5000,0x02616000,0x007d6000,0x007aa000,0x00024000,0x0009a000,0x0000b000, +0xffffe000,0xfffc1000,0x000dd000,0xffbd8000,0x00500000,0xfdfef000,0xffc1a000,0xf2ee2000, +0x116fc000,0x052c5000,0x02616000,0x007d6000,0x007aa000,0x00024000,0x0009a000,0x0000b000, +0xffffe000,0xfffbc000,0x000d7000,0xffb8f000,0x0046b000,0xfded5000,0xff7b6000,0xf2876000, +0x113be000,0x04c16000,0x02687000,0x0069c000,0x0077f000,0x00002000,0x00093000,0x0000a000, +0xffffe000,0xfffbc000,0x000d7000,0xffb8f000,0x0046b000,0xfded5000,0xff7b6000,0xf2876000, +0x113be000,0x04c16000,0x02687000,0x0069c000,0x0077f000,0x00002000,0x00093000,0x0000a000, +0xffffd000,0xfffb7000,0x000d0000,0xffb46000,0x003ca000,0xfddcd000,0xff31c000,0xf2236000, +0x1102f000,0x04587000,0x026cf000,0x0056c000,0x0074e000,0xfffe3000,0x0008b000,0x00009000, +0xffffd000,0xfffb7000,0x000d0000,0xffb46000,0x003ca000,0xfddcd000,0xff31c000,0xf2236000, +0x1102f000,0x04587000,0x026cf000,0x0056c000,0x0074e000,0xfffe3000,0x0008b000,0x00009000, +0xffffd000,0xfffb1000,0x000c8000,0xffafd000,0x0031a000,0xfdcda000,0xfee4b000,0xf1c23000, +0x10c54000,0x03f1b000,0x026ee000,0x00447000,0x00719000,0xfffc7000,0x00084000,0x00008000, +0xffffd000,0xfffb1000,0x000c8000,0xffafd000,0x0031a000,0xfdcda000,0xfee4b000,0xf1c23000, +0x10c54000,0x03f1b000,0x026ee000,0x00447000,0x00719000,0xfffc7000,0x00084000,0x00008000, +0xffffc000,0xfffab000,0x000bd000,0xffab4000,0x0025d000,0xfdbfd000,0xfe946000,0xf1642000, +0x1082d000,0x038d4000,0x026e7000,0x0032e000,0x006df000,0xfffad000,0x0007d000,0x00007000, +0xffffc000,0xfffab000,0x000bd000,0xffab4000,0x0025d000,0xfdbfd000,0xfe946000,0xf1642000, +0x1082d000,0x038d4000,0x026e7000,0x0032e000,0x006df000,0xfffad000,0x0007d000,0x00007000, +0xffffc000,0xfffa5000,0x000b1000,0xffa6c000,0x00192000,0xfdb38000,0xfe40e000,0xf1097000, +0x103be000,0x032b4000,0x026bc000,0x00221000,0x006a2000,0xfff96000,0x00075000,0x00007000, +0xffffc000,0xfffa5000,0x000b1000,0xffa6c000,0x00192000,0xfdb38000,0xfe40e000,0xf1097000, +0x103be000,0x032b4000,0x026bc000,0x00221000,0x006a2000,0xfff96000,0x00075000,0x00007000, +0xffffb000,0xfff9f000,0x000a3000,0xffa26000,0x000b9000,0xfda8f000,0xfdea4000,0xf0b24000, +0x0ff0a000,0x02cbf000,0x0266e000,0x00120000,0x00662000,0xfff81000,0x0006f000,0x00006000, +0xffffb000,0xfff9f000,0x000a3000,0xffa26000,0x000b9000,0xfda8f000,0xfdea4000,0xf0b24000, +0x0ff0a000,0x02cbf000,0x0266e000,0x00120000,0x00662000,0xfff81000,0x0006f000,0x00006000, +0xffffb000,0xfff98000,0x00092000,0xff9e1000,0xfffd3000,0xfda01000,0xfd909000,0xf05ed000, +0x0fa13000,0x026f7000,0x025ff000,0x0002d000,0x0061f000,0xfff6e000,0x00068000,0x00005000, +0xffffb000,0xfff98000,0x00092000,0xff9e1000,0xfffd3000,0xfda01000,0xfd909000,0xf05ed000, +0x0fa13000,0x026f7000,0x025ff000,0x0002d000,0x0061f000,0xfff6e000,0x00068000,0x00005000, +0x0d744fcd,0x0b504f33,0x09837f05,0x08000000,0x06ba27e6,0x05a8279a,0x04c1bf83,0x04000000, +0x035d13f3,0x02d413cd,0x0260dfc1,0x02000000,0x01ae89fa,0x016a09e6,0x01306fe1,0x0b504f33, +0x08000000,0x05a8279a,0x04000000,0x02d413cd,0x02000000,0x016a09e6,0x01000000,0x00b504f3, +0x00800000,0x005a827a,0x00400000,0x002d413d,0x00200000,0x0016a09e,0x20000000,0x1965fea5, +0x1428a2fa,0x10000000,0x0cb2ff53,0x0a14517d,0x08000000,0x06597fa9,0x050a28be,0x04000000, +0x032cbfd5,0x0285145f,0x02000000,0x01965fea,0x01428a30,0x01000000,0x00cb2ff5,0x00a14518, +0x00800000,0x006597fb,0x0050a28c,0x00400000,0x0032cbfd,0x00285146,0x00200000,0x001965ff, +0x001428a3,0x00100000,0x000cb2ff,0x000a1451,0x00080000,0x00065980,0x00050a29,0x00040000, +0x00032cc0,0x00028514,0x00020000,0x00019660,0x0001428a,0x00010000,0x0000cb30,0x0000a145, +0x00008000,0x00006598,0x000050a3,0x00004000,0x000032cc,0x00002851,0x00002000,0x00001966, +0x00001429,0x00001000,0x00000cb3,0x00000a14,0x00000800,0x00000659,0x0000050a,0x00000400, +0x0000032d,0x00000285,0x00000200,0x00000196,0x00000143,0x15555555,0x12492492,0x11111111, +0x10842108,0x10410410,0x10204081,0x10101010,0x10080402,0x10040100,0x10020040,0x10010010, +0x10008004,0x10004001,0x10002000,0x0c081e1b,0x0000001e,0x06070707,0x06060606,0x03060606, +0x03030303,0x03030303,0x00030303,0x00000000,0x07070000,0x06060607,0x06060606,0x03030306, +0x03030303,0x03030303,0x00000003,0x00000000,0x02020505,0x02020202,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x05050000,0x02020202,0x02020202,0x00000202,0x00000000, +0x00000000,0x00000000,0x00000000,0x04040404,0x02020202,0x01020202,0x01010101,0x01010101, +0x01010101,0x01010101,0x00000101,0x03020002,0x01030303,0x03040204,0x05040404,0x00100100, +0x00000000,0x00000000,0x00000000,0x04030201,0x00001005,0x00000000,0x01000000,0x05040302, +0x09080706,0x0d0c0b0a,0x0301000e,0x07060504,0x0b0a0908,0x0f0e0d0c,0x03020100,0x07060504, +0x0b0a0908,0x00100d0c,0x06050402,0x0a090807,0x0e0d0c0b,0x0000100f,0x00000003,0x00000002, +0x00000005,0x15555555,0x08000000,0x00000005,0x00000003,0x00000007,0x1999999a,0x08000000, +0x00000007,0x00000000,0x00000003,0x12492492,0x04000000,0x00000009,0x00000004,0x0000000a, +0x1c71c71c,0x08000000,0x0000000f,0x00000000,0x00000004,0x11111111,0x02000000,0x0000001f, +0x00000000,0x00000005,0x10842108,0x01000000,0x0000003f,0x00000000,0x00000006,0x10410410, +0x00800000,0x0000007f,0x00000000,0x00000007,0x10204081,0x00400000,0x000000ff,0x00000000, +0x00000008,0x10101010,0x00200000,0x000001ff,0x00000000,0x00000009,0x10080402,0x00100000, +0x000003ff,0x00000000,0x0000000a,0x10040100,0x00080000,0x000007ff,0x00000000,0x0000000b, +0x10020040,0x00040000,0x00000fff,0x00000000,0x0000000c,0x10010010,0x00020000,0x00001fff, +0x00000000,0x0000000d,0x10008004,0x00010000,0x00003fff,0x00000000,0x0000000e,0x10004001, +0x00008000,0x00007fff,0x00000000,0x0000000f,0x10002000,0x00004000,0x0000ffff,0x00000000, +0x00000010,0x10001000,0x00002000,0x00000000,0x04000000,0x050a28be,0x0453a5cd,0x06597fa9, +0x04466275,0x05738c72,0x06b1fc81,0x04000000,0x04ae20d7,0x0562d694,0x061dae96,0x06de47f4, +0x07a44f7a,0x0437be65,0x049fc824,0x050a28be,0x0576c6f5,0x05e58c0b,0x06566361,0x06c93a2e, +0x073dff3e,0x07b4a2bc,0x04168b05,0x0453a5cd,0x04919b6a,0x04d065fb,0x05100000,0x05506451, +0x05918e15,0x05d378bb,0x06161ff3,0x06597fa9,0x069d9400,0x06e2594c,0x0727cc11,0x076de8fc, +0x07b4ace3,0x07fc14bf,0x04220ed7,0x04466275,0x046b03e7,0x048ff1e8,0x04b52b3f,0x04daaec0, +0x05007b49,0x05268fc6,0x054ceb2a,0x05738c72,0x059a72a5,0x05c19cd3,0x05e90a12,0x0610b982, +0x0638aa48,0x0660db91,0x06894c90,0x06b1fc81,0x06daeaa1,0x07041636,0x072d7e8b,0x075722ef, +0x078102b8,0x07ab1d3e,0x07d571e0,0x04000000,0x04156381,0x042ae32a,0x04407eb1,0x045635cf, +0x046c083e,0x0481f5bb,0x0497fe03,0x04ae20d7,0x04c45df6,0x04dab524,0x04f12624,0x0507b0bc, +0x051e54b1,0x053511cb,0x054be7d4,0x0562d694,0x0579ddd8,0x0590fd6c,0x05a8351c,0x05bf84b8, +0x05d6ec0e,0x05ee6aef,0x0606012b,0x061dae96,0x06357302,0x064d4e43,0x0665402d,0x067d4896, +0x06956753,0x06ad9c3d,0x06c5e72b,0x06de47f4,0x06f6be73,0x070f4a80,0x0727ebf7,0x0740a2b2, +0x07596e8d,0x07724f64,0x078b4514,0x07a44f7a,0x07bd6e75,0x07d6a1e2,0x07efe9a1,0x0404a2c9, +0x04115aca,0x041e1cc4,0x042ae8a7,0x0437be65,0x04449dee,0x04518733,0x045e7a26,0x046b76b9, +0x04787cdc,0x04858c83,0x0492a59f,0x049fc824,0x04acf402,0x04ba292e,0x04c7679a,0x04d4af3a, +0x04e20000,0x04ef59e0,0x04fcbcce,0x050a28be,0x05179da4,0x05251b73,0x0532a220,0x054031a0, +0x054dc9e7,0x055b6ae9,0x0569149c,0x0576c6f5,0x058481e9,0x0592456d,0x05a01176,0x05ade5fa, +0x05bbc2ef,0x05c9a84a,0x05d79601,0x05e58c0b,0x05f38a5d,0x060190ee,0x060f9fb3,0x061db6a5, +0x062bd5b8,0x0639fce4,0x06482c1f,0x06566361,0x0664a2a0,0x0672e9d4,0x068138f3,0x068f8ff5, +0x069deed1,0x06ac557f,0x06bac3f6,0x06c93a2e,0x06d7b81f,0x06e63dc0,0x06f4cb09,0x07035ff3, +0x0711fc75,0x0720a087,0x072f4c22,0x073dff3e,0x074cb9d3,0x075b7bdb,0x076a454c,0x07791620, +0x0787ee50,0x0796cdd4,0x07a5b4a5,0x07b4a2bc,0x07c39812,0x07d294a0,0x07e1985f,0x07f0a348, +0x07ffb554,0x0407673f,0x040ef75e,0x04168b05,0x041e2230,0x0425bcdd,0x042d5b07,0x0434fcad, +0x043ca1c9,0x04444a5a,0x044bf65d,0x0453a5cd,0x045b58a9,0x04630eed,0x046ac896,0x047285a2, +0x047a460c,0x048209d3,0x0489d0f4,0x04919b6a,0x04996935,0x04a13a50,0x04a90eba,0x04b0e66e, +0x04b8c16c,0x04c09faf,0x04c88135,0x04d065fb,0x04d84dff,0x04e0393e,0x04e827b6,0x04f01963, +0x04f80e44,0x05000655,0x05080195,0x05100000,0x05180194,0x0520064f,0x05280e2d,0x0530192e, +0x0538274e,0x0540388a,0x05484ce2,0x05506451,0x05587ed5,0x05609c6e,0x0568bd17,0x0570e0cf, +0x05790793,0x05813162,0x05895e39,0x05918e15,0x0599c0f4,0x05a1f6d5,0x05aa2fb5,0x05b26b92, +0x05baaa69,0x05c2ec39,0x05cb3100,0x05d378bb,0x05dbc368,0x05e41105,0x05ec6190,0x05f4b507, +0x05fd0b68,0x060564b1,0x060dc0e0,0x06161ff3,0x061e81e8,0x0626e6bc,0x062f4e6f,0x0637b8fd, +0x06402666,0x064896a7,0x065109be,0x06597fa9,0x0661f867,0x066a73f5,0x0672f252,0x067b737c, +0x0683f771,0x068c7e2f,0x069507b5,0x069d9400,0x06a6230f,0x06aeb4e0,0x06b74971,0x06bfe0c0, +0x06c87acc,0x06d11794,0x06d9b714,0x06e2594c,0x06eafe3a,0x06f3a5dc,0x06fc5030,0x0704fd35, +0x070dacea,0x07165f4b,0x071f1459,0x0727cc11,0x07308671,0x07394378,0x07420325,0x074ac575, +0x07538a67,0x075c51fa,0x07651c2c,0x076de8fc,0x0776b867,0x077f8a6d,0x07885f0b,0x07913641, +0x079a100c,0x07a2ec6c,0x07abcb5f,0x07b4ace3,0x07bd90f6,0x07c67798,0x07cf60c7,0x07d84c81, +0x07e13ac5,0x07ea2b92,0x07f31ee6,0x07fc14bf,0x0402868e,0x040703ff,0x040b82b0,0x041002a1, +0x041483d1,0x04190640,0x041d89ed,0x04220ed7,0x042694fe,0x042b1c60,0x042fa4fe,0x04342ed7, +0x0438b9e9,0x043d4635,0x0441d3b9,0x04466275,0x044af269,0x044f8393,0x045415f3,0x0458a989, +0x045d3e53,0x0461d451,0x04666b83,0x046b03e7,0x046f9d7e,0x04743847,0x0478d440,0x047d716a, +0x04820fc3,0x0486af4c,0x048b5003,0x048ff1e8,0x049494fb,0x0499393a,0x049ddea5,0x04a2853c, +0x04a72cfe,0x04abd5ea,0x04b08000,0x04b52b3f,0x04b9d7a7,0x04be8537,0x04c333ee,0x04c7e3cc, +0x04cc94d1,0x04d146fb,0x04d5fa4b,0x04daaec0,0x04df6458,0x04e41b14,0x04e8d2f3,0x04ed8bf5, +0x04f24618,0x04f7015d,0x04fbbdc3,0x05007b49,0x050539ef,0x0509f9b4,0x050eba98,0x05137c9a, +0x05183fba,0x051d03f7,0x0521c950,0x05268fc6,0x052b5757,0x05302003,0x0534e9ca,0x0539b4ab, +0x053e80a6,0x05434db9,0x05481be5,0x054ceb2a,0x0551bb85,0x05568cf8,0x055b5f81,0x05603321, +0x056507d6,0x0569dda0,0x056eb47f,0x05738c72,0x05786578,0x057d3f92,0x05821abf,0x0586f6fd, +0x058bd44e,0x0590b2b0,0x05959222,0x059a72a5,0x059f5438,0x05a436da,0x05a91a8c,0x05adff4c, +0x05b2e51a,0x05b7cbf5,0x05bcb3de,0x05c19cd3,0x05c686d5,0x05cb71e2,0x05d05dfb,0x05d54b1f, +0x05da394d,0x05df2885,0x05e418c7,0x05e90a12,0x05edfc66,0x05f2efc2,0x05f7e426,0x05fcd992, +0x0601d004,0x0606c77d,0x060bbffd,0x0610b982,0x0615b40c,0x061aaf9c,0x061fac2f,0x0624a9c7, +0x0629a863,0x062ea802,0x0633a8a3,0x0638aa48,0x063dacee,0x0642b096,0x0647b53f,0x064cbae9, +0x0651c193,0x0656c93d,0x065bd1e7,0x0660db91,0x0665e639,0x066af1df,0x066ffe84,0x06750c26, +0x067a1ac6,0x067f2a62,0x06843afb,0x06894c90,0x068e5f21,0x069372ae,0x06988735,0x069d9cb7, +0x06a2b333,0x06a7caa9,0x06ace318,0x06b1fc81,0x06b716e2,0x06bc323b,0x06c14e8d,0x06c66bd6, +0x06cb8a17,0x06d0a94e,0x06d5c97c,0x06daeaa1,0x06e00cbb,0x06e52fca,0x06ea53cf,0x06ef78c8, +0x06f49eb6,0x06f9c597,0x06feed6d,0x07041636,0x07093ff2,0x070e6aa0,0x07139641,0x0718c2d3, +0x071df058,0x07231ecd,0x07284e34,0x072d7e8b,0x0732afd2,0x0737e209,0x073d1530,0x07424946, +0x07477e4b,0x074cb43e,0x0751eb20,0x075722ef,0x075c5bac,0x07619557,0x0766cfee,0x076c0b72, +0x077147e2,0x0776853e,0x077bc385,0x078102b8,0x078642d6,0x078b83de,0x0790c5d1,0x079608ae, +0x079b4c74,0x07a09124,0x07a5d6bd,0x07ab1d3e,0x07b064a8,0x07b5acfb,0x07baf635,0x07c04056, +0x07c58b5f,0x07cad74e,0x07d02424,0x07d571e0,0x07dac083,0x07e0100a,0x07e56078,0x07eab1ca, +0x07f00401,0x07f5571d,0x07faab1c,0x04000000,0x0402aae3,0x04055638,0x040801ff,0x040aae37, +0x040d5ae0,0x041007fa,0x0412b586,0x04156381,0x041811ee,0x041ac0cb,0x041d7018,0x04201fd5, +0x0422d003,0x042580a0,0x042831ad,0x042ae32a,0x042d9516,0x04304772,0x0432fa3d,0x0435ad76, +0x0438611f,0x043b1536,0x043dc9bc,0x04407eb1,0x04433414,0x0445e9e5,0x0448a024,0x044b56d1, +0x044e0dec,0x0450c575,0x04537d6b,0x045635cf,0x0458ee9f,0x045ba7dd,0x045e6188,0x04611ba0, +0x0463d625,0x04669116,0x04694c74,0x046c083e,0x046ec474,0x04718116,0x04743e25,0x0476fb9f, +0x0479b984,0x047c77d6,0x047f3693,0x0481f5bb,0x0484b54e,0x0487754c,0x048a35b6,0x048cf68a, +0x048fb7c8,0x04927972,0x04953b85,0x0497fe03,0x049ac0eb,0x049d843e,0x04a047fa,0x04a30c20, +0x04a5d0af,0x04a895a8,0x04ab5b0b,0x04ae20d7,0x04b0e70c,0x04b3adaa,0x04b674b1,0x04b93c21, +0x04bc03fa,0x04becc3b,0x04c194e4,0x04c45df6,0x04c72771,0x04c9f153,0x04ccbb9d,0x04cf864f, +0x04d25169,0x04d51ceb,0x04d7e8d4,0x04dab524,0x04dd81dc,0x04e04efb,0x04e31c81,0x04e5ea6e, +0x04e8b8c2,0x04eb877c,0x04ee569d,0x04f12624,0x04f3f612,0x04f6c666,0x04f99721,0x04fc6841, +0x04ff39c7,0x05020bb3,0x0504de05,0x0507b0bc,0x050a83d8,0x050d575b,0x05102b42,0x0512ff8e, +0x0515d440,0x0518a956,0x051b7ed1,0x051e54b1,0x05212af5,0x0524019e,0x0526d8ab,0x0529b01d, +0x052c87f2,0x052f602c,0x053238ca,0x053511cb,0x0537eb30,0x053ac4f9,0x053d9f25,0x054079b5, +0x054354a8,0x05462ffe,0x05490bb7,0x054be7d4,0x054ec453,0x0551a134,0x05547e79,0x05575c20, +0x055a3a2a,0x055d1896,0x055ff764,0x0562d694,0x0565b627,0x0568961b,0x056b7671,0x056e5729, +0x05713843,0x057419be,0x0576fb9a,0x0579ddd8,0x057cc077,0x057fa378,0x058286d9,0x05856a9b, +0x05884ebe,0x058b3342,0x058e1827,0x0590fd6c,0x0593e311,0x0596c917,0x0599af7d,0x059c9643, +0x059f7d6a,0x05a264f0,0x05a54cd6,0x05a8351c,0x05ab1dc2,0x05ae06c7,0x05b0f02b,0x05b3d9f0, +0x05b6c413,0x05b9ae95,0x05bc9977,0x05bf84b8,0x05c27057,0x05c55c56,0x05c848b3,0x05cb356e, +0x05ce2289,0x05d11001,0x05d3fdd8,0x05d6ec0e,0x05d9daa1,0x05dcc993,0x05dfb8e2,0x05e2a890, +0x05e5989b,0x05e88904,0x05eb79cb,0x05ee6aef,0x05f15c70,0x05f44e4f,0x05f7408b,0x05fa3324, +0x05fd261b,0x0600196e,0x06030d1e,0x0606012b,0x0608f595,0x060bea5c,0x060edf7f,0x0611d4fe, +0x0614cada,0x0617c112,0x061ab7a6,0x061dae96,0x0620a5e3,0x06239d8b,0x0626958f,0x06298def, +0x062c86aa,0x062f7fc1,0x06327934,0x06357302,0x06386d2b,0x063b67b0,0x063e6290,0x06415dcb, +0x06445960,0x06475551,0x064a519c,0x064d4e43,0x06504b44,0x0653489f,0x06564655,0x06594465, +0x065c42d0,0x065f4195,0x066240b4,0x0665402d,0x06684000,0x066b402d,0x066e40b3,0x06714194, +0x067442ce,0x06774462,0x067a464f,0x067d4896,0x06804b36,0x06834e2f,0x06865181,0x0689552c, +0x068c5931,0x068f5d8e,0x06926245,0x06956753,0x06986cbb,0x069b727b,0x069e7894,0x06a17f05, +0x06a485cf,0x06a78cf1,0x06aa946b,0x06ad9c3d,0x06b0a468,0x06b3acea,0x06b6b5c4,0x06b9bef6, +0x06bcc880,0x06bfd261,0x06c2dc9a,0x06c5e72b,0x06c8f213,0x06cbfd52,0x06cf08e9,0x06d214d7, +0x06d5211c,0x06d82db8,0x06db3aaa,0x06de47f4,0x06e15595,0x06e4638d,0x06e771db,0x06ea807f, +0x06ed8f7b,0x06f09ecc,0x06f3ae75,0x06f6be73,0x06f9cec8,0x06fcdf72,0x06fff073,0x070301ca, +0x07061377,0x0709257a,0x070c37d2,0x070f4a80,0x07125d84,0x071570de,0x0718848d,0x071b9891, +0x071eaceb,0x0721c19a,0x0724d69e,0x0727ebf7,0x072b01a6,0x072e17a9,0x07312e01,0x073444ae, +0x07375bb0,0x073a7307,0x073d8ab2,0x0740a2b2,0x0743bb06,0x0746d3af,0x0749ecac,0x074d05fe, +0x07501fa3,0x0753399d,0x075653eb,0x07596e8d,0x075c8983,0x075fa4cc,0x0762c06a,0x0765dc5b, +0x0768f8a0,0x076c1538,0x076f3224,0x07724f64,0x07756cf7,0x07788add,0x077ba916,0x077ec7a3, +0x0781e683,0x078505b5,0x0788253b,0x078b4514,0x078e653f,0x079185be,0x0794a68f,0x0797c7b2, +0x079ae929,0x079e0af1,0x07a12d0c,0x07a44f7a,0x07a7723a,0x07aa954c,0x07adb8b0,0x07b0dc67, +0x07b4006f,0x07b724ca,0x07ba4976,0x07bd6e75,0x07c093c5,0x07c3b967,0x07c6df5a,0x07ca059f, +0x07cd2c36,0x07d0531e,0x07d37a57,0x07d6a1e2,0x07d9c9be,0x07dcf1ec,0x07e01a6a,0x07e3433a, +0x07e66c5a,0x07e995cc,0x07ecbf8e,0x07efe9a1,0x07f31405,0x07f63eba,0x07f969c0,0x07fc9516, +0x07ffc0bc,0x04017659,0x04030c7d,0x0404a2c9,0x0406393d,0x0407cfd9,0x0409669d,0x040afd89, +0x040c949e,0x040e2bda,0x040fc33e,0x04115aca,0x0412f27e,0x04148a5a,0x0416225d,0x0417ba89, +0x041952dc,0x041aeb57,0x041c83fa,0x041e1cc4,0x041fb5b6,0x04214ed0,0x0422e811,0x04248179, +0x04261b0a,0x0427b4c2,0x04294ea1,0x042ae8a7,0x042c82d6,0x042e1d2b,0x042fb7a8,0x0431524c, +0x0432ed17,0x0434880a,0x04362324,0x0437be65,0x043959cd,0x043af55d,0x043c9113,0x043e2cf1, +0x043fc8f6,0x04416522,0x04430174,0x04449dee,0x04463a8f,0x0447d756,0x04497445,0x044b115a, +0x044cae96,0x044e4bf9,0x044fe983,0x04518733,0x0453250a,0x0454c308,0x0456612d,0x0457ff78, +0x04599dea,0x045b3c82,0x045cdb41,0x045e7a26,0x04601932,0x0461b864,0x046357bd,0x0464f73c, +0x046696e2,0x046836ae,0x0469d6a0,0x046b76b9,0x046d16f7,0x046eb75c,0x047057e8,0x0471f899, +0x04739971,0x04753a6f,0x0476db92,0x04787cdc,0x047a1e4c,0x047bbfe2,0x047d619e,0x047f0380, +0x0480a588,0x048247b6,0x0483ea0a,0x04858c83,0x04872f22,0x0488d1e8,0x048a74d3,0x048c17e3, +0x048dbb1a,0x048f5e76,0x049101f8,0x0492a59f,0x0494496c,0x0495ed5f,0x04979177,0x049935b5, +0x049ada19,0x049c7ea1,0x049e2350,0x049fc824,0x04a16d1d,0x04a3123b,0x04a4b77f,0x04a65ce8, +0x04a80277,0x04a9a82b,0x04ab4e04,0x04acf402,0x04ae9a26,0x04b0406e,0x04b1e6dc,0x04b38d6f, +0x04b53427,0x04b6db05,0x04b88207,0x04ba292e,0x04bbd07a,0x04bd77ec,0x04bf1f82,0x04c0c73d, +0x04c26f1d,0x04c41722,0x04c5bf4c,0x04c7679a,0x04c9100d,0x04cab8a6,0x04cc6163,0x04ce0a44, +0x04cfb34b,0x04d15c76,0x04d305c5,0x04d4af3a,0x04d658d2,0x04d80290,0x04d9ac72,0x04db5679, +0x04dd00a4,0x04deaaf3,0x04e05567,0x04e20000,0x04e3aabd,0x04e5559e,0x04e700a3,0x04e8abcd, +0x04ea571c,0x04ec028e,0x04edae25,0x04ef59e0,0x04f105bf,0x04f2b1c3,0x04f45dea,0x04f60a36, +0x04f7b6a6,0x04f9633a,0x04fb0ff2,0x04fcbcce,0x04fe69ce,0x050016f3,0x0501c43b,0x050371a7, +0x05051f37,0x0506cceb,0x05087ac2,0x050a28be,0x050bd6de,0x050d8521,0x04030200,0x05050504, +0x06060606,0x07070606,0x07070707,0x08070707,0x08080808,0x08080808,0x08080808,0x09080808, +0x09090909,0x09090909,0x09090909,0x09090909,0x09090909,0x09090909,0x0a0a0a0a,0x0a0a0a0a, +0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a,0x0a0a0a0a, +0x0a0a0a0a,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b, +0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b, +0x0b0b0b0b,0x0b0b0b0b,0x0b0b0b0b,0x0c0c0b0b,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c,0x0c0c0c0c, +0x0c0c0c0c,0x0c0c0c0c,0x0d0d0d0c,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d, +0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0d0d0d0d,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e, +0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0e0e0e0e,0x0f0f0e0e,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f, +0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x0f0f0f0f,0x000f0f0f,0x01000000, +0x03000200,0x01010003,0x03010201,0x02020102,0x01030302,0x03030203,0x03040204,0x05050506, +0x09090909,0x09090906,0x03070506,0x060c0909,0x060c0906,0x00000a0b,0x00001212,0x0000120f, +0x00070707,0x000c0c0c,0x000c0f06,0x03060606,0x0609090c,0x06090c06,0x00050808,0x00090c0f, +0x00091206,0x04040404,0x06060404,0x0c0a0806,0x1c161210,0x362e2822,0x0000c036,0x04040404, +0x06060404,0x0c0a0808,0x1c181410,0x36322a22,0x00009e4c,0x04040404,0x06060404,0x100c0a08, +0x261e1814,0x5444382e,0x00001a66,0x04040404,0x04040404,0x04040404,0x06060606,0x0a0a0606, +0x0c0c0c0a,0x100e0e0e,0x14141010,0x1a1a1a14,0x00424242,0x04040404,0x04040404,0x04040404, +0x08060606,0x0a0a0808,0x0c0c0c0a,0x120e0e0e,0x16161212,0x1e1e1e16,0x00383838,0x04040404, +0x04040404,0x04040404,0x08060606,0x0c0c0808,0x1010100c,0x1a141414,0x22221a1a,0x2a2a2a22, +0x000c0c0c,0x04040404,0x06060404,0x06040404,0x06060606,0x0a0a0a06,0x0e0c0c0c,0x10100e0e, +0x14141410,0x421a1a1a,0x00004242,0x04040404,0x06060404,0x06040404,0x08080606,0x0a0a0a08, +0x0e0c0c0c,0x12120e0e,0x16161612,0x381e1e1e,0x00003838,0x04040404,0x06060404,0x06040404, +0x08080606,0x0c0c0c08,0x14101010,0x1a1a1414,0x2222221a,0x0c2a2a2a,0x00000c0c,0x06060606, +0x0a080606,0x12100e0c,0x26201a16,0x463e362e,0x0000244c,0x06060606,0x0a080606,0x14100e0c, +0x26201c18,0x443c342e,0x0000363a,0x04040404,0x04040404,0x06060604,0x0a080808,0x0c0c0a0a, +0x0e0e0e0c,0x18121212,0x20201818,0x2c2c2c20,0x000c0c0c,0x04040404,0x04040404,0x06060604, +0x08060606,0x0a0a0808,0x0e0e0e0a,0x1a121212,0x20201a1a,0x2a2a2a20,0x00121212,0x04040404, +0x04040404,0x06060604,0x0a080808,0x0c0c0a0a,0x0e0e0e0c,0x18121212,0x1e1e1818,0x2828281e, +0x00121212,0x06060606,0x06060606,0x08080806,0x0c0a0a0a,0x0e0e0c0c,0x1212120e,0x20181818, +0x2c2c2020,0x0c0c0c2c,0x06060606,0x06060606,0x06060606,0x0a080808,0x0e0e0a0a,0x1212120e, +0x201a1a1a,0x2a2a2020,0x1212122a,0x06060606,0x06060606,0x08080806,0x0c0a0a0a,0x0e0e0c0c, +0x1212120e,0x1e181818,0x28281e1e,0x12121228,0x0c0c0c0c,0x14100c0c,0x28201c18,0x4c403830, +0x0202025a,0x00000202,0x08080808,0x08080808,0x0c0c0c08,0x14101010,0x18181414,0x1c1c1c18, +0x02242424,0x02020202,0x02020202,0x001a1a1a,0x040c0c0c,0x08080404,0x0c0c0c08,0x14101010, +0x18181414,0x1c1c1c18,0x02242424,0x02020202,0x02020202,0x001a1a1a,0x0000c924,0x0000c96c, +0x0000c9e4,0x0000c93c,0x0000c994,0x0000ca0c,0x0000c954,0x0000c9bc,0x0000ca34,0x0000ca5c, +0x0000ca8c,0x0000cb04,0x0000ca74,0x0000cab4,0x0000cb28,0x0000ca74,0x0000cadc,0x0000cb4c, +0x0000ca74,0x0000cadc,0x0000cb4c,0x0000ca74,0x0000cadc,0x0000cb4c,0x0000cb70,0x0000cb88, +0x0000cbb0,0x00000000,0x00000000,0x01000000,0x02010101,0x03030302,0x00000002,0x09837f05, +0x0b504f33,0x0d744fcd,0x10000000,0x1306fe0a,0x16a09e66,0x1ae89f99,0x0db84a81,0x0e1b9d7f, +0x0f31adcf,0x0fbba815,0x0feda417,0x0ffc8fc8,0x0fff964c,0x0ffff8d3,0xf7c4a019,0xf873c92e, +0xfafc67ec,0xfd16e22f,0xfe7c9fc6,0xff583479,0xffc5d7b9,0xfff0d84c,0x09bd7ca0,0xf137ca18, +0xfde95d5e,0x0fdcf549,0xf9e08756,0xf34e6cba,0xf34e6cba,0x061f78aa,0x0fdcf549,0x0216a2a2, +0xf137ca18,0xf6428360,0x061f78aa,0xf137ca18,0x0ec835e8,0xf9e08756,0xf9e08756,0x0ec835e8, +0xf137ca18,0xf9e08756,0x061f78aa,0x0ec835e8,0x0ec835e8,0x061f78aa,0x0216a2a2,0xf9e08756, +0x09bd7ca0,0xf34e6cba,0x0ec835e8,0xf0230ab7,0xf0230ab7,0xf137ca18,0xf34e6cba,0xf6428360, +0xf9e08756,0xfde95d5e,0x00b2aa3e,0x0216a2a2,0x03768962,0x04cfb0e2,0x061f78aa,0x07635284, +0x0898c779,0x09bd7ca0,0x0acf37ad,0x0bcbe352,0x0cb19346,0x0d7e8807,0x0e313245,0x0ec835e8, +0x0f426cb5,0x0f9ee890,0x0fdcf549,0x0ffc19fd,0x0ffc19fd,0x0fdcf549,0x0f9ee890,0x0f426cb5, +0x0ec835e8,0x0e313245,0x0d7e8807,0x0cb19346,0x0bcbe352,0x0acf37ad,0x09bd7ca0,0x0898c779, +0x07635284,0x061f78aa,0x04cfb0e2,0x03768962,0x0216a2a2,0x00b2aa3e,0x0216a2a2,0x061f78aa, +0x09bd7ca0,0x0cb19346,0x0ec835e8,0x0fdcf549,0x0fdcf549,0x0ec835e8,0x0cb19346,0x09bd7ca0, +0x061f78aa,0x0216a2a2,0x00000000,0x0361962f,0x05db3d74,0x08000000,0x0a24c28c,0x0c9e69d1, +0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00007fff,0x00000000,0x00000000,0x001ffffe,0x0371ff37, +0x769af345,0xf7c8197c,0xff5902a7,0xfffe001b,0x0031fffc,0x0556fec1,0x6361ed74,0xf0bf3665, +0xfeda04bf,0xfffd002e,0x0034fffc,0x057efeb0,0x4954edd8,0xed1652e4,0xfeaa05a1,0xfffc0035, +0x0029fffd,0x0421feff,0x2c3bf2e9,0xeeb56afb,0xfede04e0,0xfffd002c,0x0012ffff,0x01c3ff90, +0x1019fa9b,0xf6e37b16,0xff750267,0xfffe0015,0x000cffff,0x0156ffb3,0x7e00facf,0xfd280838, +0xffc400f0,0xffff000a,0x0027fffd,0x044aff03,0x70eef07d,0xf519234a,0xff26037a,0xfffd0022, +0x0034fffc,0x0595feaf,0x5af4ecf3,0xeefe4083,0xfebf0537,0xfffc0032,0x0032fffc,0x052cfec2, +0x3f65ef2a,0xecf85bed,0xfeb00590,0xfffc0034,0x0022fffd,0x0364ff2b,0x222ff563,0xf0c1719e, +0xff080435,0xfffd0026,0x0008ffff,0x00d5ffcb,0x0745fd7a,0xfb587e4a,0xffbb0132,0xffff000a, +0x0016fffe,0x0287ff6d,0x7aa7f671,0xfa49111d,0xff8a01dd,0xffff0013,0x002dfffd,0x04f0feda, +0x6a2eee87,0xf2a72d5c,0xfefa0434,0xfffd0029,0x0035fffc,0x059ffeaa,0x51daed24,0xedbb4a69, +0xfeaf0584,0xfffc0035,0x002efffd,0x04affede,0x3544f0f8,0xed8e6444,0xfec3054b,0xfffc0031, +0x001afffe,0x028fff5f,0x186bf817,0xf3a17729,0xff3d0356,0xfffe001e,0x00010000,0x0028fff7, +0x7fd9ff62,0xffb000e0,0xfff9001b,0x00000001,0x0020fffe,0x038cff30,0x7608f2eb,0xf7791a8f, +0xff5302c0,0xfffe001b,0x0032fffc,0x055ffebe,0x627bed5c,0xf0883787,0xfed704ce,0xfffd002f, +0x0034fffc,0x0577feb2,0x483dedf7,0xed0a53ed,0xfeaa05a1,0xfffc0035,0x0028fffd,0x040dff03, +0x2b1bf32c,0xeee56bc4,0xfee204d0,0xfffd002c,0x0011ffff,0x01a9ff97,0x0f16faec,0xf7577b82, +0xff7c0247,0xffff0014,0x000dffff,0x017affab,0x7db1fa48,0xfcd7092d,0xffbe010b,0xffff000b, +0x0027fffd,0x045ffefe,0x703bf03b,0xf4d02466,0xff210390,0xfffd0023,0x0034fffc,0x0599feae, +0x59f9ecf0,0xeed341a0,0xfebd0542,0xfffc0033,0x0031fffc,0x0520fec4,0x3e47ef58,0xecff5ce3, +0xfeb2058b,0xfffc0034,0x0021fffe,0x034dff31,0x2115f5ae,0xf109724a,0xff0e041f,0xfffd0025, +0x0007ffff,0x00bbffd2,0x0654fdcc,0xfbe47e90,0xffc4010d,0xffff0009,0x0017fffe,0x02a6ff66, +0x7a33f602,0xf9f81224,0xff8401f7,0xffff0014,0x002efffd,0x04fffed7,0x695eee5c,0xf2662e7c, +0xfef60447,0xfffd002a,0x0035fffc,0x059dfeaa,0x50ceed34,0xeda04b7d,0xfeae058a,0xfffc0035, +0x002dfffd,0x049ffee2,0x3423f132,0xedaa6525,0xfec60540,0xfffc0030,0x0019fffe,0x0276ff65, +0x175bf866,0xf40077b5,0xff44033a,0xfffe001d,0x00030000,0x004fffee,0x7fadfec7,0xff6001c3, +0xfff30035,0x00000002,0x0021fffe,0x03a6ff2a,0x7571f294,0xf72b1ba2,0xff4d02d8,0xfffe001c, +0x0032fffc,0x0568febc,0x6192ed47,0xf05238a7,0xfed304dd,0xfffc002f,0x0034fffc,0x056ffeb3, +0x4725ee17,0xed0154f3,0xfeab05a1,0xfffc0035,0x0027fffd,0x03f9ff08,0x29fcf370,0xef186c8b, +0xfee704bf,0xfffd002b,0x0010ffff,0x018fff9d,0x0e15fb3e,0xf7ce7bea,0xff840226,0xffff0013, +0x000effff,0x019dffa3,0x7d5ff9c4,0xfc850a24,0xffb70125,0xffff000c,0x0028fffd,0x0474fef9, +0x6f85effb,0xf4882583,0xff1c03a6,0xfffd0024,0x0034fffc,0x059cfead,0x58fbecef,0xeeaa42bd, +0xfebb054c,0xfffc0033,0x0031fffc,0x0513fec7,0x3d28ef87,0xed095dd8,0xfeb40586,0xfffc0033, +0x0020fffe,0x0336ff36,0x1ffcf5f9,0xf15272f2,0xff130408,0xfffd0024,0x00060000,0x00a0ffd8, +0x0566fe1d,0xfc737ed2,0xffcc00e8,0xffff0008,0x0018fffe,0x02c5ff5f,0x79bbf596,0xf9a7132c, +0xff7d0211,0xfffe0015,0x002efffd,0x050dfed3,0x688cee34,0xf2262f9d,0xfef20459,0xfffd002b, +0x0035fffc,0x059afeab,0x4fc1ed45,0xed864c90,0xfead058f,0xfffc0035,0x002cfffd,0x048efee5, +0x3301f16d,0xedc96603,0xfec90534,0xfffc0030,0x0018fffe,0x025dff6b,0x164df8b6,0xf461783c, +0xff4a031e,0xfffe001c,0x00040000,0x0076ffe6,0x7f7dfe2e,0xff1002a8,0xffec0050,0x00000003, +0x0021fffe,0x03bfff24,0x74d7f240,0xf6de1cb7,0xff4702f0,0xfffe001d,0x0032fffc,0x0571feb9, +0x60a7ed34,0xf01d39c8,0xfed004eb,0xfffc0030,0x0034fffc,0x0567feb5,0x460dee39,0xecf955f8, +0xfeab05a1,0xfffc0035,0x0026fffd,0x03e5ff0d,0x28ddf3b4,0xef4d6d4e,0xfeeb04ad,0xfffd002a, +0x000fffff,0x0175ffa4,0x0d16fb90,0xf8487c4d,0xff8b0205,0xffff0012,0x000fffff,0x01c0ff9b, +0x7d08f943,0xfc330b1d,0xffb10140,0xffff000d,0x0029fffd,0x0487fef4,0x6ecbefbf,0xf44126a0, +0xff1703bb,0xfffd0025,0x0035fffc,0x059efeac,0x57fcecf0,0xee8343d8,0xfeb80556,0xfffc0033, +0x0031fffc,0x0506feca,0x3c08efb7,0xed155eca,0xfeb5057f,0xfffc0033,0x001ffffe,0x031fff3c, +0x1ee4f645,0xf19f7397,0xff1903f0,0xfffd0023,0x00050000,0x0085ffdf,0x0479fe6e,0xfd047f0f, +0xffd500c2,0x00000007,0x0019fffe,0x02e3ff58,0x793ff52d,0xf9571435,0xff77022a,0xfffe0016, +0x002ffffd,0x051bfed0,0x67b6ee0e,0xf1e730bf,0xfeed046b,0xfffd002b,0x0035fffc,0x0597feab, +0x4eb2ed59,0xed6f4da2,0xfeac0593,0xfffc0035,0x002cfffd,0x047dfee9,0x31e0f1aa,0xedea66de, +0xfecc0528,0xfffd002f,0x0017fffe,0x0244ff71,0x1540f906,0xf4c678c0,0xff510301,0xfffe001b, +0x00050000,0x009cffdd,0x7f48fd97,0xfebf038f,0xffe5006b,0x00000004,0x0022fffd,0x03d8ff1e, +0x7439f1ee,0xf6911dcd,0xff420308,0xfffe001e,0x0033fffc,0x0578feb7,0x5fbaed23,0xefe93ae8, +0xfecd04f9,0xfffc0030,0x0033fffc,0x055ffeb7,0x44f3ee5d,0xecf356fb,0xfeab05a0,0xfffc0035, +0x0026fffd,0x03d0ff12,0x27bef3fa,0xef846e0e,0xfeef049a,0xfffd002a,0x000effff,0x015affaa, +0x0c18fbe1,0xf8c47cad,0xff9301e3,0xffff0010,0x0010ffff,0x01e3ff93,0x7cadf8c4,0xfbe10c18, +0xffaa015a,0xffff000e,0x002afffd,0x049afeef,0x6e0eef84,0xf3fa27be,0xff1203d0,0xfffd0026, +0x0035fffc,0x05a0feab,0x56fbecf3,0xee5d44f3,0xfeb7055f,0xfffc0033,0x0030fffc,0x04f9fecd, +0x3ae8efe9,0xed235fba,0xfeb70578,0xfffc0033,0x001efffe,0x0308ff42,0x1dcdf691,0xf1ee7439, +0xff1e03d8,0xfffd0022,0x00040000,0x006bffe5,0x038ffebf,0xfd977f48,0xffdd009c,0x00000005, +0x001bfffe,0x0301ff51,0x78c0f4c6,0xf9061540,0xff710244,0xfffe0017,0x002ffffd,0x0528fecc, +0x66deedea,0xf1aa31e0,0xfee9047d,0xfffd002c,0x0035fffc,0x0593feac,0x4da2ed6f,0xed594eb2, +0xfeab0597,0xfffc0035,0x002bfffd,0x046bfeed,0x30bff1e7,0xee0e67b6,0xfed0051b,0xfffd002f, +0x0016fffe,0x022aff77,0x1435f957,0xf52d793f,0xff5802e3,0xfffe0019,0x00070000,0x00c2ffd5, +0x7f0ffd04,0xfe6e0479,0xffdf0085,0x00000005,0x0023fffd,0x03f0ff19,0x7397f19f,0xf6451ee4, +0xff3c031f,0xfffe001f,0x0033fffc,0x057ffeb5,0x5ecaed15,0xefb73c08,0xfeca0506,0xfffc0031, +0x0033fffc,0x0556feb8,0x43d8ee83,0xecf057fc,0xfeac059e,0xfffc0035,0x0025fffd,0x03bbff17, +0x26a0f441,0xefbf6ecb,0xfef40487,0xfffd0029,0x000dffff,0x0140ffb1,0x0b1dfc33,0xf9437d08, +0xff9b01c0,0xffff000f,0x0012ffff,0x0205ff8b,0x7c4df848,0xfb900d16,0xffa40175,0xffff000f, +0x002afffd,0x04adfeeb,0x6d4eef4d,0xf3b428dd,0xff0d03e5,0xfffd0026,0x0035fffc,0x05a1feab, +0x55f8ecf9,0xee39460d,0xfeb50567,0xfffc0034,0x0030fffc,0x04ebfed0,0x39c8f01d,0xed3460a7, +0xfeb90571,0xfffc0032,0x001dfffe,0x02f0ff47,0x1cb7f6de,0xf24074d7,0xff2403bf,0xfffe0021, +0x00030000,0x0050ffec,0x02a8ff10,0xfe2e7f7d,0xffe60076,0x00000004,0x001cfffe,0x031eff4a, +0x783cf461,0xf8b6164d,0xff6b025d,0xfffe0018,0x0030fffc,0x0534fec9,0x6603edc9,0xf16d3301, +0xfee5048e,0xfffd002c,0x0035fffc,0x058ffead,0x4c90ed86,0xed454fc1,0xfeab059a,0xfffc0035, +0x002bfffd,0x0459fef2,0x2f9df226,0xee34688c,0xfed3050d,0xfffd002e,0x0015fffe,0x0211ff7d, +0x132cf9a7,0xf59679bb,0xff5f02c5,0xfffe0018,0x0008ffff,0x00e8ffcc,0x7ed2fc73,0xfe1d0566, +0xffd800a0,0x00000006,0x0024fffd,0x0408ff13,0x72f2f152,0xf5f91ffc,0xff360336,0xfffe0020, +0x0033fffc,0x0586feb4,0x5dd8ed09,0xef873d28,0xfec70513,0xfffc0031,0x0033fffc,0x054cfebb, +0x42bdeeaa,0xecef58fb,0xfead059c,0xfffc0034,0x0024fffd,0x03a6ff1c,0x2583f488,0xeffb6f85, +0xfef90474,0xfffd0028,0x000cffff,0x0125ffb7,0x0a24fc85,0xf9c47d5f,0xffa3019d,0xffff000e, +0x0013ffff,0x0226ff84,0x7beaf7ce,0xfb3e0e15,0xff9d018f,0xffff0010,0x002bfffd,0x04bffee7, +0x6c8bef18,0xf37029fc,0xff0803f9,0xfffd0027,0x0035fffc,0x05a2feab,0x54f3ed01,0xee174725, +0xfeb3056f,0xfffc0034,0x002ffffc,0x04ddfed3,0x38a7f052,0xed476192,0xfebc0568,0xfffc0032, +0x001cfffe,0x02d8ff4d,0x1ba2f72b,0xf2947571,0xff2a03a6,0xfffe0021,0x00020000,0x0035fff3, +0x01c3ff60,0xfec77fad,0xffee004f,0x00000003,0x001dfffe,0x033aff44,0x77b5f400,0xf866175b, +0xff650276,0xfffe0019,0x0030fffc,0x0540fec6,0x6525edaa,0xf1323423,0xfee2049f,0xfffd002d, +0x0035fffc,0x058afeae,0x4b7deda0,0xed3450ce,0xfeaa059d,0xfffc0035,0x002afffd,0x0447fef6, +0x2e7cf266,0xee5c695e,0xfed704ff,0xfffd002e,0x0014ffff,0x01f7ff84,0x1224f9f8,0xf6027a33, +0xff6602a6,0xfffe0017,0x0009ffff,0x010dffc4,0x7e90fbe4,0xfdcc0654,0xffd200bb,0xffff0007, +0x0025fffd,0x041fff0e,0x724af109,0xf5ae2115,0xff31034d,0xfffe0021,0x0034fffc,0x058bfeb2, +0x5ce3ecff,0xef583e47,0xfec40520,0xfffc0031,0x0033fffc,0x0542febd,0x41a0eed3,0xecf059f9, +0xfeae0599,0xfffc0034,0x0023fffd,0x0390ff21,0x2466f4d0,0xf03b703b,0xfefe045f,0xfffd0027, +0x000bffff,0x010bffbe,0x092dfcd7,0xfa487db1,0xffab017a,0xffff000d,0x0014ffff,0x0247ff7c, +0x7b82f757,0xfaec0f16,0xff9701a9,0xffff0011,0x002cfffd,0x04d0fee2,0x6bc4eee5,0xf32c2b1b, +0xff03040d,0xfffd0028,0x0035fffc,0x05a1feaa,0x53eded0a,0xedf7483d,0xfeb20577,0xfffc0034, +0x002ffffd,0x04cefed7,0x3787f088,0xed5c627b,0xfebe055f,0xfffc0032,0x001bfffe,0x02c0ff53, +0x1a8ff779,0xf2eb7608,0xff30038c,0xfffe0020,0x00010000,0x001bfff9,0x00e0ffb0,0xff627fd9, +0xfff70028,0x00000001,0x001efffe,0x0356ff3d,0x7729f3a1,0xf817186b,0xff5f028f,0xfffe001a, +0x0031fffc,0x054bfec3,0x6444ed8e,0xf0f83544,0xfede04af,0xfffd002e,0x0035fffc,0x0584feaf, +0x4a69edbb,0xed2451da,0xfeaa059f,0xfffc0035,0x0029fffd,0x0434fefa,0x2d5cf2a7,0xee876a2e, +0xfeda04f0,0xfffd002d,0x0013ffff,0x01ddff8a,0x111dfa49,0xf6717aa7,0xff6d0287,0xfffe0016, +0x000affff,0x0132ffbb,0x7e4afb58,0xfd7a0745,0xffcb00d5,0xffff0008,0x0026fffd,0x0435ff08, +0x719ef0c1,0xf563222f,0xff2b0364,0xfffd0022,0x0034fffc,0x0590feb0,0x5bedecf8,0xef2a3f65, +0xfec2052c,0xfffc0032,0x0032fffc,0x0537febf,0x4083eefe,0xecf35af4,0xfeaf0595,0xfffc0034, +0x0022fffd,0x037aff26,0x234af519,0xf07d70ee,0xff03044a,0xfffd0027,0x000affff,0x00f0ffc4, +0x0838fd28,0xfacf7e00,0xffb30156,0xffff000c,0x0015fffe,0x0267ff75,0x7b16f6e3,0xfa9b1019, +0xff9001c3,0xffff0012,0x002cfffd,0x04e0fede,0x6afbeeb5,0xf2e92c3b,0xfeff0421,0xfffd0029, +0x0035fffc,0x05a1feaa,0x52e4ed16,0xedd84954,0xfeb0057e,0xfffc0034,0x002efffd,0x04bffeda, +0x3665f0bf,0xed746361,0xfec10556,0xfffc0031,0x001bfffe,0x02a7ff59,0x197cf7c8,0xf345769a, +0xff370371,0xfffe001f,0x00030002,0x00020002,0x00020002,0x00020003,0x00020002,0x00020002, +0x00020003,0x00020002,0x00030002,0x00020002,0x00020002,0x00030002,0x00020002,0x00020002, +0x00030002,0x00020002,0x00020002,0x00020003,0x00020002,0x00020002,0x00020003,0x00020002, +0x00020002,0x00020003,0x00020002,0x00030002,0x00020002,0x00020002,0x00030002,0x00020002, +0x00020002,0x00030002,0x00020002,0x00020002,0x00020003,0x00020002,0x00020002,0x00020003, +0x00020002,0x00020002,0x00020003,0x00020002,0x00030002,0x00020002,0x00020002,0x00030002, +0x00020002,0x00020002,0x00030002,0x00020002,0x00020002,0x00020003,0x00020002,0x00020002, +0x00020003,0x00020002,0x00020002,0x00020003,0x00020002,0x00030002,0x00020002,0x00020002, +0x00030002,0x00020002,0x00020002,0x00030002,0x00020002,0x00020002,0x00020003,0x00020002, +0x00020002,0x00020003,0x00020002,0x00000002,0x00020002,0x00000003,0x00030003,0x00010002, +0x00030002,0x0000053d,0x1b205604,0x000011f4,0x2a416943,0x03b332a3,0x00001434,0x11dbc7db, +0x0000e697,0x2a8ab6ed,0x00020002,0x00050006,0x00020002,0x009312e7,0x1a385311,0x37df77bc, +0x0000083f,0x111e442c,0x31f4714a,0x015a1e7b,0x09813d7b,0x00020002,0x00000002,0x00050005, +0x00020002,0x00010002,0x00000233,0x090e336f,0x2c806b27,0x00000839,0x11354466,0x34717427, +0x011d1c56,0x08603b25,0x02ac2ea1,0x000010e1,0x00030002,0x00030003,0x00030004,0x0000053d, +0x1b205604,0x000011f4,0x2a416943,0x0badd40a,0x3076beac,0x0000eb81,0x19edcbc3,0x00000002, +0x00050005,0x00000272,0x0a803721,0x2ebb6db5,0x00000914,0x136e4873,0x35f575bf,0x00020002, +0x00040004,0x00020002,0x00c815d9,0x21215d5c,0x0470271f,0x2ce46c0c,0x015a1e7b,0x09813d7b, +0x00000003,0x00070008,0x0967db40,0x21fdcef2,0x34bac590,0x3e30c0d4,0x0000eed4,0x14fcd574, +0x2cdcc980,0x3a2ac2d7,0x00000002,0x00030004,0x00ce163b,0x258563c5,0x000009c3,0x17ad5054, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00020001,0x00040003,0x00030004, +0x00010002,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000006,0x0000fffb,0x00020001,0x00040004,0x00030000,0x00000001, +0xffffffff,0xffffffff,0x0000fffa,0x00030000,0x00010004,0x00010001,0x00000000,0x00000000, +0x00020001,0x00040002,0x00040006,0xffffffff,0xffffffff,0x0000ffff,0x00020007,0xfffefffa, +0x0001ffff,0x00060003,0x00000004,0x00000000,0xffffffff,0x0000fffe,0xffff0000,0x00030004, +0x0000ffff,0x00000000,0xfffffffb,0x00000000,0x00020001,0x00050005,0x00000000,0x00020002, +0x00020002,0x00000000,0x00000004,0x00000000,0x00000000,0x00040000,0x00010006,0x00000001, +0xfffefffe,0x0000ffff,0xffff0005,0xffffffff,0x00010000,0x00040002,0x00010004,0xffff0000, +0xfffdfffe,0x00050000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000fffb, +0x00020001,0x00040004,0x00000000,0x00000000,0xffffffff,0xffffffff,0x0000fffa,0x00030000, +0x00010004,0x00010001,0x00000000,0x00000000,0x00020001,0x00040002,0x00000000,0xffffffff, +0xffffffff,0x0000ffff,0x00000000,0xfffefffa,0x0001ffff,0x00060003,0x00000000,0x00000000, +0xffffffff,0x0000fffe,0xffff0000,0x00030004,0x0000ffff,0x00000000,0xfffffffb,0x00000000, +0x00020001,0x00050005,0x00000000,0x00020002,0x00020002,0x00000000,0x00000000,0x00000000, +0x00000000,0x00040000,0x00000000,0x00000001,0xfffefffe,0x0000ffff,0xffff0000,0xffffffff, +0x00010000,0x00040002,0x00000000,0xffff0000,0xfffdfffe,0x00050000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x72157fff,0x5a9e65ad,0x47fb50c3,0x392d4027, +0x2d6b32f5,0x2413287a,0x00002027,0x05af0000,0x108c0b32,0x1acf15c0,0x24881fbc,0x2dc42935, +0x368f3237,0x3ef53ace,0x46fc4304,0x4eae4adf,0x56115269,0x5d2c59a7,0x6403609f,0x6a9b6757, +0x70fa6dd1,0x77217414,0x7d177a22,0x00007fff,0x08000800,0x08000800,0x08000800,0x08000800, +0x08000800,0x08000800,0x071a0792,0x065606b2,0x05bb0604,0x053e0579,0x04d70508,0x048004aa, +0x04360459,0x03f50414,0x03bd03d8,0x038b03a3,0x035f0374,0x0337034b,0x03130325,0x02f30303, +0x02d502e4,0x02ba02c8,0x02a102ae,0x028a0296,0x0275027f,0x0261026b,0x024f0258,0x023d0246, +0x022d0235,0x021e0226,0x02100217,0x02020209,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa, +0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa, +0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa, +0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08e408fa,0x08b908ce,0x089008a4, +0x0859087c,0x08110834,0x07cd07ee,0x078d07ad,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12, +0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12, +0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12, +0x0a120a12,0x0a120a12,0x0a070a12,0x09d009eb,0x099c09b5,0x09540983,0x08fa0926,0x08a708d0, +0x0859087f,0x08110834,0x07cd07ee,0x078d07ad,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d, +0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d, +0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d, +0x0b200b44,0x0add0afe,0x0a930abe,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0, +0x0859087f,0x08110834,0x07cd07ee,0x078d07ad,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae, +0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae, +0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0c680c94,0x0c160c3e, +0x0b9b0be5,0x0b110b54,0x0a930ad0,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0, +0x0859087f,0x08110834,0x07cd07ee,0x078d07ad,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a, +0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a, +0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0dea0e22,0x0d830db6,0x0cdc0d38,0x0c330c85, +0x0b9b0be5,0x0b110b54,0x0a930ad0,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0, +0x0859087f,0x08110834,0x07cd07ee,0x078d07ad,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6, +0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6, +0x0ff60ff6,0x0ff60ff6,0x0fb90ff6,0x0f350f76,0x0e6b0ede,0x0d980dff,0x0cdc0d38,0x0c330c85, +0x0b9b0be5,0x0b110b54,0x0a930ad0,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0, +0x0859087f,0x08110834,0x07cd07ee,0x078d07ad,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9, +0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9, +0x11e911e9,0x11431197,0x106810f3,0x0f590fdc,0x0e6b0ede,0x0d980dff,0x0cdc0d38,0x0c330c85, +0x0b9b0be5,0x0b110b54,0x0a930ad0,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0, +0x0859087f,0x08110834,0x07cd07ee,0x078d07ad,0x14181418,0x14181418,0x14181418,0x14181418, +0x14181418,0x14181418,0x14181418,0x14181418,0x14181418,0x14181418,0x14181418,0x13cf1418, +0x13001365,0x119f124d,0x106810fe,0x0f590fdc,0x0e6b0ede,0x0d980dff,0x0cdc0d38,0x0c330c85, +0x0b9b0be5,0x0b110b54,0x0a930ad0,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0, +0x0859087f,0x08110834,0x07cd07ee,0x078d07ad,0x168c168c,0x168c168c,0x168c168c,0x168c168c, +0x168c168c,0x168c168c,0x168c168c,0x168c168c,0x168c168c,0x168c168c,0x15f61681,0x14b01575, +0x130813d3,0x119f124d,0x106810fe,0x0f590fdc,0x0e6b0ede,0x0d980dff,0x0cdc0d38,0x0c330c85, +0x0b9b0be5,0x0b110b54,0x0a930ad0,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0, +0x0859087f,0x08110834,0x07cd07ee,0x078d07ad,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0ece6511,0xf3e3d768,0x0bbd0f30,0x0c1c2898, +0xf5748bbf,0x0f6e06cc,0xe7a8c87c,0x0d7ae184,0x18573784,0xf31717b0,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x000038c7,0x000011a9,0xffffe1e8,0x00000689,0xfffff391, +0xfffffdd7,0x00000012,0xfffffda1,0x00000420,0x000000fd,0x00000408,0x00000303,0x000002ca, +0x0000029f,0x00000149,0x000000e7,0xffffffbd,0xffffff1b,0xfffffe6f,0xfffffde6,0xfffffda3, +0xfffffd6b,0xfffffd71,0x00000701,0x0000039a,0xfffffcaf,0x0000016f,0xfffffea7,0xffffffc6, +0x00000055,0x0000008b,0x0000014f,0x000001a8,0x0000020e,0x00000253,0x00000274,0x0000027d, +0x00000265,0x00000235,0x000001ef,0x00000198,0x00000135,0x000000cc,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x000038c7,0x000011a9,0xffffe1e8,0x00000689,0xfffff391, +0xfffffdd7,0x00000012,0xfffffda1,0x00000420,0x000000fd,0x00000408,0x00000303,0x000002ca, +0x0000029f,0x00000149,0x000000e7,0xffffffbd,0xffffff1b,0xfffffe6f,0xfffffde6,0xfffffda3, +0xfffffd6b,0xfffffd71,0xfffff40e,0xfffff7df,0xffffff56,0xfffffb34,0xfffffeaf,0xfffffe42, +0xfffffe66,0xfffffedb,0xfffffeb6,0xfffffeeb,0xffffff00,0xffffff1d,0xffffff45,0xffffff65, +0xffffff88,0xffffffa4,0xffffffb9,0xffffffc8,0xffffffce,0xffffffcf,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0xffffff8b,0xffffff8b,0xffffff8b,0xffffff8b,0xffffff8b,0xffffff8b, +0xffffff8b,0xffffff8d,0xffffff8b,0xffffff8b,0xffffff8b,0xffffff8b,0xffffff8d,0xffffff8b, +0xffffff8b,0xffffff8b,0xffffff8b,0xffffff8b,0xffffff8e,0xffffff8b,0xffffff8a,0xffffff8d, +0xffffff8a,0xffffff8a,0xffffff88,0xffffff8b,0xffffff87,0xffffff8a,0xffffff80,0xffffff98, +0xfffffeeb,0xfffffec8,0xfffffff1,0xffffffea,0xffffffe4,0xfffffffe,0xffffffba,0xffffffc5, +0x00000019,0x00000004,0xffffff94,0xffffffb7,0xffffff4a,0x0000006f,0xffffffe4,0xfffffff0, +0xffffff91,0xffffff8b,0x0000009e,0xfffffec7,0xffffe7c0,0xffffdf8c,0x000007be,0x00003c0f, +0x00004ddf,0x000005e1,0xffffd234,0xffffdfd1,0x00000048,0x000011ed,0x0000081d,0x00000d62, +0xfffffd72,0xffffefda,0xfffffc92,0x0000062e,0xffffff72,0xfffff99d,0xfffffbdf,0x00000569, +0x00000e62,0x000007ac,0xffffff23,0xfffffd7a,0x00000052,0x0000025d,0x00000315,0x00000402, +0x0000024a,0xfffffffc,0x00000060,0x0000015a,0x00000130,0x00000104,0x0000014a,0x000000ff, +0xffffffd0,0xffffffa3,0x00000021,0x00000065,0x000000d1,0x00000026,0xffffffb3,0x0000000e, +0x00000065,0x0000004f,0x00000016,0x00000015,0xffffffff,0xfffffffc,0xfffffff9,0xfffffff4, +0xffffffdf,0xffffffc5,0xffffffb8,0xffffffbb,0xffffffbe,0xffffffb7,0xffffffb0,0xffffffa9, +0xffffffa3,0xffffff9f,0xffffff9f,0xffffff9f,0xffffff9c,0xffffff98,0xffffff96,0xffffff94, +0xffffff92,0xffffff91,0xffffff91,0xffffff8e,0xffffff8e,0xffffff8b,0xffffff8d,0xffffff8b, +0xffffff8d,0xffffff8a,0x00000095,0x00000094,0x00000095,0x00000095,0x00000095,0x00000094, +0x00000095,0x00000095,0x00000095,0x00000094,0x00000095,0x00000095,0x00000095,0x00000095, +0x00000095,0x00000094,0x00000094,0x00000094,0x00000097,0x00000098,0x0000009a,0x0000009c, +0x0000009c,0x000000a2,0x000000a4,0x000000a6,0x000000ab,0x000000ac,0x000000ad,0x000000b7, +0x0000008b,0xfffffffc,0xffffff8d,0xffffff4d,0xffffff7c,0xffffff99,0xffffff2e,0xffffff75, +0xffffffe3,0x00000024,0x000000dd,0x00000095,0xffffffdd,0x0000006f,0x00000032,0x0000008e, +0x0000017f,0x00000061,0x0000014c,0x00000219,0xffffed09,0xffffc295,0xffffaf0c,0xffffc26f, +0xfffff5d2,0x00002777,0x00002470,0x000002ba,0xffffef7f,0xfffff286,0xfffffb56,0x000004d1, +0x00000cf1,0x00000755,0xfffffe02,0xfffffd0f,0xfffffeea,0x0000025e,0x00000ad7,0x00000fd1, +0x00000ad0,0x000001ab,0xfffffddc,0x00000016,0x0000035b,0x0000049c,0x000003ad,0x000001c1, +0xffffffd5,0xffffff5b,0x00000029,0x000000c7,0x00000067,0x00000054,0x000000bc,0x000000fa, +0x0000015d,0x000001a5,0x00000167,0x00000160,0x00000172,0x00000159,0x0000017d,0x00000143, +0x000000fa,0x000000f6,0x000000e0,0x000000d8,0x000000e0,0x000000e3,0x000000e6,0x000000df, +0x000000cb,0x000000b4,0x000000ab,0x000000b0,0x000000b4,0x000000af,0x000000a9,0x000000a5, +0x000000a1,0x000000a1,0x000000a4,0x000000a2,0x000000a2,0x0000009f,0x0000009f,0x0000009e, +0x0000009c,0x0000009c,0x0000009a,0x0000009b,0x0000009a,0x00000098,0x00000098,0x00000095, +0x00000095,0x00000097,0x0f5a35d6,0xe08d76ac,0x101d095a,0x1f73b645,0xf089edc0,0x10000000, +0xe134b620,0x0ed81ade,0x1ecb49e0,0xf127e522,0x0f901f31,0xe2256cd7,0x0e709e98,0x1dda9329, +0xf1ff4236,0x10000000,0xe1d3d74e,0x0e7b395c,0x1e2c28b2,0xf184c6a4,0x10315d70,0xe452d667, +0x0ca582db,0x1bad2999,0xf32920c1,0x10c45564,0xea0b912e,0x094f2389,0x15f46ed2,0xf5ec8712, +0x13306d50,0xf72fec57,0x01e7daa4,0x08d013a9,0xfae7b80b,0x14777d0f,0xfa6e85ba,0x03c7abfb, +0x001117b5,0xfd413987,0x0fccfe15,0xe0cbe2f8,0x0f6862f5,0x1f3239a3,0xf0c8bb91,0x0f2b074a, +0xe23bea92,0x0e9c25d0,0x1dc4156e,0xf238d1d9,0x0ed8d584,0xe3271ef4,0x0e12ce03,0x1cd8e10c, +0xf3145c79,0x0e050bd8,0xe58f12c3,0x0cb0ee49,0x1a70ed3d,0xf54a05de,0x0c6086bd,0xea9095b0, +0x09f2495e,0x156f6a50,0xf9ad2fe4,0x0a613e3e,0xf1900608,0x069bfbdf,0x0e6ff9f8,0xff02c5e3, +0x0814f69c,0xfa7822bc,0x02c5069a,0x0587dd44,0x052602c9,0x069a36e2,0xfeca6a88,0x012c0724, +0x0e998e10,0xfad5c854,0x0fd2ae8e,0xe0c0a7c6,0x0f6defc7,0x1f3dbb16,0xf0bdc487,0x0f4892ab, +0xe201effa,0x0eb89b52,0x1dfe1006,0xf1fed203,0x0f01083d,0xe2d904b4,0x0e38e8ea,0x1d26fb4c, +0xf2c60ed9,0x0e46bce8,0xe5132d6f,0x0cec6690,0x1aecd291,0xf4ccdc88,0x0ccc447c,0xe9d5fedb, +0x0a48de2a,0x162a0125,0xf8eadd5a,0x0af0153b,0xf0c958da,0x06f6ef80,0x0f36a726,0xfe18fb44, +0x08b52da9,0xfa0a7e74,0x02fbedb7,0x05f5818c,0x044ee49f,0x072c9d16,0xfeaf9a8d,0x0146045b, +0x0dc053e2,0xfb1d701e,0x0fd80e49,0xe0b608d1,0x0f732df5,0x1f4897e9,0xf0b3647c,0x0f63497b, +0xe1cd844e,0x0ed25679,0x1e327bb2,0xf1ca600c,0x0f2594af,0xe292007e,0x0e5b8ed1,0x1d6dff82, +0xf27edc7f,0x0e8358af,0xe4a0ded3,0x0d234330,0x1b5f212d,0xf4596313,0x0d32a8c9,0xe924abe7, +0x0a9b2702,0x16db5419,0xf8323141,0x0b7cfc3f,0xf0055da3,0x0750a782,0x0ffaa25d,0xfd325c3e, +0x095a6d69,0xf9996745,0x03348f53,0x066698bb,0x03710236,0x07c89b0e,0xfe9307b0,0x0161b4bb, +0x0ce03d57,0xfb626b30,0x0fdd2391,0xe0abfec2,0x0f7822bb,0x1f52d87f,0xf0a99200,0x0f7b677f, +0xe19e3002,0x0ee990f3,0x1e61cffe,0xf19b078e,0x0f46c00d,0xe2518f3f,0x0e7afea3,0x1dae70c1, +0xf23e414f,0x0ebb15b5,0xe437c02b,0x0d55b899,0x1bc83fd5,0xf3ef31b2,0x0d9375c8,0xe87d04a3, +0x0ae8f190,0x1782fb5d,0xf783979a,0x0c0712e4,0xef454bd0,0x07a8954a,0x10bab430,0xfc5057d2, +0x0a03d252,0xf9257c92,0x036e9bbf,0x06da836e,0x028d91ee,0x086e642b,0xfe74aa98,0x017f22c0, +0x0bf980f5,0xfba44e94,0x0fe1f18c,0xe0a28241,0x0f7cd24e,0x1f5c8754,0xf0a045bb,0x0f912663, +0xe17383f1,0x0efe8251,0x1e8c7c0f,0xf170574c,0x0f64ca4f,0xe217310a,0x0e977857,0x1de8cef6, +0xf203bd5a,0x0eee30ca,0xe3d75e21,0x0d83fb37,0x1c28a1df,0xf38dd3ff,0x0dee88df,0xe7df4b1f, +0x0b322291,0x1820b4e1,0xf6df548f,0x0c8d8dbc,0xee8a3f8a,0x07fe35c5,0x1175c076,0xfb743c7e, +0x0ab05964,0xf8af6a51,0x03a9bbf0,0x075095af,0x01a5eaab,0x091e2153,0xfe5479d5,0x019e54b4, +0x0b0c62e4,0xfbe2ad3f,0x0fe67c6b,0xe09989e0,0x0f813fd0,0x1f65abc0,0xf0977964,0x0fa4bba1, +0xe14d1634,0x0f115f02,0x1eb2e9cc,0xf149e55d,0x0f7ff477,0xe1e2680a,0x0eb138bc,0x1e1d97f6, +0xf1ced1c0,0x0f1ceaf2,0xe37f3beb,0x0dae47dc,0x1c80c415,0xf334cc26,0x0e43d35e,0xe74b9560, +0x0b76ac64,0x18b46aa0,0xf645803d,0x0d0fb549,0xedd53694,0x0851159c,0x122ac96c,0xfa9f340e, +0x0b5eeed8,0xf837f174,0x03e5907d,0x07c80e8c,0x00bb80a9,0x09d7ebaf,0xfe327244,0x01bf4fd6, +0x0a1934ef,0xfc1d1d48,0x0feac753,0xe091105f,0x0f856f75,0x1f6e4d1a,0xf08f27bc,0x0fb65881, +0xe12a8545,0x0f225742,0x1ed57abb,0xf127503c,0x0f987c63,0xe1b2bfdc,0x0ec87980,0x1e4d4024, +0xf19f0a1c,0x0f478a6d,0xe32edaaa,0x0dd4dd72,0x1cd12556,0xf2e39821,0x0e935979,0xe6c1db02, +0x0bb69552,0x193e24fe,0xf5b61135,0x0d8cee5a,0xed270b07,0x08a0d130,0x12d8f4f9,0xf9d24075, +0x0c0e703a,0xf7bfd60f,0x0421b5c7,0x084029f1,0xffcfd9fe,0x0a9bccaf,0xfe0e91c9,0x01e21533, +0x09205575,0xfc5336df,0x0feed56b,0xe0890e67,0x0f896356,0x1f7672b8,0xf0874752,0x0fc62d40, +0xe10b73d2,0x0f31960f,0x1ef48c2e,0xf1083ba4,0x0fae9ab2,0xe187c527,0x0edd712a,0x1e783ad9, +0xf173f424,0x0f6e5365,0xe2e5b425,0x0df7f8ca,0x1d1a4bdb,0xf299b3d1,0x0edd3458,0xe641f320, +0x0bf1ef30,0x19be0ce0,0xf530dc77,0x0e04b5dc,0xec807140,0x08ed16b9,0x137f8ec0,0xf90e3477, +0x0cbdb5d8,0xf747e49c,0x045dc619,0x08b81b64,0xfee4840f,0x0b69bcfd,0xfde8d973,0x0206a2b1, +0x08222f6a,0xfc849668,0x0ff2aae2,0xe0817ca3,0x0f8d20af,0x1f7e23f2,0xf07fd503,0x0fd464dc, +0xe0ef8f05,0x0f3f4773,0x1f1070fb,0xf0ec53b1,0x0fc286f8,0xe161101c,0x0ef05319,0x1e9eefe4, +0xf14d25ee,0x0f918c19,0xe2a34763,0x0e17dae8,0x1d5cb89d,0xf25698ff,0x0f2189bd,0xe5cb9cb7, +0x0c28d866,0x1a346349,0xf4b59ddd,0x0e76a832,0xebe1f4b2,0x0935a426,0x141e0b4e,0xf853b3a7, +0x0d6b96f2,0xf6d0e77a,0x04995cc8,0x092f1886,0xfdfb0c46,0x0c41a155,0xfdc14e7f,0x022cf52b, +0x071f3b64,0xfcb0df9c,0x0ff649d3,0xe07a54c6,0x0f90a88e,0x1f856712,0xf078c976,0x0fe12513, +0xe0d68838,0x0f4b9021,0x1f2977c8,0xf0d34acb,0x0fd4727d,0xe13e3e2a,0x0f015097,0x1ec1c1d6, +0xf12a3ceb,0x0fb178b3,0xe2671152,0x0e34c1a8,0x1d98eeae,0xf219c5a4,0x0f608aef,0xe55e7fb3, +0x0c5b79d9,0x1aa1804d,0xf443fb38,0x0ee27bf6,0xeb4bf8fd,0x097a4d6e,0x14b40703,0xf7a33590, +0x0e16f651,0xf65b9f99,0x04d41743,0x09a46067,0xfd14f26b,0x0d234b94,0xfd97f951,0x0255043e, +0x0617fb69,0xfcd7ba67,0x0ff9b66f,0xe073929f,0x0f93ff25,0x1f8c4263,0xf072207a,0x0fec94b3, +0xe0c01712,0x0f5693c0,0x1f3fe8ee,0xf0bcd78d,0x0fe48e8a,0xe11ef1fe,0x0f1094a2,0x1ee10e02, +0xf10adcd3,0x0fce5b42,0xe2309742,0x0e4ee7c4,0x1dcf68be,0xf1e2bcfa,0x0f9a719b,0xe4fa3876, +0x0c8a02b8,0x1b05c78a,0xf3db8bad,0x0f480629,0xeabebe17,0x09baf533,0x154141e9,0xf6fd04a3, +0x0ebec786,0xf5e8c7a0,0x050d9945,0x0a173860,0xfc339e28,0x0e0e7bc3,0xfd6ce572,0x027ec460, +0x050d002e,0xfcf8db49,0x0ffcf1c3,0xe06d2fe4,0x0f972580,0x1f92bc2f,0xf06bd3c4,0x0ff6d330, +0xe0abfca9,0x0f6071c5,0x1f540357,0xf0a8bb0b,0x0ff30510,0xe102d7b7,0x0f1e4b44,0x1efd2849, +0xf0eeafac,0x0fe874c8,0xe1ff5e85,0x0e6687f4,0x1e00a17b,0xf1b10450,0x0fcf81e8,0xe49e529c, +0x0cb4a665,0x1b61ad64,0xf37bd7b3,0x0fa731d2,0xea3a5f42,0x09f78dd6,0x15c5a0be,0xf6614058, +0x0f621426,0xf5790860,0x05458ff7,0x0a86f7a0,0xfb585cef,0x0f02dadb,0xfd40229b,0x02aa24cc, +0x03fedfa4,0xfd13fe1a,0x10000000,0xe0672757,0x0f9a20dd,0x1f98d8a9,0xf065df23,0x10000000, +0xe099fb1f,0x0f694898,0x1f6604e1,0xf096b768,0x10000000,0xe0e99fa2,0x0f2a9824,0x1f16605e, +0xf0d567dc,0x10000000,0xe1d2f6e9,0x0e7bd7b2,0x1e2d0917,0xf184284e,0x10000000,0xe44a569c, +0x0cdb9e8c,0x1bb5a964,0xf3246174,0x10000000,0xe9bed95a,0x0a301a79,0x164126a6,0xf5cfe587, +0x10000000,0xf50cf5b2,0x057baecd,0x0af30a4e,0xfa845133,0x10000000,0xfd11c4ba,0x02d714b9, +0x02ee3b46,0xfd28eb47,0x10030e3c,0xe0673c50,0x0f972580,0x1f98d8a9,0xf065df23,0x1009320d, +0xe099fb1f,0x0f60168b,0x1f6604e1,0xf096b768,0x100d056c,0xe0e99fa2,0x0f1d92b7,0x1f16605e, +0xf0d567dc,0x1017aedd,0xe1d2f6e9,0x0e6429e0,0x1e2d0917,0xf184284e,0x103112fd,0xe44a569c, +0x0caa8b8f,0x1bb5a964,0xf3246174,0x105ac68a,0xe9bed95a,0x09d553ef,0x164126a6,0xf5cfe587, +0x10a441fe,0xf50cf5b2,0x04d76cce,0x0af30a4e,0xfa845133,0x110dd2f1,0xfbbdbf49,0x031d4845, +0x02ee3b46,0xfd28eb47,0x10064cb5,0xe0675255,0x0f93ff25,0x1f98d8a9,0xf065df23,0x1013836a, +0xe099fb1f,0x0f55c52e,0x1f6604e1,0xf096b768,0x101ba0a5,0xe0e99fa2,0x0f0ef77f,0x1f16605e, +0xf0d567dc,0x10323fee,0xe1d2f6e9,0x0e4997c3,0x1e2d0917,0xf184284e,0x106822ff,0xe44a569c, +0x0c737b8d,0x1bb5a964,0xf3246174,0x10c0a06e,0xe9bed95a,0x096f78fe,0x164126a6,0xf5cfe587, +0x115c8d9f,0xf50cf5b2,0x041f2021,0x0af30a4e,0xfa845133,0x12364e05,0xfa403bc5,0x03724fa8, +0x02ee3b46,0xfd28eb47,0x1009bb6a,0xe0676b7f,0x0f90a88e,0x1f98d8a9,0xf065df23,0x101f16b1, +0xe099fb1f,0x0f4a31e7,0x1f6604e1,0xf096b768,0x102c050b,0xe0e99fa2,0x0efe9318,0x1f16605e, +0xf0d567dc,0x10501083,0xe1d2f6e9,0x0e2bc72e,0x1e2d0917,0xf184284e,0x10a5eaab,0xe44a569c, +0x0c35b3e1,0x1bb5a964,0xf3246174,0x1132e7b3,0xe9bed95a,0x08fd31b9,0x164126a6,0xf5cfe587, +0x122b56fb,0xf50cf5b2,0x035056c5,0x0af30a4e,0xfa845133,0x137c536d,0xf8942b31,0x03d85ad5, +0x02ee3b46,0xfd28eb47,0x100d60a6,0xe06787cf,0x0f8d20af,0x1f98d8a9,0xf065df23,0x102c13b9, +0xe099fb1f,0x0f3d34df,0x1f6604e1,0xf096b768,0x103e6927,0xe0e99fa2,0x0eec2efd,0x1f16605e, +0xf0d567dc,0x1071843c,0xe1d2f6e9,0x0e0a5482,0x1e2d0917,0xf184284e,0x10eb3cc4,0xe44a569c, +0x0bf061c7,0x1bb5a964,0xf3246174,0x11b3215f,0xe9bed95a,0x087cf80d,0x164126a6,0xf5cfe587, +0x13135b91,0xf50cf5b2,0x0268522e,0x0af30a4e,0xfa845133,0x14e3193f,0xf6b3df2b,0x0451e108, +0x02ee3b46,0xfd28eb47,0x10113c68,0xe067a744,0x0f896356,0x1f98d8a9,0xf065df23,0x103aa68f, +0xe099fb1f,0x0f2ea209,0x1f6604e1,0xf096b768,0x10530be0,0xe0e99fa2,0x0ed78d4f,0x1f16605e, +0xf0d567dc,0x10970c56,0xe1d2f6e9,0x0de4cc68,0x1e2d0917,0xf184284e,0x1139042d,0xe44a569c, +0x0ba29a5e,0x1bb5a964,0xf3246174,0x1242ff8e,0xe9bed95a,0x07ed19de,0x164126a6,0xf5cfe587, +0x1417afea,0xf50cf5b2,0x0163fdd6,0x0af30a4e,0xfa845133,0x166e33ef,0xf498f92b,0x04e1ac57, +0x02ee3b46,0xfd28eb47,0x101554fb,0xe067caeb,0x0f856f75,0x1f98d8a9,0xf065df23,0x104b0079, +0xe099fb1f,0x0f1e481f,0x1f6604e1,0xf096b768,0x106a326e,0xe0e99fa2,0x0ec065b6,0x1f16605e, +0xf0d567dc,0x10c128bf,0xe1d2f6e9,0x0dbaaef2,0x1e2d0917,0xf184284e,0x11904923,0xe44a569c, +0x0b4b5675,0x1bb5a964,0xf3246174,0x12e46cfc,0xe9bed95a,0x074bad7d,0x164126a6,0xf5cfe587, +0x153bc7f7,0xf50cf5b2,0x003fe6d5,0x0af30a4e,0xfa845133,0x1821a0cf,0xf23c5155,0x058ae74f, +0x02ee3b46,0xfd28eb47,0x1019ac79,0xe067f2c4,0x0f813fd0,0x1f98d8a9,0xf065df23,0x105d590c, +0xe099fb1f,0x0f0bee80,0x1f6604e1,0xf096b768,0x10842c7f,0xe0e99fa2,0x0ea66ba4,0x1f16605e, +0xf0d567dc,0x10f0691e,0xe1d2f6e9,0x0d8b6f9f,0x1e2d0917,0xf184284e,0x11f23358,0xe44a569c, +0x0ae96b33,0x1bb5a964,0xf3246174,0x13998bf7,0xe9bed95a,0x06968e82,0x164126a6,0xf5cfe587, +0x168383ad,0xf50cf5b2,0xfef82a13,0x0af30a4e,0xfa845133,0x1a01d5c3,0xef95e17f,0x06512231, +0x02ee3b46,0xfd28eb47,0x101e4712,0xe0681fda,0x0f7cd24e,0x1f98d8a9,0xf065df23,0x1071ef30, +0xe099fb1f,0x0ef75968,0x1f6604e1,0xf096b768,0x10a1522a,0xe0e99fa2,0x0e8945f9,0x1f16605e, +0xf0d567dc,0x11256cd6,0xe1d2f6e9,0x0d566be7,0x1e2d0917,0xf184284e,0x12601040,0xe44a569c, +0x0a7b8e4b,0x1bb5a964,0xf3246174,0x1464c404,0xe9bed95a,0x05cb5568,0x164126a6,0xf5cfe587, +0x17f33daf,0xf50cf5b2,0xfd88711e,0x0af30a4e,0xfa845133,0x1c13c89f,0xec9ca9f0,0x073866e4, +0x02ee3b46,0xfd28eb47,0x102328f9,0xe068522f,0x0f7822bb,0x1f98d8a9,0xf065df23,0x1089081c, +0xe099fb1f,0x0ee0407c,0x1f6604e1,0xf096b768,0x10c2070b,0xe0e99fa2,0x0e689118,0x1f16605e, +0xf0d567dc,0x1160e842,0xe1d2f6e9,0x0d1aef6f,0x1e2d0917,0xf184284e,0x12db5632,0xe44a569c, +0x0a004966,0x1bb5a964,0xf3246174,0x1548c932,0xe9bed95a,0x04e75147,0x164126a6,0xf5cfe587, +0x198fd4bf,0xf50cf5b2,0xfbebd902,0x0af30a4e,0xfa845133,0x1e5d0529,0xe9468fd2,0x0845436b, +0x02ee3b46,0xfd28eb47,0x10285660,0xe0688acf,0x0f732df5,0x1f98d8a9,0xf065df23,0x10a2f273, +0xe099fb1f,0x0ec65625,0x1f6604e1,0xf096b768,0x10e6b830,0xe0e99fa2,0x0e43dff3,0x1f16605e, +0xf0d567dc,0x11a3a6ce,0xe1d2f6e9,0x0cd830e3,0x1e2d0917,0xf184284e,0x1365a576,0xe44a569c, +0x0975f916,0x1bb5a964,0xf3246174,0x1648a04d,0xe9bed95a,0x03e77a2c,0x164126a6,0xf5cfe587, +0x1b5ec4e7,0xf50cf5b2,0xfa1ce8da,0x0af30a4e,0xfa845133,0x20e3bddf,0xe5883ec9,0x097cdbbe, +0x02ee3b46,0xfd28eb47,0x102dd377,0xe068c9b9,0x0f6defc7,0x1f98d8a9,0xf065df23,0x10c0064a, +0xe099fb1f,0x0ea9424e,0x1f6604e1,0xf096b768,0x110fe479,0xe0e99fa2,0x0e1ab3aa,0x1f16605e, +0xf0d567dc,0x11ee89eb,0xe1d2f6e9,0x0c8d4ed2,0x1e2d0917,0xf184284e,0x1400d4dc,0xe44a569c, +0x08dac9af,0x1bb5a964,0xf3246174,0x1767ae9a,0xe9bed95a,0x02c86bdf,0x164126a6,0xf5cfe587, +0x1d6631f8,0xf50cf5b2,0xf8157cd5,0x0af30a4e,0xfa845133,0x23aedbb5,0xe155000d,0x0ae4febd, +0x02ee3b46,0xfd28eb47,0x1033a68b,0xe0691106,0x0f6862f5,0x1f98d8a9,0xf065df23,0x10e0a633, +0xe099fb1f,0x0e88a159,0x1f6604e1,0xf096b768,0x113e1650,0xe0e99fa2,0x0dec81d3,0x1f16605e, +0xf0d567dc,0x12428f5c,0xe1d2f6e9,0x0c394855,0x1e2d0917,0xf184284e,0x14aef4e0,0xe44a569c, +0x082ca9ac,0x1bb5a964,0xf3246174,0x18a9c454,0xe9bed95a,0x01865625,0x164126a6,0xf5cfe587, +0x1facffa7,0xf50cf5b2,0xf5ceaf26,0x0af30a4e,0xfa845133,0x26c6173b,0xdc9e8d55,0x0c8435ef, +0x02ee3b46,0xfd28eb47,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x0000257d,0x0000257d,0x00003504,0x00004000,0x00004000, +0x00000000,0x000000db,0x000000db,0x00007edb,0x000001b0,0x000001b0,0x00007dbd,0x0f9951e3, +0xe0cd5c3a,0x0f9951e3,0x1f3010b9,0xf0cac92c,0x0fae4e95,0xe0a362d7,0x0fae4e95,0x1f5afbe3, +0xf0a1c18f,0x0f9a23b0,0xe0cbb8a2,0x0f9a23b0,0x1f31be9a,0xf0c92fdd,0x0f8612b2,0xe0f3da9d, +0x0f8612b2,0x1f0883c6,0xf0f038fe,0x0f721b79,0xe11bc90f,0x0f721b79,0x1edf4bda,0xf116ddf7, +0x0f5e3de0,0xe1438441,0x0f5e3de0,0x1eb61746,0xf13d1fc7,0x0f4a79c3,0xe16b0c7b,0x0f4a79c3, +0x1e8ce678,0xf162ff6d,0x0f36cefe,0xe1926205,0x0f36cefe,0x1e63b9d9,0xf1887de3,0x0f23358f, +0xe1b994e1,0x0f23358f,0x1e3a821e,0xf1adabe1,0x0f0fbc6a,0xe1e0872c,0x0f0fbc6a,0x1e115dcb, +0xf1d26c23,0x0efc5c31,0xe207479e,0x0efc5c31,0x1de83ed7,0xf1f6ce12,0x0ee914c0,0xe22dd680, +0x0ee914c0,0x1dbf259d,0xf21ad29e,0x08000800,0x08000800,0x08000800,0x08000800,0x08000800, +0x08000800,0x08000800,0x08000800,0x08000800,0x08000800,0x08000800,0x08000800,0x08000800, +0x08000800,0x08000800,0x08000800,0x08000800,0x08000800,0x08000800,0x08000800,0x08000800, +0x08000800,0x08000800,0x08000800,0x08000800,0x08000800,0x08000800,0x08000800,0x07e10800, +0x079d07bf,0x075d077d,0x0721073f,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa, +0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa, +0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa, +0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08fa08fa,0x08d908fa,0x089908b9,0x085d087a,0x08240840, +0x07ef0809,0x07bd07d5,0x078d07a5,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12, +0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12, +0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x0a120a12,0x09e10a08, +0x099709bb,0x09520974,0x09120931,0x08d608f4,0x089e08ba,0x086a0884,0x08390851,0x080a0821, +0x07de07f4,0x07b507c9,0x078d07a1,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d, +0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d, +0x0b4d0b4d,0x0b4d0b4d,0x0b4d0b4d,0x0b030b36,0x0aa40ad3,0x0a4d0a78,0x09fe0a25,0x09b409d8, +0x09700991,0x09310950,0x08f60913,0x08bf08da,0x088b08a4,0x085b0872,0x082d0843,0x08020817, +0x07d907ed,0x07b207c5,0x078d07a0,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae, +0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae,0x0cae0cae, +0x0cae0cae,0x0c700cae,0x0bea0c2b,0x0b720bac,0x0b050b3a,0x0aa20ad3,0x0a480a74,0x09f40a1d, +0x09a809cd,0x09600983,0x091e093f,0x08e008ff,0x08a708c3,0x0871088b,0x083e0857,0x080e0826, +0x07e107f7,0x07b607cb,0x078d07a1,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a, +0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a,0x0e3a0e3a, +0x0d860de1,0x0ce00d30,0x0c4c0c94,0x0bc80c08,0x0b500b8b,0x0ae40b19,0x0a810ab1,0x0a260a52, +0x09d209fb,0x098509ab,0x093d0960,0x08fa091b,0x08bc08da,0x0881089e,0x084b0866,0x08170831, +0x07e707ff,0x07b907cf,0x078d07a3,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6, +0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0ff60ff6,0x0fa30ff6,0x0eb90f2a, +0x0ded0e50,0x0d3a0d91,0x0c9b0ce8,0x0c0c0c52,0x0b8c0bca,0x0b180b50,0x0aae0ae1,0x0a4d0a7c, +0x09f40a1f,0x09a109ca,0x0955097a,0x090e0931,0x08cc08ed,0x088f08ad,0x08550871,0x081e0839, +0x07eb0804,0x07bb07d3,0x078d07a4,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9, +0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9,0x11e911e9, +0x11431197,0x106810f3,0x0f590fdc,0x0e6b0ede,0x0d980dff,0x0cdc0d38,0x0c330c85,0x0b9b0be5, +0x0b110b54,0x0a930ad0,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0,0x0859087f, +0x08110834,0x07cd07ee,0x078d07ad,0x14181418,0x14181418,0x14181418,0x14181418,0x14181418, +0x14181418,0x14181418,0x14181418,0x14181418,0x14181418,0x14181418,0x13cf1418,0x13001365, +0x119f124d,0x106810fe,0x0f590fdc,0x0e6b0ede,0x0d980dff,0x0cdc0d38,0x0c330c85,0x0b9b0be5, +0x0b110b54,0x0a930ad0,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0,0x0859087f, +0x08110834,0x07cd07ee,0x078d07ad,0x168c168c,0x168c168c,0x168c168c,0x168c168c,0x168c168c, +0x168c168c,0x168c168c,0x168c168c,0x168c168c,0x168c168c,0x15f61681,0x14b01575,0x130813d3, +0x119f124d,0x106810fe,0x0f590fdc,0x0e6b0ede,0x0d980dff,0x0cdc0d38,0x0c330c85,0x0b9b0be5, +0x0b110b54,0x0a930ad0,0x0a200a58,0x09b609ea,0x09540984,0x08fa0926,0x08a708d0,0x0859087f, +0x08110834,0x07cd07ee,0x078d07ad,0x00000555,0x00000aaa,0x00001000,0x00001555,0x00001aab, +0x00002000,0x0000ffef,0x0038001c,0x0059003d,0x00480056,0x00300037,0xffed0015,0xffb9ffd3, +0xff48ff83,0xfeeaff17,0xfea1fec2,0xfebffea7,0xfee2fece,0xff12fef6,0xff54ff27,0xff62ff6e, +0xfee1ffa8,0xfe96fedb,0xfebefc7b,0xf4a1f3c8,0xfbc1ff7b,0xfcecfd32,0xfeb2fd88,0xffb8fe8a, +0x0190008c,0x035a0284,0x040703d2,0x032203c2,0xfe5902af,0xfbb40030,0xfd9bf635,0x2d5ae1be, +0xefeb37e7,0x00500041,0x002b003c,0xffd7fff8,0xffa6ffc9,0xff48ff87,0xfef3ff09,0xff1cff06, +0xff40ff28,0xffdfff77,0x00ca005e,0x01ce013e,0x02a30239,0x030502d6,0x0310033a,0x025502b4, +0x017d017f,0x000500b0,0xfdb40106,0x060a0793,0xfdc3fa78,0xfcd7fc65,0xfd36fd28,0xff96feea, +0x0196009e,0x0350027f,0x040703cd,0x032d03c7,0xfe7602b9,0xfbc1004d,0xfdabf625,0x2d6ae1d3, +0xf0063817,0x00000445,0x00000859,0x00000c6b,0x00002000,0x00000fdb,0x0000457d,0x0000242a, +0x000011d6,0x00002390,0x000040d2,0x00005718,0x00000115,0x0000014b,0x0000018d,0x00003000, +0x00003000,0x00003000,0x00003800,0x00003800,0x00003800,0x0456b490,0x00000000,0xfba94b70, +0x0bfa99a3,0xf8ad6921,0x076a30e5,0x00000000,0xf895cf1b,0xf3d3acff,0xfed461cb,0x02da6c9e, +0x00000000,0xfd259362,0x102b54c8,0xf5b4d93e,0x0201d9f3,0x00000000,0xfdfe260d,0x080b4e62, +0xf403b3e7,0x0456b490,0x00000000,0xfba94b70,0xf767deba,0xf8ad6921,0x039ffc29,0x00000000, +0xfc6003d7,0xea62b86c,0xf73ff853,0x06d67ed9,0x00000000,0xf9298127,0xf263bd75,0xfdacfdb3, +0x12fda0c9,0xed29165c,0x0552e20a,0x12d6e9a4,0xf7af7d2d,0x00000445,0x00000859,0x00000c6b, +0x00000445,0x00000859,0x00000c6b,0x000007af,0x00000b57,0x00000ef9,0x0000096b,0x00000cb3, +0x00000ffb,0x00002000,0x00002000,0x0000199a,0x00001666,0x00000000,0x00001666,0x00001ccd, +0x00002000,0x0000484e,0x0000260b,0x000012ae,0x0000457d,0x0000242a,0x000011d6,0x00003cf0, +0x00002939,0x00001b63,0x000040f8,0x00003231,0x00002663,0x00002a31,0x00004ad5,0x00006143, +0x00002390,0x000040d2,0x00005718,0x00002a2f,0x00003bae,0x00004aa2,0x00002701,0x00003347, +0x00003e85,0x00000115,0x0000014b,0x0000018d,0x00003000,0x00003000,0x00003000,0x00003800, +0x00003800,0x00003800,0x00000000,0x00000000,0x00000000,0x00000000,0x0000257d,0x0000257d, +0x00003504,0x00004000,0x00004000,0x00000000,0x000000db,0x000000db,0x00007edb,0x000001b0, +0x000001b0,0x00007dbd,0x0f9951e3,0xe0cd5c3a,0x0f9951e3,0x1f3010b9,0xf0cac92c,0x00000000, +0x00004078,0x00000e77,0xfffff611,0x00001c98,0x000004f0,0xffffe121,0xfffff624,0xfffff99a, +0xffffff40,0xfffffa52,0xfffff96d,0x000002f4,0x000004b3,0xfffffec0,0xfffffdca,0x00000000, +0x00006e97,0x00000827,0x00000766,0xffffef43,0xffffcf93,0xfffffb4f,0xfffff3ca,0xfffffc86, +0xfffff88a,0x00000080,0x00000e7c,0xfffffb54,0xfffffeaa,0x00000645,0x00000902,0x00000f0d, +0x00000394,0x00000270,0x0000082b,0x00000224,0x000000be,0xffffff04,0xfffffec8,0x00000261, +0x000008f4,0x00000354,0x00000279,0x000003af,0x000002c6,0xfffffcb6,0xfffffa67,0x00000000, +0x00006e97,0x00000827,0x00000766,0xffffef43,0xffffcf93,0xfffffb4f,0xfffff3ca,0xfffffc86, +0xfffff88a,0x00000080,0x00000e7c,0xfffffb54,0xfffffeaa,0x00000645,0x00000902,0x00000f0d, +0x00000394,0x00000270,0x0000082b,0x00000224,0x000000be,0xffffff04,0xfffffec8,0x00000261, +0xfffff314,0xfffff43b,0xfffff9b8,0xfffff837,0xfffffa98,0xfffffec9,0xfffffff2,0x00000000, +0x00007f7c,0xffffffb3,0xffffed72,0xffffe3f6,0x00000596,0xfffff81b,0x00000d0b,0x000004a0, +0xfffffc42,0xfffffcfc,0xfffffc6e,0x00000038,0xfffffad8,0x000001ed,0xfffffb59,0x000000cb, +0x00000100,0x00000155,0x000000a4,0x00000109,0x00000042,0xffffff66,0x00000001,0xffffff95, +0xfffffeb6,0xffffff36,0xfffffe41,0xfffffec9,0x00000015,0xffffff62,0x00000001,0xffffffcc, +0xfffffe80,0xfffffeca,0xfffffecc,0xfffffeee,0xfffffebf,0xfffffe17,0xfffffd7b,0xfffffbf0, +0xfffffc3b,0xfffffdee,0xfffffcfb,0xfffffd05,0xfffffd57,0xfffffcb5,0xfffffbb2,0xfffffee1, +0x0000007c,0xfffffe19,0xfffffd61,0xfffffdfd,0xfffffebb,0xffffff8e,0x000000df,0x00000025, +0xfffffff8,0x00000175,0x000002a8,0x00000453,0x00000675,0x00000a3f,0x00000d63,0x00000b05, +0x000004c4,0xffffff4e,0xfffff95c,0xfffff3b8,0x00001167,0x00001320,0xffffd96f,0xffffb987, +0x00000a03,0x00003188,0x000002af,0xffffffdc,0xffffffc7,0x0000000a,0xffffffff,0xfffffc1a, +0xfffffb6f,0xfffffaa1,0xfffffad7,0xfffff9f6,0xfffffa40,0xfffffaa0,0xfffff98c,0xfffff982, +0xfffff9ef,0xfffff905,0xfffff997,0xfffff8b5,0xfffff71b,0xfffff78e,0xfffff6be,0xfffff6d4, +0xfffff815,0xfffff7d6,0xfffff7f7,0xfffff811,0xfffff899,0xfffff9b6,0xfffffae7,0xfffffd29, +0xfffffdb6,0xfffffcfd,0xffffff0b,0x0000003b,0x0000013e,0x00000352,0x000005e4,0x00000460, +0x0000048c,0x000008cb,0x00000b65,0x00000c9c,0x00000d84,0x00000e11,0x00000dd4,0x00000f68, +0x00001060,0x00000fcb,0x00000fab,0x00000ee3,0x00000cbb,0x00000727,0xfffffe90,0xfffff8b1, +0xfffff3c6,0xffffef93,0xffffeca4,0xfffffa81,0xffffd6f6,0xffffedf8,0x000026e5,0xffffd93b, +0x000005fa,0x00003354,0x00000281,0xffffffef,0xfffffff0,0x00000040,0xffffffd5,0x00000000, +}; + +unsigned long rp_fw_vliw_len = sizeof(rp_fw_vliw); +unsigned long rp_fw_cga_len = sizeof(rp_fw_cga); +unsigned long rp_fw_cga_sa_len = sizeof(rp_fw_cga_sa); +unsigned long rp_fw_data_len = sizeof(rp_fw_data); diff --git a/sound/soc/samsung/srp_ulp/srp_fw.h b/sound/soc/samsung/srp_ulp/srp_fw.h new file mode 100644 index 0000000..db85844 --- /dev/null +++ b/sound/soc/samsung/srp_ulp/srp_fw.h @@ -0,0 +1,26 @@ +/* sound/soc/samsung/srp_fw.h + * + * SRP Audio Firmware for Samsung Exynos4 + * + * Copyright (c) 2010 Samsung Electronics + * http://www.samsungsemi.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#ifndef _SRP_FW_H_ +#define _SRP_FW_H_ + +extern unsigned long rp_fw_vliw[]; +extern unsigned long rp_fw_cga[]; +extern unsigned long rp_fw_cga_sa[]; +extern unsigned long rp_fw_data[]; + +extern unsigned long rp_fw_vliw_len; +extern unsigned long rp_fw_cga_len; +extern unsigned long rp_fw_cga_sa_len; +extern unsigned long rp_fw_data_len; + +#endif diff --git a/sound/soc/samsung/srp_ulp/srp_ioctl.h b/sound/soc/samsung/srp_ulp/srp_ioctl.h new file mode 100644 index 0000000..274511a --- /dev/null +++ b/sound/soc/samsung/srp_ulp/srp_ioctl.h @@ -0,0 +1,66 @@ +#ifndef __SRP_IOCTL_H__ +#define __SRP_IOCTL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define SRP_INIT (0x10000) +#define SRP_DEINIT (0x10001) + +#define SRP_PAUSE (0x20000) +#define SRP_STOP (0x20001) +#define SRP_FLUSH (0x20002) +#define SRP_WAIT_EOS (0x20003) +#define SRP_EFFECT (0x20004) +#define SRP_SEND_EOS (0x20005) +#define SRP_RESUME_EOS (0x20006) + +#define SRP_PENDING_STATE (0x30000) +#define SRP_ERROR_STATE (0x30001) +#define SRP_DECODED_FRAME_NO (0x30002) +#define SRP_DECODED_ONE_FRAME_SIZE (0x30003) +#define SRP_DECODED_FRAME_SIZE (0x30004) +#define SRP_DECODED_PCM_SIZE (0x30005) +#define SRP_CHANNEL_COUNT (0x30006) +#define SRP_STOP_EOS_STATE (0x30007) + +#define SRP_CTRL_SET_GAIN (0xFF000) +#define SRP_CTRL_SET_EFFECT (0xFF001) +#define SRP_CTRL_GET_PCM_1KFRAME (0xFF002) +#define SRP_CTRL_PCM_DUMP_OP (0xFF003) +#define SRP_CTRL_SET_GAIN_SUB_LR (0xFF004) +#define SRP_CTRL_FORCE_MONO (0xFF005) +#define SRP_CTRL_AMFILTER_LOAD (0xFF006) +#define SRP_CTRL_SB_TABLET (0xFF007) + +#define SRP_CTRL_EFFECT_ENABLE (0xFF010) +#define SRP_CTRL_EFFECT_DEF (0xFF011) +#define SRP_CTRL_EFFECT_EQ_USR (0xFF012) +#define SRP_CTRL_EFFECT_SPEAKER (0xFF013) + +#define SRP_CTRL_IS_RUNNING (0xFF100) +#define SRP_CTRL_IS_OPENED (0xFF101) +#define SRP_CTRL_GET_OP_LEVEL (0xFF102) +#define SRP_CTRL_IS_PCM_DUMP (0xFF103) +#define SRP_CTRL_IS_FORCE_MONO (0xFF104) + +#define SRP_CTRL_ALTFW_STATE (0xFF200) +#define SRP_CTRL_ALTFW_LOAD (0xFF201) + +#define SRP_FW_CODE1 0 +#define SRP_FW_CODE20 1 +#define SRP_FW_CODE21 2 +#define SRP_FW_CODE22 3 +#define SRP_FW_CODE30 4 +#define SRP_FW_CODE31 5 + +#define SRP_FW_VLIW 0 +#define SRP_FW_CGA 1 +#define SRP_FW_CGA_SA 2 +#define SRP_FW_DATA 3 + +#ifdef __cplusplus +} +#endif +#endif /* __SRP_IOCTL_H__ */ diff --git a/sound/soc/samsung/srp_ulp/srp_reg.h b/sound/soc/samsung/srp_ulp/srp_reg.h new file mode 100644 index 0000000..f434e18 --- /dev/null +++ b/sound/soc/samsung/srp_ulp/srp_reg.h @@ -0,0 +1,138 @@ +/* sound/soc/samsung/srp_reg.h + * + * Audio RP Registers for Samsung Exynos4 + * + * Copyright (c) 2010 Samsung Electronics + * http://www.samsungsemi.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#ifndef _SRP_REG_H_ +#define _SRP_REG_H_ + +#define SRP_IRAM_BASE (0x02020000) +#define SRP_SRAM_BASE (0x03000000) +#define SRP_ASSCLK_BASE (0x03810000) +#define SRP_COMMBOX_BASE (0x03820000) + +/* SRAM & Commbox base address */ +#define SRP_DMEM_ADDR (SRP_SRAM_BASE + 0x00000000) +#define SRP_ICACHE_ADDR (SRP_SRAM_BASE + 0x00020000) +#define SRP_CMEM_ADDR (SRP_SRAM_BASE + 0x00030000) + +/* Internal Memory Offset */ +#define SRP_DMEM (0x00000) +#define SRP_ICACHE (0x20000) +#define SRP_CMEM (0x30000) + +/* Commbox Offset */ +#define SRP_CONT (0x0000) +#define SRP_CFGR (0x0004) +#define SRP_INTERRUPT (0x0008) +#define SRP_PENDING (0x000C) +#define SRP_INTERRUPT_CODE (0x0010) +#define SRP_INFORMATION (0x0014) +#define SRP_ERROR_CODE (0x0018) +#define SRP_ARM_INTERRUPT_CODE (0x001C) +#define SRP_EFFECT_DEF (0x0020) +#define SRP_EQ_USER_DEF (0x0024) +#define SRP_FRAME_INDEX (0x0028) +#define SRP_PCM_BUFF_SIZE (0x002C) +#define SRP_PCM_BUFF0 (0x0030) +#define SRP_PCM_BUFF1 (0x0034) +#define SRP_READ_BITSTREAM_SIZE (0x0038) + +#define SRP_LOAD_CGA_SA_ADDR (0x0100) +#define SRP_BITSTREAM_BUFF_DRAM_ADDR1 (0x0104) +#define SRP_BITSTREAM_SIZE (0x0108) +#define SRP_BITSTREAM_BUFF_DRAM_ADDR0 (0x010C) +#define SRP_CODE_START_ADDR (0x0110) +#define SRP_PCM_DUMP_ADDR (0x0114) +#define SRP_DATA_START_ADDR (0x0118) +#define SRP_BITSTREAM_BUFF_DRAM_SIZE (0x011C) +#define SRP_CONF_START_ADDR (0x0120) +#define SRP_GAIN_CTRL_FACTOR_L (0x0124) +#define SRP_UART_INFORMATION (0x0128) +#define SRP_GAIN_CTRL_FACTOR_R (0x012C) + +/* + * SRP Configuration register + */ +#define SRP_CFGR_OUTPUT_PCM_8BIT (0x0 << 0) +#define SRP_CFGR_OUTPUT_PCM_16BIT (0x1 << 0) +#define SRP_CFGR_OUTPUT_PCM_24BIT (0x2 << 0) +#define SRP_CFGR_BOOT_INST_EXT_MEM (0x0 << 2) +#define SRP_CFGR_BOOT_INST_INT_CC (0x1 << 2) +#define SRP_CFGR_NOTUSE_ICACHE_MEM (0x0 << 3) +#define SRP_CFGR_USE_ICACHE_MEM (0x1 << 3) +#define SRP_CFGR_FLOW_CTRL_ON (0x1 << 4) +#define SRP_CFGR_FLOW_CTRL_OFF (0x0 << 4) +#define SRP_CFGR_USE_I2S_INTR (0x1 << 6) +#define SRP_CFGR_NOTUSE_I2S_INTR (0x0 << 6) + +/* + * SRP Pending control register + */ +#define SRP_RUN (0x0 << 0) +#define SRP_STALL (0x1 << 0) + +/* + * Interrupt Code & Information + */ + +/* for SRP_INTERRUPT_CODE */ +#define SRP_INTR_CODE_MASK (0x0FFF) + +#define SRP_INTR_CODE_PLAYDONE (0x0001 << 0) +#define SRP_INTR_CODE_ERROR (0x0001 << 1) +#define SRP_INTR_CODE_REQUEST (0x0001 << 2) +#define SRP_INTR_CODE_POLLINGWAIT (0x0001 << 9) +#define SRP_INTR_CODE_UART_OUTPUT (0x0001 << 10) +#define SRP_INTR_CODE_NOTIFY_OBUF (0x0001 << 11) + +#define SRP_INTR_CODE_REQUEST_MASK (0x0007 << 6) +#define SRP_INTR_CODE_NOTIFY_INFO (0x0007 << 6) +#define SRP_INTR_CODE_IBUF_REQUEST_ULP (0x0006 << 6) +#define SRP_INTR_CODE_IBUF_REQUEST (0x0005 << 6) +#define SRP_INTR_CODE_ULP (0x0004 << 6) +#define SRP_INTR_CODE_PENDING_ULP (0x0003 << 6) +#define SRP_INTR_CODE_PLAYEND (0x0002 << 6) +#define SRP_INTR_CODE_DRAM_REQUEST (0x0001 << 6) + +#define SRP_INTR_CODE_IBUF_MASK (0x0003 << 4) +#define SRP_INTR_CODE_IBUF0_EMPTY (0x0001 << 4) +#define SRP_INTR_CODE_IBUF1_EMPTY (0x0002 << 4) + +/* for SRP_INFORMATION */ +#define SRP_INTR_INFO_MASK (0xFFFF) + +/* for SRP_ARM_INTERRUPT_CODE */ +#define SRP_ARM_INTR_CODE_MASK (0x007F) +/* ARM to RP */ +#define SRP_ARM_INTR_CODE_SA_ON (0x0001 << 0) +#define SRP_ARM_INTR_CODE_PAUSE_REQ (0x0001 << 1) +#define SRP_ARM_INTR_CODE_PAUSE_STA (0x0001 << 2) +#define SRP_ARM_INTR_CODE_ULP_ATYPE (0x0000 << 3) +#define SRP_ARM_INTR_CODE_ULP_BTYPE (0x0001 << 3) +#define SRP_ARM_INTR_CODE_ULP_CTYPE (0x0002 << 3) +/* RP to ARM */ +#define SRP_ARM_INTR_CODE_CHINF_MASK (0x0003) +#define SRP_ARM_INTR_CODE_CHINF_SHIFT (5) +/* ARM to RP */ +#define SRP_ARM_INTR_CODE_PCM_DUMP_ON (0x0001 << 7) +/* RP to ARM */ +#define SRP_ARM_INTR_CODE_FRAME_MASK (0x0007 << 8) +#define SRP_ARM_INTR_CODE_FRAME_NULL (0x0000 << 8) +#define SRP_ARM_INTR_CODE_FRAME_576 (0x0001 << 8) +#define SRP_ARM_INTR_CODE_FRAME_1152 (0x0002 << 8) +#define SRP_ARM_INTR_CODE_FRAME_384 (0x0003 << 8) +#define SRP_ARM_INTR_CODE_FRAME_1024 (0x0004 << 8) +/* ARM to RP */ +#define SRP_ARM_INTR_CODE_FORCE_MONO (0x0001 << 11) +#define SRP_ARM_INTR_CODE_AM_FILTER_LOAD (0x0001 << 12) +#define SRP_ARM_INTR_CODE_SB_TABLET (0x0001 << 13) + +#endif diff --git a/sound/soc/samsung/u1_mc1n2.c b/sound/soc/samsung/u1_mc1n2.c new file mode 100644 index 0000000..f17df67 --- /dev/null +++ b/sound/soc/samsung/u1_mc1n2.c @@ -0,0 +1,270 @@ +/* + * u1_mc1n2.c + * + * Copyright (c) 2009 Samsung Electronics Co. Ltd + * Author: aitdark.park <aitdark.park@samsung.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include <linux/platform_device.h> +#include <linux/clk.h> +#include <linux/io.h> +#include <linux/delay.h> +#include <linux/suspend.h> +#include <sound/soc.h> +#include <sound/soc-dapm.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> +#include <mach/regs-clock.h> +#include <mach/pmu.h> +#include "../codecs/mc1n2/mc1n2.h" + +static bool xclkout_enabled; + +int mc1n2_set_mclk_source(bool on) +{ + if (on) { + exynos4_pmu_xclkout_set(1, XCLKOUT_XUSBXTI); + xclkout_enabled = true; + } else { + exynos4_pmu_xclkout_set(0, XCLKOUT_XUSBXTI); + xclkout_enabled = false; + } + + mdelay(10); + + return 0; +} +EXPORT_SYMBOL(mc1n2_set_mclk_source); + +static int u1_hifi_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + int ret; + + /* Set the codec DAI configuration */ + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; + + /* Set the cpu DAI configuration */ + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM); + if (ret < 0) + return ret; +/* check later + ret = snd_soc_dai_set_sysclk(cpu_dai, S3C_I2SV2_CLKSRC_CDCLK, + 0, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_sysclk(cpu_dai, S3C64XX_CLKSRC_MUX, + 0, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; +*/ + + ret = snd_soc_dai_set_clkdiv(codec_dai, MC1N2_BCLK_MULT, MC1N2_LRCK_X32); + + if (ret < 0) + return ret; + + return 0; +} + +/* U1 Audio extra controls */ +#define U1_AUDIO_OFF 0 +#define U1_HEADSET_OUT 1 +#define U1_MIC_IN 2 +#define U1_LINE_IN 3 + +static int u1_aud_mode; + +static const char *u1_aud_scenario[] = { + [U1_AUDIO_OFF] = "Off", + [U1_HEADSET_OUT] = "Playback Headphones", + [U1_MIC_IN] = "Capture Mic", + [U1_LINE_IN] = "Capture Line", +}; + +static void u1_aud_ext_control(struct snd_soc_codec *codec) +{ + struct snd_soc_dapm_context *dapm = &codec->dapm; + + switch (u1_aud_mode) { + case U1_HEADSET_OUT: + snd_soc_dapm_enable_pin(dapm, "Headset Out"); + snd_soc_dapm_disable_pin(dapm, "Mic In"); + snd_soc_dapm_disable_pin(dapm, "Line In"); + break; + case U1_MIC_IN: + snd_soc_dapm_disable_pin(dapm, "Headset Out"); + snd_soc_dapm_enable_pin(dapm, "Mic In"); + snd_soc_dapm_disable_pin(dapm, "Line In"); + break; + case U1_LINE_IN: + snd_soc_dapm_disable_pin(dapm, "Headset Out"); + snd_soc_dapm_disable_pin(dapm, "Mic In"); + snd_soc_dapm_enable_pin(dapm, "Line In"); + break; + case U1_AUDIO_OFF: + default: + snd_soc_dapm_disable_pin(dapm, "Headset Out"); + snd_soc_dapm_disable_pin(dapm, "Mic In"); + snd_soc_dapm_disable_pin(dapm, "Line In"); + break; + } + + snd_soc_dapm_sync(dapm); +} + +static int u1_mc1n2_getp(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = u1_aud_mode; + return 0; +} + +static int u1_mc1n2_setp(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); + + if (u1_aud_mode == ucontrol->value.integer.value[0]) + return 0; + + u1_aud_mode = ucontrol->value.integer.value[0]; + u1_aud_ext_control(codec); + + return 1; +} + +static const struct snd_soc_dapm_widget u1_dapm_widgets[] = { + SND_SOC_DAPM_HP("Headset Out", NULL), + SND_SOC_DAPM_MIC("Mic In", NULL), + SND_SOC_DAPM_LINE("Line In", NULL), +}; + +static const struct soc_enum u1_aud_enum[] = { + SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(u1_aud_scenario), + u1_aud_scenario), +}; + +static const struct snd_kcontrol_new u1_aud_controls[] = { + SOC_ENUM_EXT("U1 Audio Mode", u1_aud_enum[0], + u1_mc1n2_getp, u1_mc1n2_setp), +}; + +static const struct snd_soc_dapm_route u1_dapm_routes[] = { + /* Connections to Headset */ + {"Headset Out", NULL, "HPOUT1L"}, + {"Headset Out", NULL, "HPOUT1R"}, + /* Connections to Mics */ + {"IN1LN", NULL, "Mic In"}, + {"IN1RN", NULL, "Mic In"}, + /* Connections to Line In */ + {"IN2LN", NULL, "Line In"}, + {"IN2RN", NULL, "Line In"}, +}; + +static int u1_hifiaudio_init(struct snd_soc_pcm_runtime *rtd) +{ + return 0; +} + +/* + * U1 MC1N2 DAI operations. + */ +static struct snd_soc_ops u1_hifi_ops = { + .hw_params = u1_hifi_hw_params, +}; + +static struct snd_soc_dai_link u1_dai[] = { +#if defined(CONFIG_SND_SAMSUNG_LP) || defined(CONFIG_SND_SAMSUNG_ALP) + { /* Sec_Fifo DAI i/f */ + .name = "MC1N2 Sec_FIFO TX", + .stream_name = "Sec_Dai", + .cpu_dai_name = "samsung-i2s.4", + .codec_dai_name = "mc1n2-da0i", +#ifndef CONFIG_SND_SOC_SAMSUNG_USE_DMA_WRAPPER + .platform_name = "samsung-audio-idma", +#else + .platform_name = "samsung-audio", +#endif + .codec_name = "mc1n2.6-003a", + .init = u1_hifiaudio_init, + .ops = &u1_hifi_ops, + }, +#endif + { /* Primary DAI i/f */ + .name = "MC1N2 AIF1", + .stream_name = "hifiaudio", + .cpu_dai_name = "samsung-i2s.0", + .codec_dai_name = "mc1n2-da0i", + .platform_name = "samsung-audio", + .codec_name = "mc1n2.6-003a", + .init = u1_hifiaudio_init, + .ops = &u1_hifi_ops, + } +}; + +static int u1_card_suspend(struct snd_soc_card *card) +{ + exynos4_sys_powerdown_xusbxti_control(xclkout_enabled ? 1 : 0); + + return 0; +} + +static struct snd_soc_card u1_snd_card = { + .name = "U1-YMU823", + .dai_link = u1_dai, + .num_links = ARRAY_SIZE(u1_dai), + + .suspend_post = u1_card_suspend, +}; + +/* setup codec data from mc1n2 codec driver */ +extern void set_mc1n2_codec_data(struct mc1n2_setup *setup); + +static struct platform_device *u1_snd_device; + +static int __init u1_audio_init(void) +{ + int ret; + + mc1n2_set_mclk_source(1); + + u1_snd_device = platform_device_alloc("soc-audio", -1); + if (!u1_snd_device) + return -ENOMEM; + + platform_set_drvdata(u1_snd_device, &u1_snd_card); + + ret = platform_device_add(u1_snd_device); + if (ret) { + platform_device_put(u1_snd_device); + } + + return ret; +} + +static void __exit u1_audio_exit(void) +{ + platform_device_unregister(u1_snd_device); +} + +module_init(u1_audio_init); + +MODULE_AUTHOR("aitdark, aitdark.park@samsung.com"); +MODULE_DESCRIPTION("ALSA SoC U1 MC1N2"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 493ae7c..7ed17b7 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -131,9 +131,12 @@ static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf, int len; size_t total = 0; loff_t p = 0; + int cache_size; wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; regsize = codec->driver->reg_word_size * 2; + cache_size = max(codec->driver->reg_cache_size, + codec->driver->max_register); len = wordsize + regsize + 2 + 1; @@ -143,7 +146,7 @@ static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf, if (codec->driver->reg_cache_step) step = codec->driver->reg_cache_step; - for (i = 0; i < codec->driver->reg_cache_size; i += step) { + for (i = 0; i < cache_size; i += step) { if (codec->readable_register && !codec->readable_register(codec, i)) continue; if (codec->driver->display_register) { @@ -1020,17 +1023,6 @@ static snd_pcm_uframes_t soc_pcm_pointer(struct snd_pcm_substream *substream) return offset; } -/* ASoC PCM operations */ -static struct snd_pcm_ops soc_pcm_ops = { - .open = soc_pcm_open, - .close = soc_codec_close, - .hw_params = soc_pcm_hw_params, - .hw_free = soc_pcm_hw_free, - .prepare = soc_pcm_prepare, - .trigger = soc_pcm_trigger, - .pointer = soc_pcm_pointer, -}; - #ifdef CONFIG_PM_SLEEP /* powers down audio subsystem for suspend */ int snd_soc_suspend(struct device *dev) @@ -1121,6 +1113,17 @@ int snd_soc_suspend(struct device *dev) if (!codec->suspended && codec->driver->suspend) { switch (codec->dapm.bias_level) { case SND_SOC_BIAS_STANDBY: + /* + * If the CODEC is capable of idle + * bias off then being in STANDBY + * means it's doing something, + * otherwise fall through. + */ + if (codec->dapm.idle_bias_off) { + dev_dbg(codec->dev, + "idle_bias_off CODEC on over suspend\n"); + break; + } case SND_SOC_BIAS_OFF: codec->driver->suspend(codec, PMSG_SUSPEND); codec->suspended = 1; @@ -2084,6 +2087,11 @@ const struct dev_pm_ops snd_soc_pm_ops = { .suspend = snd_soc_suspend, .resume = snd_soc_resume, .poweroff = snd_soc_poweroff, +#ifdef CONFIG_HIBERNATION + .freeze = snd_soc_suspend, + .thaw = snd_soc_resume, + .restore = snd_soc_resume, +#endif }; EXPORT_SYMBOL_GPL(snd_soc_pm_ops); @@ -2105,10 +2113,19 @@ static int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) struct snd_soc_platform *platform = rtd->platform; struct snd_soc_dai *codec_dai = rtd->codec_dai; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + struct snd_pcm_ops *soc_pcm_ops = &rtd->ops; struct snd_pcm *pcm; char new_name[64]; int ret = 0, playback = 0, capture = 0; + soc_pcm_ops->open = soc_pcm_open; + soc_pcm_ops->close = soc_codec_close; + soc_pcm_ops->hw_params = soc_pcm_hw_params; + soc_pcm_ops->hw_free = soc_pcm_hw_free; + soc_pcm_ops->prepare = soc_pcm_prepare; + soc_pcm_ops->trigger = soc_pcm_trigger; + soc_pcm_ops->pointer = soc_pcm_pointer; + /* check client and interface hw capabilities */ snprintf(new_name, sizeof(new_name), "%s %s-%d", rtd->dai_link->stream_name, codec_dai->name, num); @@ -2129,20 +2146,20 @@ static int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) rtd->pcm = pcm; pcm->private_data = rtd; if (platform->driver->ops) { - soc_pcm_ops.mmap = platform->driver->ops->mmap; - soc_pcm_ops.pointer = platform->driver->ops->pointer; - soc_pcm_ops.ioctl = platform->driver->ops->ioctl; - soc_pcm_ops.copy = platform->driver->ops->copy; - soc_pcm_ops.silence = platform->driver->ops->silence; - soc_pcm_ops.ack = platform->driver->ops->ack; - soc_pcm_ops.page = platform->driver->ops->page; + soc_pcm_ops->mmap = platform->driver->ops->mmap; + soc_pcm_ops->pointer = platform->driver->ops->pointer; + soc_pcm_ops->ioctl = platform->driver->ops->ioctl; + soc_pcm_ops->copy = platform->driver->ops->copy; + soc_pcm_ops->silence = platform->driver->ops->silence; + soc_pcm_ops->ack = platform->driver->ops->ack; + soc_pcm_ops->page = platform->driver->ops->page; } if (playback) - snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &soc_pcm_ops); + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, soc_pcm_ops); if (capture) - snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &soc_pcm_ops); + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, soc_pcm_ops); if (platform->driver->pcm_new) { ret = platform->driver->pcm_new(rtd->card->snd_card, @@ -2289,7 +2306,7 @@ EXPORT_SYMBOL_GPL(snd_soc_read); unsigned int snd_soc_write(struct snd_soc_codec *codec, unsigned int reg, unsigned int val) { - dev_dbg(codec->dev, "write %x = %x\n", reg, val); + dev_info(codec->dev, "write %x = %x\n", reg, val); trace_snd_soc_reg_write(codec, reg, val); return codec->write(codec, reg, val); } diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 32ab7fc..3e79714 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -67,6 +67,7 @@ static int dapm_up_seq[] = { [snd_soc_dapm_out_drv] = 10, [snd_soc_dapm_hp] = 10, [snd_soc_dapm_spk] = 10, + [snd_soc_dapm_line] = 10, [snd_soc_dapm_post] = 11, }; @@ -75,6 +76,7 @@ static int dapm_down_seq[] = { [snd_soc_dapm_adc] = 1, [snd_soc_dapm_hp] = 2, [snd_soc_dapm_spk] = 2, + [snd_soc_dapm_line] = 2, [snd_soc_dapm_out_drv] = 2, [snd_soc_dapm_pga] = 4, [snd_soc_dapm_mixer_named_ctl] = 5, @@ -160,18 +162,23 @@ static int snd_soc_dapm_set_bias_level(struct snd_soc_dapm_context *dapm, trace_snd_soc_bias_level_start(card, level); if (card && card->set_bias_level) - ret = card->set_bias_level(card, level); - if (ret == 0) { - if (dapm->codec && dapm->codec->driver->set_bias_level) - ret = dapm->codec->driver->set_bias_level(dapm->codec, level); + ret = card->set_bias_level(card, dapm, level); + if (ret != 0) + goto out; + + if (dapm->codec) { + if (dapm->codec->driver->set_bias_level) + ret = dapm->codec->driver->set_bias_level(dapm->codec, + level); else dapm->bias_level = level; } - if (ret == 0) { - if (card && card->set_bias_level_post) - ret = card->set_bias_level_post(card, level); - } + if (ret != 0) + goto out; + if (card && card->set_bias_level_post) + ret = card->set_bias_level_post(card, dapm, level); +out: trace_snd_soc_bias_level_done(card, level); return ret; @@ -1041,16 +1048,17 @@ static void dapm_pre_sequence_async(void *data, async_cookie_t cookie) struct snd_soc_dapm_context *d = data; int ret; - if (d->dev_power && d->bias_level == SND_SOC_BIAS_OFF) { + /* If we're off and we're not supposed to be go into STANDBY */ + if (d->bias_level == SND_SOC_BIAS_OFF && + d->target_bias_level != SND_SOC_BIAS_OFF) { ret = snd_soc_dapm_set_bias_level(d, SND_SOC_BIAS_STANDBY); if (ret != 0) dev_err(d->dev, "Failed to turn on bias: %d\n", ret); } - /* If we're changing to all on or all off then prepare */ - if ((d->dev_power && d->bias_level == SND_SOC_BIAS_STANDBY) || - (!d->dev_power && d->bias_level == SND_SOC_BIAS_ON)) { + /* Prepare for a STADDBY->ON or ON->STANDBY transition */ + if (d->bias_level != d->target_bias_level) { ret = snd_soc_dapm_set_bias_level(d, SND_SOC_BIAS_PREPARE); if (ret != 0) dev_err(d->dev, @@ -1067,7 +1075,9 @@ static void dapm_post_sequence_async(void *data, async_cookie_t cookie) int ret; /* If we just powered the last thing off drop to standby bias */ - if (d->bias_level == SND_SOC_BIAS_PREPARE && !d->dev_power) { + if (d->bias_level == SND_SOC_BIAS_PREPARE && + (d->target_bias_level == SND_SOC_BIAS_STANDBY || + d->target_bias_level == SND_SOC_BIAS_OFF)) { ret = snd_soc_dapm_set_bias_level(d, SND_SOC_BIAS_STANDBY); if (ret != 0) dev_err(d->dev, "Failed to apply standby bias: %d\n", @@ -1075,14 +1085,16 @@ static void dapm_post_sequence_async(void *data, async_cookie_t cookie) } /* If we're in standby and can support bias off then do that */ - if (d->bias_level == SND_SOC_BIAS_STANDBY && d->idle_bias_off) { + if (d->bias_level == SND_SOC_BIAS_STANDBY && + d->target_bias_level == SND_SOC_BIAS_OFF) { ret = snd_soc_dapm_set_bias_level(d, SND_SOC_BIAS_OFF); if (ret != 0) dev_err(d->dev, "Failed to turn off bias: %d\n", ret); } /* If we just powered up then move to active bias */ - if (d->bias_level == SND_SOC_BIAS_PREPARE && d->dev_power) { + if (d->bias_level == SND_SOC_BIAS_PREPARE && + d->target_bias_level == SND_SOC_BIAS_ON) { ret = snd_soc_dapm_set_bias_level(d, SND_SOC_BIAS_ON); if (ret != 0) dev_err(d->dev, "Failed to apply active bias: %d\n", @@ -1107,13 +1119,19 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event) LIST_HEAD(up_list); LIST_HEAD(down_list); LIST_HEAD(async_domain); + enum snd_soc_bias_level bias; int power; trace_snd_soc_dapm_start(card); - list_for_each_entry(d, &card->dapm_list, list) - if (d->n_widgets || d->codec == NULL) - d->dev_power = 0; + list_for_each_entry(d, &card->dapm_list, list) { + if (d->n_widgets || d->codec == NULL) { + if (d->idle_bias_off) + d->target_bias_level = SND_SOC_BIAS_OFF; + else + d->target_bias_level = SND_SOC_BIAS_STANDBY; + } + } /* Check which widgets we need to power and store them in * lists indicating if they should be powered up or down. @@ -1135,8 +1153,27 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event) power = w->power_check(w); else power = 1; - if (power) - w->dapm->dev_power = 1; + + if (power) { + d = w->dapm; + + /* Supplies and micbiases only bring + * the context up to STANDBY as unless + * something else is active and + * passing audio they generally don't + * require full power. + */ + switch (w->id) { + case snd_soc_dapm_supply: + case snd_soc_dapm_micbias: + if (d->target_bias_level < SND_SOC_BIAS_STANDBY) + d->target_bias_level = SND_SOC_BIAS_STANDBY; + break; + default: + d->target_bias_level = SND_SOC_BIAS_ON; + break; + } + } if (w->power == power) continue; @@ -1160,24 +1197,19 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event) switch (event) { case SND_SOC_DAPM_STREAM_START: case SND_SOC_DAPM_STREAM_RESUME: - dapm->dev_power = 1; + dapm->target_bias_level = SND_SOC_BIAS_ON; break; case SND_SOC_DAPM_STREAM_STOP: - dapm->dev_power = !!dapm->codec->active; + if (dapm->codec->active) + dapm->target_bias_level = SND_SOC_BIAS_ON; + else + dapm->target_bias_level = SND_SOC_BIAS_STANDBY; break; case SND_SOC_DAPM_STREAM_SUSPEND: - dapm->dev_power = 0; + dapm->target_bias_level = SND_SOC_BIAS_STANDBY; break; case SND_SOC_DAPM_STREAM_NOP: - switch (dapm->bias_level) { - case SND_SOC_BIAS_STANDBY: - case SND_SOC_BIAS_OFF: - dapm->dev_power = 0; - break; - default: - dapm->dev_power = 1; - break; - } + dapm->target_bias_level = dapm->bias_level; break; default: break; @@ -1185,12 +1217,12 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event) } /* Force all contexts in the card to the same bias state */ - power = 0; + bias = SND_SOC_BIAS_OFF; list_for_each_entry(d, &card->dapm_list, list) - if (d->dev_power) - power = 1; + if (d->target_bias_level > bias) + bias = d->target_bias_level; list_for_each_entry(d, &card->dapm_list, list) - d->dev_power = power; + d->target_bias_level = bias; /* Run all the bias changes in parallel */ diff --git a/sound/soc/soc-jack.c b/sound/soc/soc-jack.c index fa31d9c..59984f2 100644 --- a/sound/soc/soc-jack.c +++ b/sound/soc/soc-jack.c @@ -19,6 +19,19 @@ #include <linux/delay.h> #include <trace/events/asoc.h> +#ifdef CONFIG_JACK_MON +#include <linux/jack.h> +#endif + +#include <linux/switch.h> +#include <linux/sec_jack.h> + +/* Android jack detection */ +static struct switch_dev android_switch = { + .name = "h2w", +}; + + /** * snd_soc_jack_new - Create a new jack * @card: ASoC card @@ -40,6 +53,8 @@ int snd_soc_jack_new(struct snd_soc_codec *codec, const char *id, int type, INIT_LIST_HEAD(&jack->jack_zones); BLOCKING_INIT_NOTIFIER_HEAD(&jack->notifier); + switch_dev_register(&android_switch); + return snd_jack_new(codec->card->snd_card, id, type, &jack->jack); } EXPORT_SYMBOL_GPL(snd_soc_jack_new); @@ -66,6 +81,26 @@ void snd_soc_jack_report(struct snd_soc_jack *jack, int status, int mask) int enable; int oldstatus; + if (mask & SND_JACK_HEADSET) { + if (status & SND_JACK_MICROPHONE) + switch_set_state(&android_switch, SEC_HEADSET_4POLE); + else if (status & SND_JACK_HEADPHONE) + switch_set_state(&android_switch, SEC_HEADSET_3POLE); + else + switch_set_state(&android_switch, SEC_JACK_NO_DEVICE); + } + +#ifdef CONFIG_JACK_MON + if (mask & SND_JACK_HEADSET) { + if (status & SND_JACK_MICROPHONE) + jack_event_handler("earjack", SND_JACK_HEADSET); + else if (status & SND_JACK_HEADPHONE) + jack_event_handler("earjack", SND_JACK_HEADPHONE); + else + jack_event_handler("earjack", 0); + } +#endif + trace_snd_soc_jack_report(jack, mask, status); if (!jack) |