aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorcodeworkx <daniel.hillenbrand@codeworkx.de>2012-06-02 13:09:29 +0200
committercodeworkx <daniel.hillenbrand@codeworkx.de>2012-06-02 13:09:29 +0200
commitc6da2cfeb05178a11c6d062a06f8078150ee492f (patch)
treef3b4021d252c52d6463a9b3c1bb7245e399b009c /sound/soc
parentc6d7c4dbff353eac7919342ae6b3299a378160a6 (diff)
downloadkernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.zip
kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.gz
kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.bz2
samsung update 1
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/Kconfig3
-rw-r--r--sound/soc/codecs/Makefile1
-rw-r--r--sound/soc/codecs/mc1n2/Kconfig12
-rw-r--r--sound/soc/codecs/mc1n2/Makefile4
-rw-r--r--sound/soc/codecs/mc1n2/mc1n2.c4563
-rw-r--r--sound/soc/codecs/mc1n2/mc1n2.h124
-rw-r--r--sound/soc/codecs/mc1n2/mc1n2_cfg.h1199
-rwxr-xr-xsound/soc/codecs/mc1n2/mc1n2_cfg_gsm.h1159
-rw-r--r--sound/soc/codecs/mc1n2/mc1n2_cfg_lgt.h1199
-rw-r--r--sound/soc/codecs/mc1n2/mc1n2_cfg_px.h1199
-rw-r--r--sound/soc/codecs/mc1n2/mc1n2_cfg_q1.h1199
-rw-r--r--sound/soc/codecs/mc1n2/mc1n2_dbg.c439
-rw-r--r--sound/soc/codecs/mc1n2/mc1n2_priv.h196
-rw-r--r--sound/soc/codecs/mc1n2/mcdebuglog.c1771
-rw-r--r--sound/soc/codecs/mc1n2/mcdebuglog.h31
-rw-r--r--sound/soc/codecs/mc1n2/mcdefs.h1160
-rw-r--r--sound/soc/codecs/mc1n2/mcdevif.c317
-rw-r--r--sound/soc/codecs/mc1n2/mcdevif.h81
-rw-r--r--sound/soc/codecs/mc1n2/mcdevprof.c131
-rw-r--r--sound/soc/codecs/mc1n2/mcdevprof.h53
-rw-r--r--sound/soc/codecs/mc1n2/mcdriver.c4047
-rw-r--r--sound/soc/codecs/mc1n2/mcdriver.h906
-rw-r--r--sound/soc/codecs/mc1n2/mcdriver_AA.c18276
-rw-r--r--sound/soc/codecs/mc1n2/mcdriver_AA.h25
-rw-r--r--sound/soc/codecs/mc1n2/mcmachdep.c318
-rw-r--r--sound/soc/codecs/mc1n2/mcmachdep.h34
-rw-r--r--sound/soc/codecs/mc1n2/mcpacking.c4710
-rw-r--r--sound/soc/codecs/mc1n2/mcpacking.h91
-rw-r--r--sound/soc/codecs/mc1n2/mcresctrl.c9419
-rw-r--r--sound/soc/codecs/mc1n2/mcresctrl.h263
-rw-r--r--sound/soc/codecs/mc1n2/mcservice.c365
-rw-r--r--sound/soc/codecs/mc1n2/mcservice.h34
-rw-r--r--sound/soc/codecs/mc1n2/mctypedef.h38
-rw-r--r--sound/soc/codecs/wm8993.c16
-rw-r--r--sound/soc/codecs/wm8993.h9
-rw-r--r--sound/soc/codecs/wm8994-tables.c24
-rw-r--r--sound/soc/codecs/wm8994.c1622
-rw-r--r--sound/soc/codecs/wm8994.h21
-rw-r--r--sound/soc/codecs/wm_hubs.c262
-rw-r--r--sound/soc/codecs/wm_hubs.h25
-rw-r--r--sound/soc/samsung/Kconfig125
-rw-r--r--sound/soc/samsung/Makefile18
-rw-r--r--sound/soc/samsung/ac97.c2
-rw-r--r--sound/soc/samsung/audss.c308
-rw-r--r--sound/soc/samsung/audss.h33
-rw-r--r--sound/soc/samsung/dma-wrapper.c203
-rw-r--r--sound/soc/samsung/dma.c70
-rw-r--r--sound/soc/samsung/dma.h3
-rw-r--r--sound/soc/samsung/i2s.c493
-rw-r--r--sound/soc/samsung/i2s.h118
-rw-r--r--sound/soc/samsung/idma.c596
-rw-r--r--sound/soc/samsung/idma.h84
-rw-r--r--sound/soc/samsung/lungo_wm1811.c1213
-rw-r--r--sound/soc/samsung/midas_wm1811.c1629
-rw-r--r--sound/soc/samsung/midas_wm1811_slsi.c1314
-rw-r--r--sound/soc/samsung/p10_wm1811_slsi.c872
-rw-r--r--sound/soc/samsung/pcm.c62
-rw-r--r--sound/soc/samsung/regs-i2s-v2.h11
-rw-r--r--sound/soc/samsung/s3c-i2s-v2.c2
-rw-r--r--sound/soc/samsung/s3c2412-i2s.c10
-rw-r--r--sound/soc/samsung/s3c24xx-i2s.c4
-rw-r--r--sound/soc/samsung/smdk_spdif.c33
-rw-r--r--sound/soc/samsung/smdk_wm8994.c172
-rw-r--r--sound/soc/samsung/smdk_wm8994pcm.c242
-rw-r--r--sound/soc/samsung/spdif.c4
-rw-r--r--sound/soc/samsung/srp-types.h29
-rw-r--r--sound/soc/samsung/srp_alp/Kconfig5
-rw-r--r--sound/soc/samsung/srp_alp/Makefile3
-rw-r--r--sound/soc/samsung/srp_alp/srp_alp.c1296
-rw-r--r--sound/soc/samsung/srp_alp/srp_alp.h214
-rw-r--r--sound/soc/samsung/srp_alp/srp_alp_error.h22
-rw-r--r--sound/soc/samsung/srp_alp/srp_alp_fw.h13719
-rw-r--r--sound/soc/samsung/srp_alp/srp_alp_ioctl.h14
-rw-r--r--sound/soc/samsung/srp_alp/srp_alp_reg.h161
-rw-r--r--sound/soc/samsung/srp_ulp/Kconfig5
-rw-r--r--sound/soc/samsung/srp_ulp/Makefile4
-rw-r--r--sound/soc/samsung/srp_ulp/srp.c2061
-rw-r--r--sound/soc/samsung/srp_ulp/srp_fw.c9341
-rw-r--r--sound/soc/samsung/srp_ulp/srp_fw.h26
-rw-r--r--sound/soc/samsung/srp_ulp/srp_ioctl.h66
-rw-r--r--sound/soc/samsung/srp_ulp/srp_reg.h138
-rw-r--r--sound/soc/samsung/u1_mc1n2.c270
-rw-r--r--sound/soc/soc-core.c61
-rw-r--r--sound/soc/soc-dapm.c104
-rw-r--r--sound/soc/soc-jack.c35
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)