From 31a5fe18bb104abad15cdc85b4191a90352a4911 Mon Sep 17 00:00:00 2001 From: hjc Date: Wed, 27 Mar 2013 20:55:56 +0800 Subject: [PATCH] rk3168_86v: basic function is ok --- arch/arm/configs/rk3168_86v_codec_defconfig | 28 +- arch/arm/mach-rk30/board-rk3168-86v.c | 79 +- drivers/input/touchscreen/Kconfig | 3 + drivers/input/touchscreen/Makefile | 1 + drivers/input/touchscreen/rockchip_gslX680.c | 6 +- .../touchscreen/rockchip_gslX680_rk3168.c | 1083 ++++ .../touchscreen/rockchip_gslX680_rk3168.h | 5504 +++++++++++++++++ drivers/video/display/screen/Kconfig | 3 +- drivers/video/display/screen/Makefile | 1 + .../display/screen/lcd_E242868_rk3168_86v.c | 195 + sound/soc/codecs/es8323.c | 786 +-- 11 files changed, 7185 insertions(+), 504 deletions(-) mode change 100644 => 100755 drivers/input/touchscreen/rockchip_gslX680.c create mode 100755 drivers/input/touchscreen/rockchip_gslX680_rk3168.c create mode 100755 drivers/input/touchscreen/rockchip_gslX680_rk3168.h create mode 100644 drivers/video/display/screen/lcd_E242868_rk3168_86v.c diff --git a/arch/arm/configs/rk3168_86v_codec_defconfig b/arch/arm/configs/rk3168_86v_codec_defconfig index 314ed280d07a..b697eea2de45 100644 --- a/arch/arm/configs/rk3168_86v_codec_defconfig +++ b/arch/arm/configs/rk3168_86v_codec_defconfig @@ -23,7 +23,6 @@ CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_ARCH_RK30=y CONFIG_DDR_INIT_CHANGE_FREQ=y CONFIG_DDR_SDRAM_FREQ=300 -# CONFIG_DDR_FREQ is not set # CONFIG_DDR_TEST is not set CONFIG_RK_CLOCK_PROC=y CONFIG_CLK_SWITCH_TO_32K=y @@ -173,20 +172,9 @@ CONFIG_NET_CLS_ACT=y CONFIG_NET_ACT_POLICE=y CONFIG_NET_ACT_GACT=y CONFIG_NET_ACT_MIRRED=y -CONFIG_BT=y -CONFIG_BT_L2CAP=y -CONFIG_BT_SCO=y -CONFIG_BT_RFCOMM=y -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=y -CONFIG_BT_HIDP=y -CONFIG_BT_HCIUART=y -CONFIG_BT_HCIUART_H4=y -CONFIG_BT_HCIUART_LL=y -CONFIG_BT_HCIBCM4325=y +CONFIG_CFG80211=y CONFIG_MAC80211=y CONFIG_RFKILL=y -CONFIG_RFKILL_RK=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y # CONFIG_FIRMWARE_IN_KERNEL is not set @@ -212,7 +200,7 @@ CONFIG_PHYLIB=y # CONFIG_NETDEV_1000 is not set # CONFIG_NETDEV_10000 is not set CONFIG_WLAN_80211=y -CONFIG_MT5931_MT6622=y +CONFIG_RTL8188EU=y CONFIG_USB_USBNET=y CONFIG_PPP=y CONFIG_PPP_MULTILINK=y @@ -241,17 +229,13 @@ CONFIG_TABLET_USB_HANWANG=y CONFIG_TABLET_USB_KBTAB=y CONFIG_TABLET_USB_WACOM=y CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_GT82X_IIC=y +CONFIG_TOUCHSCREEN_GSLX680_RK3168=y CONFIG_INPUT_MISC=y CONFIG_INPUT_KEYCHORD=y CONFIG_INPUT_UINPUT=y -CONFIG_GS_LIS3DH=y -CONFIG_GYRO_L3G4200D=y +CONFIG_GS_MMA7660=y CONFIG_SENSOR_DEVICE=y CONFIG_GSENSOR_DEVICE=y -CONFIG_COMPASS_DEVICE=y -CONFIG_COMPASS_AK8963=y -CONFIG_GYROSCOPE_DEVICE=y # CONFIG_SERIO is not set # CONFIG_CONSOLE_TRANSLATIONS is not set # CONFIG_LEGACY_PTYS is not set @@ -293,7 +277,6 @@ CONFIG_REGULATOR_ACT8846=y CONFIG_MEDIA_SUPPORT=y CONFIG_VIDEO_DEV=y CONFIG_SOC_CAMERA=y -CONFIG_SOC_CAMERA_OV2659=y CONFIG_SOC_CAMERA_GC0308=y CONFIG_VIDEO_RK29=y CONFIG_VIDEO_RK29_CAMMEM_ION=y @@ -306,7 +289,7 @@ CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set CONFIG_DISPLAY_SUPPORT=y -CONFIG_LCD_RK3168_AUO_A080SN03=y +CONFIG_LCD_E242868_1024X600=y CONFIG_FB_ROCKCHIP=y CONFIG_ONE_LCDC_DUAL_OUTPUT_INF=y CONFIG_LCDC_RK3066B=y @@ -322,7 +305,6 @@ CONFIG_SND=y # CONFIG_SND_ARM is not set CONFIG_SND_SOC=y CONFIG_SND_RK29_SOC=y -CONFIG_SND_RK29_SOC_I2S_2CH=y CONFIG_SND_I2S_DMA_EVENT_STATIC=y CONFIG_SND_RK29_SOC_ES8323=y CONFIG_SND_RK29_CODEC_SOC_SLAVE=y diff --git a/arch/arm/mach-rk30/board-rk3168-86v.c b/arch/arm/mach-rk30/board-rk3168-86v.c index c47c2127da93..e893551389dc 100755 --- a/arch/arm/mach-rk30/board-rk3168-86v.c +++ b/arch/arm/mach-rk30/board-rk3168-86v.c @@ -76,6 +76,9 @@ #include "board-rk3168-86v-camera.c" #include +#define RK3168_86V_CODEC + + static struct rk29_keys_button key_button[] = { { .desc = "play", @@ -166,6 +169,41 @@ struct ts_hw_data gslx680_info = { #endif +#if defined(CONFIG_TOUCHSCREEN_GSLX680_RK3168) +#define TOUCH_RESET_PIN RK30_PIN0_PB6 +#define TOUCH_EN_PIN NULL +#define TOUCH_INT_PIN RK30_PIN1_PB7 + +int gslx680_init_platform_hw(void) +{ + + if(gpio_request(TOUCH_RESET_PIN,NULL) != 0){ + gpio_free(TOUCH_RESET_PIN); + printk("gslx680_init_platform_hw gpio_request error\n"); + return -EIO; + } + if(gpio_request(TOUCH_INT_PIN,NULL) != 0){ + gpio_free(TOUCH_INT_PIN); + printk("gslx680_init_platform_hw gpio_request error\n"); + return -EIO; + } + gpio_direction_output(TOUCH_RESET_PIN, GPIO_HIGH); + mdelay(10); + gpio_set_value(TOUCH_RESET_PIN,GPIO_LOW); + mdelay(10); + gpio_set_value(TOUCH_RESET_PIN,GPIO_HIGH); + msleep(300); + return 0; + +} + +struct ts_hw_data gslx680_info = { + .reset_gpio = TOUCH_RESET_PIN, + .touch_en_gpio = TOUCH_INT_PIN, + .init_platform_hw = gslx680_init_platform_hw, +}; +#endif + #if defined (CONFIG_TOUCHSCREEN_86V_GT811_IIC) #define TOUCH_RESET_PIN RK30_PIN0_PB6 #define TOUCH_INT_PIN RK30_PIN1_PB7 @@ -404,8 +442,11 @@ static struct sensor_platform_data mma7660_info = { .irq_enable = 1, .poll_delay_ms = 30, .init_platform_hw = mma7660_init_platform_hw, + #ifdef RK3168_86V_CODEC + .orientation = {-1, 0, 0, 0, -1, 0, 0, 0, 1}, + #else .orientation = {0, -1, 0, -1, 0, 0, 0, 0, -1}, - + #endif }; #endif @@ -1819,6 +1860,14 @@ static struct i2c_board_info __initdata i2c2_info[] = { .platform_data =&gslx680_info, }, #endif +#if defined (CONFIG_TOUCHSCREEN_GSLX680_RK3168) + { + .type = "gslX680", + .addr = 0x40, + .flags = 0, + .platform_data =&gslx680_info, + }, +#endif #if defined (CONFIG_TOUCHSCREEN_86V_GT811_IIC) { .type = "gt811_ts", @@ -2038,6 +2087,8 @@ static void __init rk30_reserve(void) * @logic_volt : logic voltage arm requests depend on frequency * comments : min arm/logic voltage */ +#ifdef CONFIG_DVFS_WITH_UOC +//chenxing uoc static struct cpufreq_frequency_table dvfs_arm_table[] = { {.frequency = 312 * 1000, .index = 950 * 1000}, {.frequency = 504 * 1000, .index = 1000 * 1000}, @@ -2062,7 +2113,33 @@ static struct cpufreq_frequency_table dvfs_ddr_table[] = { {.frequency = 400 * 1000 + DDR_FREQ_NORMAL, .index = 1100 * 1000}, {.frequency = CPUFREQ_TABLE_END}, }; +#else +//chenliang +static struct cpufreq_frequency_table dvfs_arm_table[] = { + {.frequency = 312 * 1000, .index = 950 * 1000}, + {.frequency = 504 * 1000, .index = 1000 * 1000}, + {.frequency = 816 * 1000, .index = 1050 * 1000}, + {.frequency = 1008 * 1000, .index = 1125 * 1000}, + {.frequency = 1200 * 1000, .index = 1200 * 1000}, + {.frequency = CPUFREQ_TABLE_END}, +}; + +static struct cpufreq_frequency_table dvfs_gpu_table[] = { + {.frequency = 100 * 1000, .index = 1000 * 1000}, + {.frequency = 200 * 1000, .index = 1000 * 1000}, + {.frequency = 266 * 1000, .index = 1050 * 1000}, + {.frequency = 300 * 1000, .index = 1050 * 1000}, + {.frequency = 400 * 1000, .index = 1100 * 1000}, + {.frequency = CPUFREQ_TABLE_END}, +}; +static struct cpufreq_frequency_table dvfs_ddr_table[] = { + {.frequency = 200 * 1000 + DDR_FREQ_SUSPEND, .index = 1000 * 1000}, + {.frequency = 240 * 1000 + DDR_FREQ_VIDEO, .index = 1000 * 1000}, + {.frequency = 300 * 1000 + DDR_FREQ_NORMAL, .index = 1000 * 1000}, + {.frequency = CPUFREQ_TABLE_END}, +}; +#endif //#define DVFS_CPU_TABLE_SIZE (ARRAY_SIZE(dvfs_cpu_logic_table)) //static struct cpufreq_frequency_table cpu_dvfs_table[DVFS_CPU_TABLE_SIZE]; //static struct cpufreq_frequency_table dep_cpu2core_table[DVFS_CPU_TABLE_SIZE]; diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig index b0dceff4bb05..ca38400d250f 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig @@ -17,6 +17,9 @@ config CT36X_TS config TOUCHSCREEN_GSLX680 tristate "gslX680 touchscreen panel support " depends on I2C2_RK29 || I2C2_RK30 +config TOUCHSCREEN_GSLX680_RK3168 + tristate "gslX680 rk3168 touchscreen panel support " + depends on I2C2_RK29 || I2C2_RK30 config TOUCHSCREEN_XPT2046_SPI tristate "XPT2046 based touchscreens:SPI Interface" diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile index dfb8971ecebc..1af0c9501113 100644 --- a/drivers/input/touchscreen/Makefile +++ b/drivers/input/touchscreen/Makefile @@ -101,6 +101,7 @@ obj-$(CONFIG_TOUCHSCREEN_I30) += i30_ts.o obj-$(CONFIG_TOUCHSCREEN_BYD693X) += byd693x_ts.o obj-$(CONFIG_TOUCHSCREEN_FT5X0X) += ft5x0x.o obj-$(CONFIG_TOUCHSCREEN_GSLX680) += rockchip_gslX680.o +obj-$(CONFIG_TOUCHSCREEN_GSLX680_RK3168) += rockchip_gslX680_rk3168.o # Make VTL TouchScreen Driver obj-$(CONFIG_TOUCHSCREEN_CT36X) += ct36x_ts/ obj-$(CONFIG_TP_760_TS) += tp_760_ts.o diff --git a/drivers/input/touchscreen/rockchip_gslX680.c b/drivers/input/touchscreen/rockchip_gslX680.c old mode 100644 new mode 100755 index a94df8bceb43..a7586976cb0f --- a/drivers/input/touchscreen/rockchip_gslX680.c +++ b/drivers/input/touchscreen/rockchip_gslX680.c @@ -27,9 +27,11 @@ #include #include #include - +#ifdef CONFIG_MACH_RK3168_86V +#include +#else #include "rockchip_gslX680.h" - +#endif //#define GSL_DEBUG //#define GSL_TIMER #define REPORT_DATA_ANDROID_4_0 diff --git a/drivers/input/touchscreen/rockchip_gslX680_rk3168.c b/drivers/input/touchscreen/rockchip_gslX680_rk3168.c new file mode 100755 index 000000000000..64cd6bc376ba --- /dev/null +++ b/drivers/input/touchscreen/rockchip_gslX680_rk3168.c @@ -0,0 +1,1083 @@ +/* + * drivers/input/touchscreen/gslX680.c + * + * Copyright (c) 2012 Shanghai Basewin + * Guan Yuwei + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rockchip_gslX680_rk3168.h" + +//#define GSL_DEBUG +//#define GSL_TIMER +#define REPORT_DATA_ANDROID_4_0 + +//#define HAVE_TOUCH_KEY + +#define GSLX680_I2C_NAME "gslX680" +#define GSLX680_I2C_ADDR 0x40 + +#define IRQ_PORT RK2928_PIN1_PB0 +#define WAKE_PORT RK2928_PIN0_PD3 + +#define GSL_DATA_REG 0x80 +#define GSL_STATUS_REG 0xe0 +#define GSL_PAGE_REG 0xf0 + +#define PRESS_MAX 255 +#define MAX_FINGERS 5 +#define MAX_CONTACTS 10 +#define DMA_TRANS_LEN 0x20 +//#define FILTER_POINT +#ifdef FILTER_POINT +#define FILTER_MAX 6 +#endif + +#define I2C_SPEED 200*1000 + +#ifdef HAVE_TOUCH_KEY +static u16 key = 0; +static int key_state_flag = 0; +struct key_data { + u16 key; + u16 x_min; + u16 x_max; + u16 y_min; + u16 y_max; +}; + +const u16 key_array[]={ + KEY_BACK, + KEY_HOME, + KEY_MENU, + KEY_SEARCH, + }; +#define MAX_KEY_NUM (sizeof(key_array)/sizeof(key_array[0])) + +struct key_data gsl_key_data[MAX_KEY_NUM] = { + {KEY_BACK, 2048, 2048, 2048, 2048}, + {KEY_HOME, 2048, 2048, 2048, 2048}, + {KEY_MENU, 2048, 2048, 2048, 2048}, + {KEY_SEARCH, 2048, 2048, 2048, 2048}, +}; +#endif + +struct gsl_ts_data { + u8 x_index; + u8 y_index; + u8 z_index; + u8 id_index; + u8 touch_index; + u8 data_reg; + u8 status_reg; + u8 data_size; + u8 touch_bytes; + u8 update_data; + u8 touch_meta_data; + u8 finger_size; +}; + +static struct gsl_ts_data devices[] = { + { + .x_index = 6, + .y_index = 4, + .z_index = 5, + .id_index = 7, + .data_reg = GSL_DATA_REG, + .status_reg = GSL_STATUS_REG, + .update_data = 0x4, + .touch_bytes = 4, + .touch_meta_data = 4, + .finger_size = 70, + }, +}; + +struct gsl_ts { + struct i2c_client *client; + struct input_dev *input; + struct delayed_work work; + struct workqueue_struct *wq; + struct gsl_ts_data *dd; + u8 *touch_data; + u8 device_id; + u8 prev_touches; + bool is_suspended; + bool int_pending; + struct mutex sus_lock; +// uint32_t gpio_irq; + int irq; +#if defined(CONFIG_HAS_EARLYSUSPEND) + struct early_suspend early_suspend; +#endif +#ifdef GSL_TIMER + struct timer_list gsl_timer; +#endif + int reset_gpio; //lizhengwei + +}; + +#ifdef GSL_DEBUG +#define print_info(fmt, args...) \ + do{ \ + printk(fmt, ##args); \ + }while(0) +#else +#define print_info(fmt, args...) +#endif + +static int ts_global_reset_pin; //lizhengwei add + +static u32 id_sign[MAX_CONTACTS+1] = {0}; +static u8 id_state_flag[MAX_CONTACTS+1] = {0}; +static u8 id_state_old_flag[MAX_CONTACTS+1] = {0}; +static u16 x_old[MAX_CONTACTS+1] = {0}; +static u16 y_old[MAX_CONTACTS+1] = {0}; +static u16 x_new = 0; +static u16 y_new = 0; +#if 0 +static int gslX680_chip_init(void) +{ + if (WAKE_PORT > 0) { + gpio_free(WAKE_PORT); + if (gpio_request(WAKE_PORT, "gslx680 wake")) { + printk("pjf gpio_request(WAKE_PORT) error\n"); + goto exit_alloc_gpio_wake_failed; + } + } + gpio_direction_output(WAKE_PORT, 0); + gpio_set_value(WAKE_PORT,GPIO_HIGH); + + if (IRQ_PORT > 0) { + gpio_free(IRQ_PORT); + if (gpio_request(IRQ_PORT, "gslx680 irq")) { + printk("pjf gpio_request(IRQ_PORT) error\n"); + goto exit_alloc_gpio_irg_failed; + } + } + gpio_pull_updown(IRQ_PORT, 1); + + msleep(20); + return 0; + +exit_alloc_gpio_irg_failed: + gpio_free(IRQ_PORT); +exit_alloc_gpio_wake_failed: + gpio_free(WAKE_PORT); + return -EIO; +} +#endif +static int gslX680_shutdown_low(void) +{ + gpio_direction_output(ts_global_reset_pin, 0); + gpio_set_value(ts_global_reset_pin,GPIO_LOW); + return 0; +} + +static int gslX680_shutdown_high(void) +{ + gpio_direction_output(ts_global_reset_pin, 0); + gpio_set_value(ts_global_reset_pin,GPIO_HIGH); + return 0; +} + +static inline u16 join_bytes(u8 a, u8 b) +{ + u16 ab = 0; + ab = ab | a; + ab = ab << 8 | b; + return ab; +} + +static u32 gsl_read_interface(struct i2c_client *client, u8 reg, u8 *buf, u32 num) +{ + struct i2c_msg xfer_msg[2]; + + xfer_msg[0].addr = client->addr; + xfer_msg[0].len = 1; + xfer_msg[0].flags = client->flags & I2C_M_TEN; + xfer_msg[0].buf = ® + + xfer_msg[1].addr = client->addr; + xfer_msg[1].len = num; + xfer_msg[1].flags |= I2C_M_RD; + xfer_msg[1].buf = buf; + + if (reg < 0x80) { + i2c_transfer(client->adapter, xfer_msg, ARRAY_SIZE(xfer_msg)); + msleep(5); + } + + return i2c_transfer(client->adapter, xfer_msg, ARRAY_SIZE(xfer_msg)) == ARRAY_SIZE(xfer_msg) ? 0 : -EFAULT; +} + +static u32 gsl_write_interface(struct i2c_client *client, const u8 reg, u8 *buf, u32 num) +{ + struct i2c_msg xfer_msg[1]; + + buf[0] = reg; + + xfer_msg[0].addr = client->addr; + xfer_msg[0].len = num + 1; + xfer_msg[0].flags = client->flags & I2C_M_TEN; + xfer_msg[0].buf = buf; + xfer_msg[0].scl_rate = I2C_SPEED; + + return i2c_transfer(client->adapter, xfer_msg, 1) == 1 ? 0 : -EFAULT; +} + +static int gsl_ts_write(struct i2c_client *client, u8 addr, u8 *pdata, int datalen) +{ + int ret = 0; + u8 tmp_buf[128]; + unsigned int bytelen = 0; + if (datalen > 125) + { + printk("%s too big datalen = %d!\n", __func__, datalen); + return -1; + } + + tmp_buf[0] = addr; + bytelen++; + + if (datalen != 0 && pdata != NULL) + { + memcpy(&tmp_buf[bytelen], pdata, datalen); + bytelen += datalen; + } + + ret = i2c_master_send(client, tmp_buf, bytelen); + return ret; +} + +static int gsl_ts_read(struct i2c_client *client, u8 addr, u8 *pdata, unsigned int datalen) +{ + int ret = 0; + + if (datalen > 126) + { + printk("%s too big datalen = %d!\n", __func__, datalen); + return -1; + } + + ret = gsl_ts_write(client, addr, NULL, 0); + if (ret < 0) + { + printk("%s set data address fail!\n", __func__); + return ret; + } + + return i2c_master_recv(client, pdata, datalen); +} + + +static __inline__ void fw2buf(u8 *buf, const u32 *fw) +{ + u32 *u32_buf = (int *)buf; + *u32_buf = *fw; +} + +static void gsl_load_fw(struct i2c_client *client) +{ + u8 buf[DMA_TRANS_LEN*4 + 1] = {0}; + u8 send_flag = 1; + u8 *cur = buf + 1; + u32 source_line = 0; + u32 source_len; + u8 read_buf[4] = {0}; + struct fw_data *ptr_fw; + + printk("=============gsl_load_fw start==============\n"); + +#ifdef GSL1680E_COMPATIBLE + msleep(50); + gsl_ts_read(client, 0xfc, read_buf, 4); + //printk("read 0xfc = %x %x %x %x\n", read_buf[3], read_buf[2], read_buf[1], read_buf[0]); + + if(read_buf[2] != 0x82 && read_buf[2] != 0x88) + { + msleep(100); + gsl_ts_read(client, 0xfc, read_buf, 4); + //printk("read 0xfc = %x %x %x %x\n", read_buf[3], read_buf[2], read_buf[1], read_buf[0]); + } + + if(read_buf[2] == 0x82) + { + ptr_fw = GSL1680E_FW; + source_len = ARRAY_SIZE(GSL1680E_FW); + } + else +#endif + { + ptr_fw = GSLX680_FW; + source_len = ARRAY_SIZE(GSLX680_FW); + } + + for (source_line = 0; source_line < source_len; source_line++) + { + /* init page trans, set the page val */ + if (GSL_PAGE_REG == ptr_fw[source_line].offset) + { + fw2buf(cur, &ptr_fw[source_line].val); + gsl_write_interface(client, GSL_PAGE_REG, buf, 4); + send_flag = 1; + } + else + { + if (1 == send_flag % (DMA_TRANS_LEN < 0x20 ? DMA_TRANS_LEN : 0x20)) + buf[0] = (u8)ptr_fw[source_line].offset; + + fw2buf(cur, &ptr_fw[source_line].val); + cur += 4; + + if (0 == send_flag % (DMA_TRANS_LEN < 0x20 ? DMA_TRANS_LEN : 0x20)) + { + gsl_write_interface(client, buf[0], buf, cur - buf - 1); + cur = buf + 1; + } + + send_flag++; + } + } + + printk("=============gsl_load_fw end==============\n"); + +} + + +static void test_i2c(struct i2c_client *client) +{ + u8 read_buf = 0; + u8 write_buf = 0x12; + int ret; + ret = gsl_ts_read( client, 0xf0, &read_buf, sizeof(read_buf) ); + if (ret < 0) + { + pr_info("I2C transfer error!\n"); + } + else + { + pr_info("I read reg 0xf0 is %x\n", read_buf); + } + msleep(10); + + ret = gsl_ts_write(client, 0xf0, &write_buf, sizeof(write_buf)); + if (ret < 0) + { + pr_info("I2C transfer error!\n"); + } + else + { + pr_info("I write reg 0xf0 0x12\n"); + } + msleep(10); + + ret = gsl_ts_read( client, 0xf0, &read_buf, sizeof(read_buf) ); + if (ret < 0 ) + { + pr_info("I2C transfer error!\n"); + } + else + { + pr_info("I read reg 0xf0 is 0x%x\n", read_buf); + } + msleep(10); + +} + + +static void startup_chip(struct i2c_client *client) +{ + u8 tmp = 0x00; + gsl_ts_write(client, 0xe0, &tmp, 1); + msleep(10); +} + +static void reset_chip(struct i2c_client *client) +{ + u8 buf[4] = {0x00}; + u8 tmp = 0x88; + gsl_ts_write(client, 0xe0, &tmp, sizeof(tmp)); + msleep(10); + + tmp = 0x04; + gsl_ts_write(client, 0xe4, &tmp, sizeof(tmp)); + msleep(10); + + gsl_ts_write(client, 0xbc, buf, sizeof(buf)); + msleep(10); +} + +static void init_chip(struct i2c_client *client) +{ + gslX680_shutdown_low(); + msleep(50); + gslX680_shutdown_high(); + msleep(30); + reset_chip(client); + gsl_load_fw(client); + startup_chip(client); + reset_chip(client); + startup_chip(client); +} + +static void check_mem_data(struct i2c_client *client) +{ + char write_buf; + char read_buf[4] = {0}; + + msleep(30); + write_buf = 0x00; + gsl_ts_write(client,0xf0, &write_buf, sizeof(write_buf)); + gsl_ts_read(client,0x00, read_buf, sizeof(read_buf)); + gsl_ts_read(client,0x00, read_buf, sizeof(read_buf)); + if (read_buf[3] != 0x1 || read_buf[2] != 0 || read_buf[1] != 0 || read_buf[0] != 0) + { + printk("!!!!!!!!!!!page: %x offset: %x val: %x %x %x %x\n",0x0, 0x0, read_buf[3], read_buf[2], read_buf[1], read_buf[0]); + init_chip(client); + } +} + +#ifdef FILTER_POINT +static void filter_point(u16 x, u16 y , u8 id) +{ + u16 x_err =0; + u16 y_err =0; + u16 filter_step_x = 0, filter_step_y = 0; + + id_sign[id] = id_sign[id] + 1; + if(id_sign[id] == 1) + { + x_old[id] = x; + y_old[id] = y; + } + + x_err = x > x_old[id] ? (x -x_old[id]) : (x_old[id] - x); + y_err = y > y_old[id] ? (y -y_old[id]) : (y_old[id] - y); + + if( (x_err > FILTER_MAX && y_err > FILTER_MAX/3) || (x_err > FILTER_MAX/3 && y_err > FILTER_MAX) ) + { + filter_step_x = x_err; + filter_step_y = y_err; + } + else + { + if(x_err > FILTER_MAX) + filter_step_x = x_err; + if(y_err> FILTER_MAX) + filter_step_y = y_err; + } + + if(x_err <= 2*FILTER_MAX && y_err <= 2*FILTER_MAX) + { + filter_step_x >>= 2; + filter_step_y >>= 2; + } + else if(x_err <= 3*FILTER_MAX && y_err <= 3*FILTER_MAX) + { + filter_step_x >>= 1; + filter_step_y >>= 1; + } + + x_new = x > x_old[id] ? (x_old[id] + filter_step_x) : (x_old[id] - filter_step_x); + y_new = y > y_old[id] ? (y_old[id] + filter_step_y) : (y_old[id] - filter_step_y); + + x_old[id] = x_new; + y_old[id] = y_new; +} +#else + +static void record_point(u16 x, u16 y , u8 id) +{ + u16 x_err =0; + u16 y_err =0; + + id_sign[id]=id_sign[id]+1; + + if(id_sign[id]==1){ + x_old[id]=x; + y_old[id]=y; + } + + x = (x_old[id] + x)/2; + y = (y_old[id] + y)/2; + + if(x>x_old[id]){ + x_err=x -x_old[id]; + } + else{ + x_err=x_old[id]-x; + } + + if(y>y_old[id]){ + y_err=y -y_old[id]; + } + else{ + y_err=y_old[id]-y; + } + + if( (x_err > 3 && y_err > 1) || (x_err > 1 && y_err > 3) ){ + x_new = x; x_old[id] = x; + y_new = y; y_old[id] = y; + } + else{ + if(x_err > 3){ + x_new = x; x_old[id] = x; + } + else + x_new = x_old[id]; + if(y_err> 3){ + y_new = y; y_old[id] = y; + } + else + y_new = y_old[id]; + } + + if(id_sign[id]==1){ + x_new= x_old[id]; + y_new= y_old[id]; + } + +} +#endif + +#ifdef HAVE_TOUCH_KEY +static void report_key(struct gsl_ts *ts, u16 x, u16 y) +{ + u16 i = 0; + + for(i = 0; i < MAX_KEY_NUM; i++) + { + if((gsl_key_data[i].x_min < x) && (x < gsl_key_data[i].x_max)&&(gsl_key_data[i].y_min < y) && (y < gsl_key_data[i].y_max)) + { + key = gsl_key_data[i].key; + input_report_key(ts->input, key, 1); + input_sync(ts->input); + key_state_flag = 1; + break; + } + } +} +#endif + +static void report_data(struct gsl_ts *ts, u16 x, u16 y, u8 pressure, u8 id) +{ + swap(x, y); + + print_info("#####id=%d,x=%d,y=%d######\n",id,x,y); + + if(x>=SCREEN_MAX_X||y>=SCREEN_MAX_Y) + { + #ifdef HAVE_TOUCH_KEY + report_key(ts,x,y); + #endif + return; + } + +#ifdef REPORT_DATA_ANDROID_4_0 + input_mt_slot(ts->input, id); + input_report_abs(ts->input, ABS_MT_TRACKING_ID, id); + input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR, pressure); + input_report_abs(ts->input, ABS_MT_POSITION_X, x); + input_report_abs(ts->input, ABS_MT_POSITION_Y, y); + input_report_abs(ts->input, ABS_MT_WIDTH_MAJOR, 1); +#else + input_report_abs(ts->input, ABS_MT_TRACKING_ID, id); + input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR, pressure); + input_report_abs(ts->input, ABS_MT_POSITION_X,x); + input_report_abs(ts->input, ABS_MT_POSITION_Y, y); + input_report_abs(ts->input, ABS_MT_WIDTH_MAJOR, 1); + input_mt_sync(ts->input); +#endif +} + +static void process_gslX680_data(struct gsl_ts *ts) +{ + u8 id, touches; + u16 x, y; + int i = 0; + + touches = ts->touch_data[ts->dd->touch_index]; + for(i=1;i<=MAX_CONTACTS;i++) + { + if(touches == 0) + id_sign[i] = 0; + id_state_flag[i] = 0; + } + for(i= 0;i < (touches > MAX_FINGERS ? MAX_FINGERS : touches);i ++) + { + x = join_bytes( ( ts->touch_data[ts->dd->x_index + 4 * i + 1] & 0xf), + ts->touch_data[ts->dd->x_index + 4 * i]); + y = join_bytes(ts->touch_data[ts->dd->y_index + 4 * i + 1], + ts->touch_data[ts->dd->y_index + 4 * i ]); + id = ts->touch_data[ts->dd->id_index + 4 * i] >> 4; + + if(1 <=id && id <= MAX_CONTACTS) + { + #ifdef FILTER_POINT + filter_point(x, y ,id); + #else + record_point(x, y , id); + #endif + report_data(ts, x_new, y_new, 50, id); + id_state_flag[id] = 1; + } + } + for(i=1;i<=MAX_CONTACTS;i++) + { + if( (0 == touches) || ((0 != id_state_old_flag[i]) && (0 == id_state_flag[i])) ) + { + #ifdef REPORT_DATA_ANDROID_4_0 + input_mt_slot(ts->input, i); + input_report_abs(ts->input, ABS_MT_TRACKING_ID, -1); + input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, false); + #endif + id_sign[i]=0; + } + id_state_old_flag[i] = id_state_flag[i]; + } +#ifndef REPORT_DATA_ANDROID_4_0 + if(0 == touches) + { + input_mt_sync(ts->input); + #ifdef HAVE_TOUCH_KEY + if(key_state_flag) + { + input_report_key(ts->input, key, 0); + input_sync(ts->input); + key_state_flag = 0; + } + #endif + } +#endif + input_sync(ts->input); + ts->prev_touches = touches; +} + + +static void gsl_ts_xy_worker(struct work_struct *work) +{ + int rc; + u8 read_buf[4] = {0}; + + struct gsl_ts *ts = container_of(work, struct gsl_ts,work); + + print_info("---gsl_ts_xy_worker---\n"); + + /* read data from DATA_REG */ + rc = gsl_ts_read(ts->client, 0x80, ts->touch_data, ts->dd->data_size); + print_info("---touches: %d ---\n",ts->touch_data[0]); + + if (rc < 0) + { + dev_err(&ts->client->dev, "read failed\n"); + goto schedule; + } + + if (ts->touch_data[ts->dd->touch_index] == 0xff) { + goto schedule; + } + + rc = gsl_ts_read( ts->client, 0xbc, read_buf, sizeof(read_buf)); + if (rc < 0) + { + dev_err(&ts->client->dev, "read 0xbc failed\n"); + goto schedule; + } + print_info("//////// reg %x : %x %x %x %x\n",0xbc, read_buf[3], read_buf[2], read_buf[1], read_buf[0]); + + if (read_buf[3] == 0 && read_buf[2] == 0 && read_buf[1] == 0 && read_buf[0] == 0) + { + process_gslX680_data(ts); + } + else + { + reset_chip(ts->client); + startup_chip(ts->client); + } + +schedule: + enable_irq(ts->irq); + +} + +static irqreturn_t gsl_ts_irq(int irq, void *dev_id) +{ + struct gsl_ts *ts = dev_id; + + print_info("==========GSLX680 Interrupt============\n"); + + disable_irq_nosync(ts->irq); + +// if (!work_pending(&ts->work)) + { + queue_delayed_work(ts->wq, &ts->work,msecs_to_jiffies(10)); + } + + return IRQ_HANDLED; + +} + +#ifdef GSL_TIMER +static void gsl_timer_handle(unsigned long data) +{ + struct gsl_ts *ts = (struct gsl_ts *)data; + +#ifdef GSL_DEBUG + printk("----------------gsl_timer_handle-----------------\n"); +#endif + + disable_irq_nosync(ts->irq); + check_mem_data(ts->client); + ts->gsl_timer.expires = jiffies + 3 * HZ; + add_timer(&ts->gsl_timer); + enable_irq(ts->irq); + +} +#endif + +static int gsl_ts_init_ts(struct i2c_client *client, struct gsl_ts *ts) +{ + struct input_dev *input_device; + int i, rc = 0; + + printk("[GSLX680] Enter %s\n", __func__); + + + ts->dd = &devices[ts->device_id]; + + if (ts->device_id == 0) { + ts->dd->data_size = MAX_FINGERS * ts->dd->touch_bytes + ts->dd->touch_meta_data; + ts->dd->touch_index = 0; + } + + ts->touch_data = kzalloc(ts->dd->data_size, GFP_KERNEL); + if (!ts->touch_data) { + pr_err("%s: Unable to allocate memory\n", __func__); + return -ENOMEM; + } + + ts->prev_touches = 0; + + input_device = input_allocate_device(); + if (!input_device) { + rc = -ENOMEM; + goto error_alloc_dev; + } + + ts->input = input_device; + input_device->name = GSLX680_I2C_NAME; + input_device->id.bustype = BUS_I2C; + input_device->dev.parent = &client->dev; + input_set_drvdata(input_device, ts); + +#ifdef REPORT_DATA_ANDROID_4_0 + __set_bit(EV_ABS, input_device->evbit); + __set_bit(EV_KEY, input_device->evbit); + __set_bit(EV_REP, input_device->evbit); + __set_bit(INPUT_PROP_DIRECT, input_device->propbit); + input_mt_init_slots(input_device, (MAX_CONTACTS+1)); +#else + input_set_abs_params(input_device,ABS_MT_TRACKING_ID, 0, (MAX_CONTACTS+1), 0, 0); + set_bit(EV_ABS, input_device->evbit); + set_bit(EV_KEY, input_device->evbit); +#endif + +#ifdef HAVE_TOUCH_KEY + input_device->evbit[0] = BIT_MASK(EV_KEY); + //input_device->evbit[0] = BIT_MASK(EV_SYN) | BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); + for (i = 0; i < MAX_KEY_NUM; i++) + set_bit(key_array[i], input_device->keybit); +#endif + + set_bit(ABS_MT_POSITION_X, input_device->absbit); + set_bit(ABS_MT_POSITION_Y, input_device->absbit); + set_bit(ABS_MT_TOUCH_MAJOR, input_device->absbit); + set_bit(ABS_MT_WIDTH_MAJOR, input_device->absbit); + + input_set_abs_params(input_device,ABS_MT_POSITION_X, 0, SCREEN_MAX_X, 0, 0); + input_set_abs_params(input_device,ABS_MT_POSITION_Y, 0, SCREEN_MAX_Y, 0, 0); + input_set_abs_params(input_device,ABS_MT_TOUCH_MAJOR, 0, PRESS_MAX, 0, 0); + input_set_abs_params(input_device,ABS_MT_WIDTH_MAJOR, 0, 200, 0, 0); + + client->irq = ts->irq; //IRQ_PORT, + //ts->irq = client->irq; + + ts->wq = create_singlethread_workqueue("kworkqueue_ts"); + if (!ts->wq) { + dev_err(&client->dev, "Could not create workqueue\n"); + goto error_wq_create; + } + flush_workqueue(ts->wq); + + INIT_DELAYED_WORK(&ts->work, gsl_ts_xy_worker); + + rc = input_register_device(input_device); + if (rc) + goto error_unreg_device; + + return 0; + +error_unreg_device: + destroy_workqueue(ts->wq); +error_wq_create: + input_free_device(input_device); +error_alloc_dev: + kfree(ts->touch_data); + return rc; +} + +static int gsl_ts_suspend(struct device *dev) +{ + struct gsl_ts *ts = dev_get_drvdata(dev); + int rc = 0; + + printk("I'am in gsl_ts_suspend() start\n"); + +#ifdef GSL_TIMER + printk( "gsl_ts_suspend () : delete gsl_timer\n"); + + del_timer(&ts->gsl_timer); +#endif + disable_irq_nosync(ts->irq); + + gslX680_shutdown_low(); + + return 0; +} + +static int gsl_ts_resume(struct device *dev) +{ + struct gsl_ts *ts = dev_get_drvdata(dev); + int rc = 0; + + printk("I'am in gsl_ts_resume() start\n"); + + gslX680_shutdown_low(); + msleep(50); + gslX680_shutdown_high(); + msleep(30); + reset_chip(ts->client); + startup_chip(ts->client); + check_mem_data(ts->client); + +#ifdef GSL_TIMER + printk( "gsl_ts_resume () : add gsl_timer\n"); + + init_timer(&ts->gsl_timer); + ts->gsl_timer.expires = jiffies + 3 * HZ; + ts->gsl_timer.function = &gsl_timer_handle; + ts->gsl_timer.data = (unsigned long)ts; + add_timer(&ts->gsl_timer); +#endif + + enable_irq(ts->irq); + + return 0; +} + +#ifdef CONFIG_HAS_EARLYSUSPEND +static void gsl_ts_early_suspend(struct early_suspend *h) +{ + struct gsl_ts *ts = container_of(h, struct gsl_ts, early_suspend); + printk("[GSL1680] Enter %s\n", __func__); + gsl_ts_suspend(&ts->client->dev); +} + +static void gsl_ts_late_resume(struct early_suspend *h) +{ + struct gsl_ts *ts = container_of(h, struct gsl_ts, early_suspend); + printk("[GSL1680] Enter %s\n", __func__); + gsl_ts_resume(&ts->client->dev); +} +#endif + +static int __devinit gsl_ts_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct ts_hw_data *pdata = client->dev.platform_data; + + struct gsl_ts *ts; + int rc; + + printk("GSLX680 Enter %s\n", __func__); + if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { + dev_err(&client->dev, "I2C functionality not supported\n"); + return -ENODEV; + } + + ts = kzalloc(sizeof(*ts), GFP_KERNEL); + if (!ts) + return -ENOMEM; + printk("==kzalloc success=\n"); + + ts->client = client; + ts->device_id = id->driver_data; + + ts->is_suspended = false; + ts->int_pending = false; + ts->reset_gpio = pdata->reset_gpio; //lizhengwei + ts->irq= gpio_to_irq(pdata->touch_en_gpio); //lizhengwei + mutex_init(&ts->sus_lock); + +ts_global_reset_pin=ts->reset_gpio; + + i2c_set_clientdata(client, ts); + + if (pdata->init_platform_hw) + pdata->init_platform_hw(); + + rc = gsl_ts_init_ts(client, ts); + if (rc < 0) { + dev_err(&client->dev, "GSLX680 init failed\n"); + goto error_mutex_destroy; + } + + rc= request_irq(client->irq, gsl_ts_irq, IRQF_TRIGGER_RISING, client->name, ts); + if (rc < 0) { + printk( "gsl_probe: request irq failed\n"); + goto error_req_irq_fail; + } + + //lizhengwei add + if(1) + { + u8 read_buf = 0; + int ret; + ret = gsl_ts_read( client, 0xf0, &read_buf, sizeof(read_buf) ); + if (ret < 0) + { + pr_info("gslx680 I2C transfer error!\n"); + goto error_req_irq_fail; + } + } + + + //gslX680_chip_init(); + init_chip(ts->client); + check_mem_data(ts->client); + + +#ifdef GSL_TIMER + printk( "gsl_ts_probe () : add gsl_timer\n"); + + init_timer(&ts->gsl_timer); + ts->gsl_timer.expires = jiffies + 3 * HZ; //¶¨Ê±3 ÃëÖÓ + ts->gsl_timer.function = &gsl_timer_handle; + ts->gsl_timer.data = (unsigned long)ts; + add_timer(&ts->gsl_timer); +#endif + + /* create debug attribute */ + //rc = device_create_file(&ts->input->dev, &dev_attr_debug_enable); + +#ifdef CONFIG_HAS_EARLYSUSPEND + ts->early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN + 1; + ts->early_suspend.suspend = gsl_ts_early_suspend; + ts->early_suspend.resume = gsl_ts_late_resume; + register_early_suspend(&ts->early_suspend); +#endif + + printk("[GSLX680] End %s\n", __func__); + + return 0; + +//exit_set_irq_mode: +error_req_irq_fail: + free_irq(ts->irq, ts); + +error_mutex_destroy: + mutex_destroy(&ts->sus_lock); + input_free_device(ts->input); + kfree(ts); + return rc; +} + +static int __devexit gsl_ts_remove(struct i2c_client *client) +{ + struct gsl_ts *ts = i2c_get_clientdata(client); + printk("==gsl_ts_remove=\n"); + +#ifdef CONFIG_HAS_EARLYSUSPEND + unregister_early_suspend(&ts->early_suspend); +#endif + + device_init_wakeup(&client->dev, 0); + cancel_delayed_work_sync(&ts->work); + free_irq(ts->irq, ts); + destroy_workqueue(ts->wq); + input_unregister_device(ts->input); + mutex_destroy(&ts->sus_lock); + + //device_remove_file(&ts->input->dev, &dev_attr_debug_enable); + + kfree(ts->touch_data); + kfree(ts); + + return 0; +} + +static const struct i2c_device_id gsl_ts_id[] = { + {GSLX680_I2C_NAME, 0}, + {} +}; +MODULE_DEVICE_TABLE(i2c, gsl_ts_id); + + +static struct i2c_driver gsl_ts_driver = { + .driver = { + .name = GSLX680_I2C_NAME, + .owner = THIS_MODULE, + }, +#ifndef CONFIG_HAS_EARLYSUSPEND + .suspend = gsl_ts_suspend, + .resume = gsl_ts_resume, +#endif + .probe = gsl_ts_probe, + .remove = __devexit_p(gsl_ts_remove), + .id_table = gsl_ts_id, +}; + +static int __init gsl_ts_init(void) +{ + int ret; + printk("==gsl_ts_init==\n"); + ret = i2c_add_driver(&gsl_ts_driver); + printk("ret=%d\n",ret); + return ret; +} +static void __exit gsl_ts_exit(void) +{ + printk("==gsl_ts_exit==\n"); + i2c_del_driver(&gsl_ts_driver); + return; +} + +module_init(gsl_ts_init); +module_exit(gsl_ts_exit); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("GSLX680 touchscreen controller driver"); +MODULE_AUTHOR("Guan Yuwei, guanyuwei@basewin.com"); +MODULE_ALIAS("platform:gsl_ts"); diff --git a/drivers/input/touchscreen/rockchip_gslX680_rk3168.h b/drivers/input/touchscreen/rockchip_gslX680_rk3168.h new file mode 100755 index 000000000000..82f046fd3233 --- /dev/null +++ b/drivers/input/touchscreen/rockchip_gslX680_rk3168.h @@ -0,0 +1,5504 @@ +#ifndef _GSLX680_H_ +#define _GSLX680_H_ + + +#define SCREEN_MAX_X 1024 +#define SCREEN_MAX_Y 600 + +#define GSL1680E_COMPATIBLE +struct fw_data +{ + u32 offset : 8; + u32 : 0; + u32 val; +}; + +#ifdef GSL1680E_COMPATIBLE +static const struct fw_data GSL1680E_FW[] = { +//GSL_1680E+1688E+2681B+2682B_V1.3.4_2013.02.28 +{0xf0,0x3}, +{0x00,0xa5a5ffc0}, +{0x04,0x00000000}, +{0x08,0xe810c4e1}, +{0x0c,0xd3dd7f4d}, +{0x10,0xd7c56634}, +{0x14,0xe3505a2a}, +{0x18,0x514d494f}, +{0x1c,0x84a36ccb}, +{0x20,0x00000000}, +{0x24,0x00000000}, +{0x28,0x00000000}, +{0x2c,0x00000000}, +{0x30,0x00001000}, +{0x34,0x00000000}, +{0x38,0x00000000}, +{0x3c,0x00000000}, +{0x40,0x00000001}, +{0x44,0x00000000}, +{0x48,0x00000000}, +{0x4c,0x00000000}, +{0x50,0x00000000}, +{0x54,0x01020304}, +{0x58,0x05060708}, +{0x5c,0x090a0b0c}, +{0x60,0x0d0e0e0f}, +{0x64,0x10111213}, +{0x68,0x14151617}, +{0x6c,0x18191a1b}, +{0x70,0x1b1c1e1f}, +{0x74,0x00000000}, +{0x78,0x00010000}, +{0x7c,0x8c846af3}, +{0xf0,0x4}, +{0x00,0x00000000}, +{0x04,0x00000000}, +{0x08,0x00000000}, +{0x0c,0x00000000}, +{0x10,0x00000000}, +{0x14,0x00000000}, +{0x18,0x00000000}, +{0x1c,0x00000000}, +{0x20,0x00000000}, +{0x24,0x00000000}, +{0x28,0x00000000}, +{0x2c,0x00000000}, +{0x30,0x00002400}, +{0x34,0x00000000}, +{0x38,0x00000000}, +{0x3c,0x00000000}, +{0x40,0x00000000}, +{0x44,0x00000002}, +{0x48,0x00000001}, +{0x4c,0x00004000}, +{0x50,0x00000000}, +{0x54,0x00010202}, +{0x58,0x03040405}, +{0x5c,0x06070808}, +{0x60,0x090b0b0c}, +{0x64,0x0d0e0f10}, +{0x68,0x11121415}, +{0x6c,0x1617191a}, +{0x70,0x1a1c1d1f}, +{0x74,0x00000000}, +{0x78,0x80808080}, +{0x7c,0x8c846af3}, +{0xf0,0x5}, +{0x00,0xf3b18989}, +{0x04,0x00000005}, +{0x08,0x000001f4}, +{0x0c,0x7d7d807d}, +{0x10,0x00000000}, +{0x14,0x00000000}, +{0x18,0x00000fff}, +{0x1c,0x10350007}, +{0x20,0x10000000}, +{0x24,0x00000000}, +{0x28,0x00000000}, +{0x2c,0x00000400}, +{0x30,0x00808080}, +{0x34,0x80808080}, +{0x38,0x80808080}, +{0x3c,0x80808080}, +{0x40,0x80808080}, +{0x44,0x80808080}, +{0x48,0x80808080}, +{0x4c,0x80808080}, +{0x50,0x000005dc}, +{0x54,0x00010203}, +{0x58,0x04050506}, +{0x5c,0x07080809}, +{0x60,0x0a0b0c0d}, +{0x64,0x0d0f1011}, +{0x68,0x12131415}, +{0x6c,0x1617191a}, +{0x70,0x1a1c1e1f}, +{0x74,0x00000001}, +{0x78,0x0000000f}, +{0x7c,0x0000000a}, +{0xf0,0x6}, +{0x00,0x0000000f}, +{0x04,0x00000000}, +{0x08,0x0000000a}, +{0x0c,0x00000000}, +{0x10,0x00000032}, +{0x14,0x00000032}, +{0x18,0x00000000}, +{0x1c,0x00000001}, +{0x20,0x00002904}, +{0x24,0x00000258}, +{0x28,0x00000400}, +{0x2c,0xf8010015}, +{0x30,0xf8010015}, +{0x34,0x00000003}, +{0x38,0x00000003}, +{0x3c,0x00000fff}, +{0x40,0x80000000}, +{0x44,0x001c001c}, +{0x48,0x00000fff}, +{0x4c,0x00000004}, +{0x50,0x00020001}, +{0x54,0x00000000}, +{0x58,0x00001000}, +{0x5c,0x12492488}, +{0x60,0x00000000}, +{0x64,0x00000000}, +{0x68,0x00000000}, +{0x6c,0x00000000}, +{0x70,0x00000000}, +{0x74,0x0000014f}, +{0x78,0x00000032}, +{0x7c,0x00000000}, +{0xf0,0x7}, +{0x00,0x04010700}, +{0x04,0x06030902}, +{0x08,0x0805040a}, +{0x0c,0x07110610}, +{0x10,0x09130812}, +{0x14,0x00543216}, +{0x18,0x007890ab}, +{0x1c,0x00321094}, +{0x20,0x005678ab}, +{0x24,0xff080010}, +{0x28,0xff080120}, +{0x2c,0xff080140}, +{0x30,0xff080160}, +{0x34,0x000000c8}, +{0x38,0x000000ad}, +{0x3c,0x00000092}, +{0x40,0x00000000}, +{0x44,0x00000100}, +{0x48,0x00000000}, +{0x4c,0x00000000}, +{0x50,0x00000000}, +{0x54,0x00000004}, +{0x58,0x00040000}, +{0x5c,0x00090005}, +{0x60,0x000d000a}, +{0x64,0x000e000e}, +{0x68,0x00040000}, +{0x6c,0x00040000}, +{0x70,0x00030000}, +{0x74,0x00000000}, +{0x78,0x00432105}, +{0x7c,0x006789ab}, +{0xf0,0x8}, +{0x00,0x026f028f}, +{0x04,0x02af02cf}, +{0x08,0x02ef230f}, +{0x0c,0x232f234f}, +{0x10,0x21f321f4}, +{0x14,0x41f541f6}, +{0x18,0x41f741f8}, +{0x1c,0x71f9022f}, +{0x20,0x024f036f}, +{0x24,0x01f001f1}, +{0x28,0x01f2020f}, +{0x2c,0x01fa0000}, +{0x30,0x00000000}, +{0x34,0x00000000}, +{0x38,0x00000000}, +{0x3c,0x000043ef}, +{0x40,0x02040608}, +{0x44,0x0a000000}, +{0x48,0x00000000}, +{0x4c,0x01030507}, +{0x50,0x09000000}, +{0x54,0x00000000}, +{0x58,0x00000000}, +{0x5c,0x00000008}, +{0x60,0x00000000}, +{0x64,0x00000000}, +{0x68,0x00000000}, +{0x6c,0x00000000}, +{0x70,0x00000000}, +{0x74,0x00000000}, +{0x78,0x00000000}, +{0x7c,0x0000000a}, +{0xf0,0x9}, +{0x00,0xff080094}, +{0x04,0x00070011}, +{0x08,0xff080090}, +{0x0c,0x00040000}, +{0x10,0xfffffff0}, +{0x14,0x00000000}, +{0x18,0xfffffff0}, +{0x1c,0x00000000}, +{0x20,0xfffffff0}, +{0x24,0x00000000}, +{0x28,0xfffffff0}, +{0x2c,0x00000000}, +{0x30,0xfffffff0}, +{0x34,0x00000000}, +{0x38,0xfffffff0}, +{0x3c,0x00000000}, +{0x40,0xfffffff0}, +{0x44,0x00000000}, +{0x48,0xfffffff0}, +{0x4c,0x00000000}, +{0x50,0xfffffff0}, +{0x54,0x00000000}, +{0x58,0xfffffff0}, +{0x5c,0x00000000}, +{0x60,0xfffffff0}, +{0x64,0x00000000}, +{0x68,0xfffffff0}, +{0x6c,0x00000000}, +{0x70,0xfffffff0}, +{0x74,0x00000000}, +{0x78,0xfffffff0}, +{0x7c,0x00000000}, +/* +{0xf0,0xe0}, +{0x00,0x006f0032}, +{0x04,0x00000057}, +{0x08,0x003e005f}, +{0x0c,0x007d0011}, +{0x10,0x008b0007}, +{0x14,0x001c000d}, +{0x18,0x001100ae}, +{0x1c,0x003c006a}, +{0x20,0x00a5001e}, +{0x24,0x00230065}, +{0x28,0x006a0043}, +{0x2c,0x005e0072}, +{0x30,0x009c0003}, +{0x34,0x000000be}, +{0x38,0x00d70022}, +{0x3c,0x00470057}, +{0x40,0x006401f4}, +{0x44,0x00640064}, +{0x48,0x01900064}, +{0x4c,0x00500190}, +{0x50,0x00500050}, +{0x54,0x012c0050}, +{0x58,0x012c012c}, +{0x5c,0x0028012c}, +{0x60,0x00640000}, +{0x64,0x00640064}, +{0x68,0x00000032}, +{0x6c,0x00000000}, +{0x70,0x00000000}, +{0x74,0x00000000}, +{0x78,0x00000000}, +{0x7c,0x00000000}, +{0xf0,0xe1}, +{0x00,0x00580022}, +{0x04,0x00000054}, +{0x08,0x0041004d}, +{0x0c,0x008c000a}, +{0x10,0x00a60000}, +{0x14,0x00150001}, +{0x18,0x001200be}, +{0x1c,0x002d0064}, +{0x20,0x00aa001d}, +{0x24,0x002f004d}, +{0x28,0x0061005e}, +{0x2c,0x0070008c}, +{0x30,0x00970000}, +{0x34,0x000000d8}, +{0x38,0x00bb0012}, +{0x3c,0x0047006f}, +{0x40,0x00000000}, +{0x44,0x00000000}, +{0x48,0x00000000}, +{0x4c,0x00000000}, +{0x50,0x00000000}, +{0x54,0x00000000}, +{0x58,0x00000000}, +{0x5c,0x00000000}, +{0x60,0x00000000}, +{0x64,0x00000000}, +{0x68,0x00000000}, +{0x6c,0x00000000}, +{0x70,0x00000000}, +{0x74,0x00000000}, +{0x78,0x00000000}, +{0x7c,0x00000000}, +*/ +{0xf0,0x0}, +{0x00,0x01000000}, +{0x04,0x01000000}, +{0x08,0x01000000}, +{0x0c,0x233fc0c0}, +{0x10,0xa2146004}, +{0x14,0xa4102000}, +{0x18,0xe4244000}, +{0x1c,0x233fc0c0}, +{0x20,0xa2146010}, +{0x24,0x2500003f}, +{0x28,0xa414a3ff}, +{0x2c,0xe4244000}, +{0x30,0x01000000}, +{0x34,0x821020e0}, +{0x38,0x81880001}, +{0x3c,0x01000000}, +{0x40,0x01000000}, +{0x44,0x01000000}, +{0x48,0x270010c0}, +{0x4c,0xa614e00f}, +{0x50,0xe6a00040}, +{0x54,0x01000000}, +{0x58,0xa410200f}, +{0x5c,0xe4a00040}, +{0x60,0x01000000}, +{0x64,0xa0100000}, +{0x68,0xa2100000}, +{0x6c,0xa4100000}, +{0x70,0xa6100000}, +{0x74,0xa8100000}, +{0x78,0xaa100000}, +{0x7c,0xac100000}, +{0xf0,0x1}, +{0x00,0xae100000}, +{0x04,0x90100000}, +{0x08,0x92100000}, +{0x0c,0x94100000}, +{0x10,0x96100000}, +{0x14,0x98100000}, +{0x18,0x9a100000}, +{0x1c,0x9c100000}, +{0x20,0x9e100000}, +{0x24,0x84100000}, +{0x28,0x86100000}, +{0x2c,0x88100000}, +{0x30,0x8a100000}, +{0x34,0x8c100000}, +{0x38,0x8e100000}, +{0x3c,0x01000000}, +{0x40,0x01000000}, +{0x44,0x01000000}, +{0x48,0x82100000}, +{0x4c,0x81900001}, +{0x50,0x82100000}, +{0x54,0x81980001}, +{0x58,0x81800000}, +{0x5c,0x01000000}, +{0x60,0x01000000}, +{0x64,0x01000000}, +{0x68,0xbc102cf8}, +{0x6c,0x9c102c78}, +{0x70,0x01000000}, +{0x74,0x01000000}, +{0x78,0x01000000}, +{0x7c,0x01000000}, +{0xf0,0x2}, +{0x00,0x270010c0}, +{0x04,0xa614e00f}, +{0x08,0xe6a00040}, +{0x0c,0x01000000}, +{0x10,0x40000451}, +{0x14,0x01000000}, +{0x18,0x01000000}, +{0x1c,0x10bfffff}, +{0x20,0x01000000}, +{0x24,0x00000000}, +{0x28,0x00000000}, +{0x2c,0x00000000}, +{0x30,0x00000000}, +{0x34,0x00000000}, +{0x38,0x00000000}, +{0x3c,0x00000000}, +{0x40,0x00000000}, +{0x44,0x00000000}, +{0x48,0x00000000}, +{0x4c,0x00000000}, +{0x50,0x00000000}, +{0x54,0x00000000}, +{0x58,0x00000000}, +{0x5c,0x00000000}, +{0x60,0x00000000}, +{0x64,0x00000000}, +{0x68,0x00000000}, +{0x6c,0x00000000}, +{0x70,0x00000000}, +{0x74,0x00000000}, +{0x78,0x00000000}, +{0x7c,0x00000000}, +{0xf0,0x1a}, +{0x00,0x0000000e}, +{0x04,0xfffffe65}, +{0x08,0x000003fc}, +{0x0c,0x00000af6}, +{0x10,0x000003d4}, +{0x14,0xfffffe64}, +{0x18,0x00000008}, +{0x1c,0xfffffe66}, +{0x20,0x00000425}, +{0x24,0x00000af5}, +{0x28,0x000003ac}, +{0x2c,0xfffffe65}, +{0x30,0x00000003}, +{0x34,0xfffffe67}, +{0x38,0x0000044e}, +{0x3c,0x00000af3}, +{0x40,0x00000384}, +{0x44,0xfffffe65}, +{0x48,0xfffffffd}, +{0x4c,0xfffffe69}, +{0x50,0x00000476}, +{0x54,0x00000aef}, +{0x58,0x0000035c}, +{0x5c,0xfffffe67}, +{0x60,0xfffffff7}, +{0x64,0xfffffe6c}, +{0x68,0x0000049f}, +{0x6c,0x00000aea}, +{0x70,0x00000335}, +{0x74,0xfffffe68}, +{0x78,0xfffffff1}, +{0x7c,0xfffffe6f}, +{0xf0,0x1b}, +{0x00,0x000004c9}, +{0x04,0x00000ae5}, +{0x08,0x0000030e}, +{0x0c,0xfffffe6a}, +{0x10,0xffffffeb}, +{0x14,0xfffffe73}, +{0x18,0x000004f2}, +{0x1c,0x00000ade}, +{0x20,0x000002e7}, +{0x24,0xfffffe6d}, +{0x28,0xffffffe4}, +{0x2c,0xfffffe78}, +{0x30,0x0000051b}, +{0x34,0x00000ad5}, +{0x38,0x000002c1}, +{0x3c,0xfffffe70}, +{0x40,0xffffffde}, +{0x44,0xfffffe7d}, +{0x48,0x00000544}, +{0x4c,0x00000acc}, +{0x50,0x0000029c}, +{0x54,0xfffffe74}, +{0x58,0xffffffd7}, +{0x5c,0xfffffe83}, +{0x60,0x0000056d}, +{0x64,0x00000ac2}, +{0x68,0x00000276}, +{0x6c,0xfffffe78}, +{0x70,0xffffffd0}, +{0x74,0xfffffe89}, +{0x78,0x00000597}, +{0x7c,0x00000ab6}, +{0xf0,0x1c}, +{0x00,0x00000251}, +{0x04,0xfffffe7c}, +{0x08,0xffffffc8}, +{0x0c,0xfffffe91}, +{0x10,0x000005c0}, +{0x14,0x00000aa9}, +{0x18,0x0000022d}, +{0x1c,0xfffffe81}, +{0x20,0xffffffc1}, +{0x24,0xfffffe99}, +{0x28,0x000005e9}, +{0x2c,0x00000a9b}, +{0x30,0x00000209}, +{0x34,0xfffffe86}, +{0x38,0xffffffb9}, +{0x3c,0xfffffea1}, +{0x40,0x00000611}, +{0x44,0x00000a8d}, +{0x48,0x000001e5}, +{0x4c,0xfffffe8b}, +{0x50,0xffffffb2}, +{0x54,0xfffffeab}, +{0x58,0x0000063a}, +{0x5c,0x00000a7d}, +{0x60,0x000001c3}, +{0x64,0xfffffe91}, +{0x68,0xffffffaa}, +{0x6c,0xfffffeb5}, +{0x70,0x00000663}, +{0x74,0x00000a6b}, +{0x78,0x000001a0}, +{0x7c,0xfffffe97}, +{0xf0,0x1d}, +{0x00,0xffffffa2}, +{0x04,0xfffffebf}, +{0x08,0x0000068b}, +{0x0c,0x00000a59}, +{0x10,0x0000017e}, +{0x14,0xfffffe9d}, +{0x18,0xffffff9a}, +{0x1c,0xfffffecb}, +{0x20,0x000006b3}, +{0x24,0x00000a46}, +{0x28,0x0000015d}, +{0x2c,0xfffffea4}, +{0x30,0xffffff91}, +{0x34,0xfffffed7}, +{0x38,0x000006da}, +{0x3c,0x00000a32}, +{0x40,0x0000013d}, +{0x44,0xfffffeab}, +{0x48,0xffffff89}, +{0x4c,0xfffffee4}, +{0x50,0x00000702}, +{0x54,0x00000a1d}, +{0x58,0x0000011d}, +{0x5c,0xfffffeb2}, +{0x60,0xffffff80}, +{0x64,0xfffffef2}, +{0x68,0x00000729}, +{0x6c,0x00000a06}, +{0x70,0x000000fd}, +{0x74,0xfffffeba}, +{0x78,0xffffff78}, +{0x7c,0xffffff00}, +{0xf0,0x1e}, +{0x00,0x0000074f}, +{0x04,0x000009ef}, +{0x08,0x000000df}, +{0x0c,0xfffffec1}, +{0x10,0xffffff6f}, +{0x14,0xffffff10}, +{0x18,0x00000776}, +{0x1c,0x000009d7}, +{0x20,0x000000c1}, +{0x24,0xfffffec9}, +{0x28,0xffffff66}, +{0x2c,0xffffff20}, +{0x30,0x0000079b}, +{0x34,0x000009be}, +{0x38,0x000000a3}, +{0x3c,0xfffffed1}, +{0x40,0xffffff5e}, +{0x44,0xffffff30}, +{0x48,0x000007c1}, +{0x4c,0x000009a4}, +{0x50,0x00000087}, +{0x54,0xfffffed9}, +{0x58,0xffffff55}, +{0x5c,0xffffff42}, +{0x60,0x000007e5}, +{0x64,0x00000989}, +{0x68,0x0000006b}, +{0x6c,0xfffffee2}, +{0x70,0xffffff4c}, +{0x74,0xffffff54}, +{0x78,0x0000080a}, +{0x7c,0x0000096d}, +{0xf0,0x1f}, +{0x00,0x0000004f}, +{0x04,0xfffffeea}, +{0x08,0xffffff43}, +{0x0c,0xffffff67}, +{0x10,0x0000082d}, +{0x14,0x00000951}, +{0x18,0x00000035}, +{0x1c,0xfffffef3}, +{0x20,0xffffff3a}, +{0x24,0xffffff7b}, +{0x28,0x00000850}, +{0x2c,0x00000933}, +{0x30,0x0000001b}, +{0x34,0xfffffefb}, +{0x38,0xffffff31}, +{0x3c,0xffffff90}, +{0x40,0x00000873}, +{0x44,0x00000915}, +{0x48,0x00000002}, +{0x4c,0xffffff04}, +{0x50,0xffffff28}, +{0x54,0xffffffa5}, +{0x58,0x00000895}, +{0x5c,0x000008f6}, +{0x60,0xffffffea}, +{0x64,0xffffff0d}, +{0x68,0xffffff1f}, +{0x6c,0xffffffbb}, +{0x70,0x000008b6}, +{0x74,0x000008d6}, +{0x78,0xffffffd2}, +{0x7c,0xffffff16}, +{0xf0,0x20}, +{0x00,0x83580000}, +{0x04,0x82086ff0}, +{0x08,0x83306004}, +{0x0c,0x80a06005}, +{0x10,0x02800024}, +{0x14,0x01000000}, +{0x18,0x80a06006}, +{0x1c,0x02800039}, +{0x20,0x01000000}, +{0x24,0x80a06015}, +{0x28,0x02800051}, +{0x2c,0x01000000}, +{0x30,0x80a0602a}, +{0x34,0x02800085}, +{0x38,0x01000000}, +{0x3c,0x073fc180}, +{0x40,0x8610e03c}, +{0x44,0x05169680}, +{0x48,0x84004002}, +{0x4c,0xc420c000}, +{0x50,0x073fc000}, +{0x54,0x8610e020}, +{0x58,0x84102001}, +{0x5c,0xc420c000}, +{0x60,0x0500000c}, +{0x64,0x01000000}, +{0x68,0x01000000}, +{0x6c,0x8480bfff}, +{0x70,0x12bffffe}, +{0x74,0x01000000}, +{0x78,0x01000000}, +{0x7c,0x073fc000}, +{0xf0,0x21}, +{0x00,0x8610e020}, +{0x04,0x84102000}, +{0x08,0xc420c000}, +{0x0c,0x01000000}, +{0x10,0x01000000}, +{0x14,0x81c44000}, +{0x18,0x81cc8000}, +{0x1c,0x01000000}, +{0x20,0xa7500000}, +{0x24,0xa92ce002}, +{0x28,0xa734e001}, +{0x2c,0xa614c014}, +{0x30,0xa60ce007}, +{0x34,0x81900000}, +{0x38,0x01000000}, +{0x3c,0x01000000}, +{0x40,0x81e00000}, +{0x44,0xe03ba000}, +{0x48,0xe43ba008}, +{0x4c,0xe83ba010}, +{0x50,0xec3ba018}, +{0x54,0xf03ba020}, +{0x58,0xf43ba028}, +{0x5c,0xf83ba030}, +{0x60,0xfc3ba038}, +{0x64,0x81e80000}, +{0x68,0x8194c000}, +{0x6c,0x01000000}, +{0x70,0x01000000}, +{0x74,0x81c44000}, +{0x78,0x81cc8000}, +{0x7c,0x01000000}, +{0xf0,0x22}, +{0x00,0xa7500000}, +{0x04,0xa934e002}, +{0x08,0xa72ce001}, +{0x0c,0xa614c014}, +{0x10,0xa60ce007}, +{0x14,0x81900000}, +{0x18,0x01000000}, +{0x1c,0x01000000}, +{0x20,0x81e80000}, +{0x24,0x81e80000}, +{0x28,0xe01ba000}, +{0x2c,0xe41ba008}, +{0x30,0xe81ba010}, +{0x34,0xec1ba018}, +{0x38,0xf01ba020}, +{0x3c,0xf41ba028}, +{0x40,0xf81ba030}, +{0x44,0xfc1ba038}, +{0x48,0x81e00000}, +{0x4c,0x81e00000}, +{0x50,0x8194c000}, +{0x54,0x01000000}, +{0x58,0x01000000}, +{0x5c,0x81c44000}, +{0x60,0x81cc8000}, +{0x64,0x01000000}, +{0x68,0x01000000}, +{0x6c,0x82102010}, +{0x70,0x273fc0c0}, +{0x74,0xa614e010}, +{0x78,0xc224c000}, +{0x7c,0x01000000}, +{0xf0,0x23}, +{0x00,0x033fc0c0}, +{0x04,0x82106004}, +{0x08,0xa6102000}, +{0x0c,0xe6204000}, +{0x10,0x01000000}, +{0x14,0x01000000}, +{0x18,0x01000000}, +{0x1c,0xa6102020}, +{0x20,0x83480000}, +{0x24,0x82104013}, +{0x28,0x81884000}, +{0x2c,0x01000000}, +{0x30,0x400011a1}, +{0x34,0x01000000}, +{0x38,0x01000000}, +{0x3c,0x01000000}, +{0x40,0xa7500000}, +{0x44,0xa934e002}, +{0x48,0xa72ce001}, +{0x4c,0xa614c014}, +{0x50,0xa60ce007}, +{0x54,0x81900000}, +{0x58,0x01000000}, +{0x5c,0x81e80000}, +{0x60,0xe01ba000}, +{0x64,0xe41ba008}, +{0x68,0xe81ba010}, +{0x6c,0xec1ba018}, +{0x70,0xf01ba020}, +{0x74,0xf41ba028}, +{0x78,0xf81ba030}, +{0x7c,0xfc1ba038}, +{0xf0,0x24}, +{0x00,0x81e00000}, +{0x04,0x8194c000}, +{0x08,0x01000000}, +{0x0c,0xa6102020}, +{0x10,0x83480000}, +{0x14,0x82284013}, +{0x18,0x81884000}, +{0x1c,0x01000000}, +{0x20,0x033fc0c0}, +{0x24,0x82106004}, +{0x28,0xa6103fff}, +{0x2c,0xe6204000}, +{0x30,0x01000000}, +{0x34,0x01000000}, +{0x38,0x01000000}, +{0x3c,0x81c44000}, +{0x40,0x81cc8000}, +{0x44,0x01000000}, +{0x48,0x81c48000}, +{0x4c,0x81cca004}, +{0x50,0x01000000}, +{0x54,0x9de3bf98}, +{0x58,0x4000001b}, +{0x5c,0x01000000}, +{0x60,0x40000012}, +{0x64,0x01000000}, +{0x68,0x400000ee}, +{0x6c,0x01000000}, +{0x70,0x40000040}, +{0x74,0x01000000}, +{0x78,0x400000a4}, +{0x7c,0x01000000}, +{0xf0,0x25}, +{0x00,0x30bffffe}, +{0x04,0x80a22000}, +{0x08,0x02800006}, +{0x0c,0x01000000}, +{0x10,0x01000000}, +{0x14,0x90823fff}, +{0x18,0x12bffffe}, +{0x1c,0x01000000}, +{0x20,0x81c3e008}, +{0x24,0x01000000}, +{0x28,0x82102001}, +{0x2c,0x81904000}, +{0x30,0x01000000}, +{0x34,0x01000000}, +{0x38,0x01000000}, +{0x3c,0x81c3e008}, +{0x40,0x01000000}, +{0x44,0x03000008}, +{0x48,0x82106342}, +{0x4c,0xa3804000}, +{0x50,0x03000004}, +{0x54,0x82106000}, +{0x58,0x81984000}, +{0x5c,0x01000000}, +{0x60,0x01000000}, +{0x64,0x01000000}, +{0x68,0x81c3e008}, +{0x6c,0x01000000}, +{0x70,0x98102000}, +{0x74,0x832b2002}, +{0x78,0xda006480}, +{0x7c,0x80a37ff0}, +{0xf0,0x26}, +{0x00,0x02800006}, +{0x04,0x98032002}, +{0x08,0xc2006484}, +{0x0c,0x80a3201f}, +{0x10,0x04bffff9}, +{0x14,0xc2234000}, +{0x18,0x81c3e008}, +{0x1c,0x01000000}, +{0x20,0x03004040}, +{0x24,0x94106101}, +{0x28,0x98102000}, +{0x2c,0x832b2002}, +{0x30,0xd60063a4}, +{0x34,0x9a102000}, +{0x38,0x832b6002}, +{0x3c,0x9a036001}, +{0x40,0x80a36004}, +{0x44,0x04bffffd}, +{0x48,0xd422c001}, +{0x4c,0x98032001}, +{0x50,0x80a32003}, +{0x54,0x04bffff7}, +{0x58,0x832b2002}, +{0x5c,0x033fc200}, +{0x60,0xda002330}, +{0x64,0x82106074}, +{0x68,0x81c3e008}, +{0x6c,0xda204000}, +{0x70,0x9de3bf98}, +{0x74,0x40000f98}, +{0x78,0x90102000}, +{0x7c,0x213fc140}, +{0xf0,0x27}, +{0x00,0xda00247c}, +{0x04,0x98142040}, +{0x08,0xea030000}, +{0x0c,0xc20022f8}, +{0x10,0x9b336001}, +{0x14,0x825b4001}, +{0x18,0xaa0d7c00}, +{0x1c,0xaa154001}, +{0x20,0xea230000}, +{0x24,0x82142004}, +{0x28,0xea004000}, +{0x2c,0xaa0d7ff0}, +{0x30,0xaa15400d}, +{0x34,0xea204000}, +{0x38,0x2d3fc200}, +{0x3c,0x8215a080}, +{0x40,0xea004000}, +{0x44,0xaa0d7ff0}, +{0x48,0xaa15400d}, +{0x4c,0xea204000}, +{0x50,0xc200233c}, +{0x54,0x9a15a070}, +{0x58,0xc2234000}, +{0x5c,0x19000016}, +{0x60,0x033fc000}, +{0x64,0xda002338}, +{0x68,0xa21323a8}, +{0x6c,0x82106030}, +{0x70,0xda204000}, +{0x74,0x98132180}, +{0x78,0x96142088}, +{0x7c,0xd822c000}, +{0xf0,0x28}, +{0x00,0x9414208c}, +{0x04,0x0300003f}, +{0x08,0xe2228000}, +{0x0c,0x92142058}, +{0x10,0x821063ff}, +{0x14,0xc2224000}, +{0x18,0xc20023f8}, +{0x1c,0x9015a00c}, +{0x20,0xc2220000}, +{0x24,0xc20023fc}, +{0x28,0x9e15a008}, +{0x2c,0xc223c000}, +{0x30,0xa6142080}, +{0x34,0xd824c000}, +{0x38,0xa8142084}, +{0x3c,0xa414205c}, +{0x40,0xe2250000}, +{0x44,0x7fffffb7}, +{0x48,0xc0248000}, +{0x4c,0x400001fb}, +{0x50,0xa415a030}, +{0x54,0x9a15a07c}, +{0x58,0xea034000}, +{0x5c,0x033ff000}, +{0x60,0xd8002374}, +{0x64,0xaa2d4001}, +{0x68,0xea234000}, +{0x6c,0x033fc1c0}, +{0x70,0xda002340}, +{0x74,0x82106064}, +{0x78,0xda204000}, +{0x7c,0x0300007f}, +{0xf0,0x29}, +{0x00,0x92142010}, +{0x04,0x821063ff}, +{0x08,0x1507ffc0}, +{0x0c,0xc2224000}, +{0x10,0x9e142030}, +{0x14,0x96032001}, +{0x18,0xd423c000}, +{0x1c,0x972ae010}, +{0x20,0xa0142014}, +{0x24,0x9602c00c}, +{0x28,0xa32b2010}, +{0x2c,0x912b2004}, +{0x30,0xd4240000}, +{0x34,0x80a32000}, +{0x38,0x82044008}, +{0x3c,0x9602e002}, +{0x40,0x9a15a084}, +{0x44,0x9815a088}, +{0x48,0x02800005}, +{0x4c,0x9415a08c}, +{0x50,0xc2234000}, +{0x54,0xe2230000}, +{0x58,0xd6228000}, +{0x5c,0xc2002344}, +{0x60,0xc2248000}, +{0x64,0x033fc0c0}, +{0x68,0x82106004}, +{0x6c,0x9a103fff}, +{0x70,0x7fffff80}, +{0x74,0xda204000}, +{0x78,0x03200040}, +{0x7c,0xc2258000}, +{0xf0,0x2a}, +{0x00,0x81c7e008}, +{0x04,0x81e80000}, +{0x08,0x01000000}, +{0x0c,0x01000000}, +{0x10,0x01000000}, +{0x14,0xa7800000}, +{0x18,0x01000000}, +{0x1c,0x01000000}, +{0x20,0x01000000}, +{0x24,0x81c3e008}, +{0x28,0x01000000}, +{0x2c,0x9de3bf98}, +{0x30,0xb6102000}, +{0x34,0xb0102000}, +{0x38,0xb8102000}, +{0x3c,0xc2070000}, +{0x40,0xb8072004}, +{0x44,0x80a724ff}, +{0x48,0x08bffffd}, +{0x4c,0xb606c001}, +{0x50,0x03000016}, +{0x54,0x821061e0}, +{0x58,0x82087f80}, +{0x5c,0xb8102d00}, +{0x60,0x80a70001}, +{0x64,0x3a80001e}, +{0x68,0xfa002180}, +{0x6c,0xb4100001}, +{0x70,0x9a102001}, +{0x74,0x9e100001}, +{0x78,0xc2070000}, +{0x7c,0xb8072004}, +{0xf0,0x2b}, +{0x00,0xb21f001a}, +{0x04,0xbb37200c}, +{0x08,0x808f2fff}, +{0x0c,0x02800005}, +{0x10,0xb606c001}, +{0x14,0x80a7001a}, +{0x18,0x1280000e}, +{0x1c,0x80a7000f}, +{0x20,0x80a00019}, +{0x24,0xba677fff}, +{0x28,0x832f6002}, +{0x2c,0xc2006180}, +{0x30,0xb606c001}, +{0x34,0xba077fff}, +{0x38,0x80a6e000}, +{0x3c,0x832b401d}, +{0x40,0x12800003}, +{0x44,0xb6102000}, +{0x48,0xb0160001}, +{0x4c,0x80a7000f}, +{0x50,0x2abfffeb}, +{0x54,0xc2070000}, +{0x58,0xfa002180}, +{0x5c,0xb816001d}, +{0x60,0x821e001d}, +{0x64,0x80a70001}, +{0x68,0x32800009}, +{0x6c,0xba16001d}, +{0x70,0x0329697f}, +{0x74,0x821063ff}, +{0x78,0x80a70001}, +{0x7c,0x32800004}, +{0xf0,0x2c}, +{0x00,0xba16001d}, +{0x04,0x3b169696}, +{0x08,0xba17625a}, +{0x0c,0x033fc180}, +{0x10,0x82106030}, +{0x14,0xfa204000}, +{0x18,0x81c7e008}, +{0x1c,0x91e82001}, +{0x20,0x033fc180}, +{0x24,0xc0204000}, +{0x28,0x82102500}, +{0x2c,0xc0204000}, +{0x30,0x82006004}, +{0x34,0x80a0687c}, +{0x38,0x28bffffe}, +{0x3c,0xc0204000}, +{0x40,0x033fc200}, +{0x44,0x82106030}, +{0x48,0xda004000}, +{0x4c,0x82102010}, +{0x50,0xc2202574}, +{0x54,0x82102001}, +{0x58,0xc2202540}, +{0x5c,0x8210200f}, +{0x60,0xc2202548}, +{0x64,0x81c3e008}, +{0x68,0xda20257c}, +{0x6c,0x9de3bf98}, +{0x70,0x82102000}, +{0x74,0x80a04019}, +{0x78,0x16800015}, +{0x7c,0x9e100019}, +{0xf0,0x2d}, +{0x00,0xb6006001}, +{0x04,0x80a6c00f}, +{0x08,0x1680000f}, +{0x0c,0xba10001b}, +{0x10,0xb3286002}, +{0x14,0xb52f6002}, +{0x18,0xf8060019}, +{0x1c,0xc206001a}, +{0x20,0x80a70001}, +{0x24,0x04800004}, +{0x28,0xba076001}, +{0x2c,0xc2260019}, +{0x30,0xf826001a}, +{0x34,0x80a7400f}, +{0x38,0x06bffff8}, +{0x3c,0xb52f6002}, +{0x40,0x80a6c00f}, +{0x44,0x06bfffef}, +{0x48,0x8210001b}, +{0x4c,0x81c7e008}, +{0x50,0x81e80000}, +{0x54,0x033fc140}, +{0x58,0x82106048}, +{0x5c,0xda004000}, +{0x60,0x03000040}, +{0x64,0x808b4001}, +{0x68,0x03000016}, +{0x6c,0x12800003}, +{0x70,0x90106180}, +{0x74,0x901063a8}, +{0x78,0x81c3e008}, +{0x7c,0x01000000}, +{0xf0,0x2e}, +{0x00,0x9de3bf38}, +{0x04,0xa12e2002}, +{0x08,0x1b00003f}, +{0x0c,0xc20423d8}, +{0x10,0x9a1363ff}, +{0x14,0xb008400d}, +{0x18,0x97306010}, +{0x1c,0xc200247c}, +{0x20,0x9a22c018}, +{0x24,0x825e0001}, +{0x28,0x92836001}, +{0x2c,0x0280000c}, +{0x30,0xb0004019}, +{0x34,0x9a100009}, +{0x38,0x9807bf98}, +{0x3c,0x82060018}, +{0x40,0xc2168001}, +{0x44,0xc2230000}, +{0x48,0xc200247c}, +{0x4c,0xb0060001}, +{0x50,0x9a837fff}, +{0x54,0x12bffffa}, +{0x58,0x98032004}, +{0x5c,0x7fffffc4}, +{0x60,0x9007bf98}, +{0x64,0x0300003f}, +{0x68,0xda0423e8}, +{0x6c,0x821063ff}, +{0x70,0xb00b4001}, +{0x74,0x97336010}, +{0x78,0x80a6000b}, +{0x7c,0x92102000}, +{0xf0,0x2f}, +{0x00,0x1880000b}, +{0x04,0x9a100018}, +{0x08,0x832e2002}, +{0x0c,0x8200401e}, +{0x10,0x98007f98}, +{0x14,0xc2030000}, +{0x18,0x9a036001}, +{0x1c,0x92024001}, +{0x20,0x80a3400b}, +{0x24,0x08bffffc}, +{0x28,0x98032004}, +{0x2c,0xb022c018}, +{0x30,0xb0062001}, +{0x34,0x81800000}, +{0x38,0x01000000}, +{0x3c,0x01000000}, +{0x40,0x01000000}, +{0x44,0xb0724018}, +{0x48,0x81c7e008}, +{0x4c,0x81e80000}, +{0x50,0x832a2002}, +{0x54,0x82004008}, +{0x58,0x9b326002}, +{0x5c,0x8200400d}, +{0x60,0x83286002}, +{0x64,0x920a6003}, +{0x68,0x932a6003}, +{0x6c,0xd00065b0}, +{0x70,0x91320009}, +{0x74,0x81c3e008}, +{0x78,0x900a20ff}, +{0x7c,0x972a2002}, +{0xf0,0x30}, +{0x00,0x99326002}, +{0x04,0x9002c008}, +{0x08,0x9002000c}, +{0x0c,0x920a6003}, +{0x10,0x932a6003}, +{0x14,0x912a2002}, +{0x18,0x821020ff}, +{0x1c,0xda0225b0}, +{0x20,0x83284009}, +{0x24,0x822b4001}, +{0x28,0x952a8009}, +{0x2c,0x8210400a}, +{0x30,0xc22225b0}, +{0x34,0xda02e3a4}, +{0x38,0x992b2002}, +{0x3c,0x81c3e008}, +{0x40,0xc223400c}, +{0x44,0x9de3bf98}, +{0x48,0xda002310}, +{0x4c,0x80a36000}, +{0x50,0x02800049}, +{0x54,0xb0102000}, +{0x58,0xc2002594}, +{0x5c,0x82006001}, +{0x60,0x80a0400d}, +{0x64,0x0a800044}, +{0x68,0xc2202594}, +{0x6c,0xa4102000}, +{0x70,0xc20023d4}, +{0x74,0x80a48001}, +{0x78,0xc0202594}, +{0x7c,0xa2102000}, +{0xf0,0x31}, +{0x00,0x1a800028}, +{0x04,0xa72c6002}, +{0x08,0xc204e364}, +{0x0c,0x80a06000}, +{0x10,0x02800020}, +{0x14,0xa0102000}, +{0x18,0xc20022fc}, +{0x1c,0x80a40001}, +{0x20,0x1a80001c}, +{0x24,0x15000017}, +{0x28,0xc200255c}, +{0x2c,0xf00c2380}, +{0x30,0x9412a1d0}, +{0x34,0x90100011}, +{0x38,0x80a06000}, +{0x3c,0x02800007}, +{0x40,0x920e20ff}, +{0x44,0x7fffff84}, +{0x48,0x01000000}, +{0x4c,0x94100008}, +{0x50,0x90100011}, +{0x54,0x920e20ff}, +{0x58,0x7fffff8a}, +{0x5c,0xa0042001}, +{0x60,0xc204e364}, +{0x64,0xda002348}, +{0x68,0x98020001}, +{0x6c,0x82034001}, +{0x70,0x80a20001}, +{0x74,0x38bfffe9}, +{0x78,0xa404a001}, +{0x7c,0x80a3000d}, +{0xf0,0x32}, +{0x00,0x3abfffe7}, +{0x04,0xc20022fc}, +{0x08,0x10bfffe4}, +{0x0c,0xa404a001}, +{0x10,0xa2046001}, +{0x14,0xc20023d4}, +{0x18,0x10bfffda}, +{0x1c,0x80a44001}, +{0x20,0xd800258c}, +{0x24,0x80a0000c}, +{0x28,0x9a603fff}, +{0x2c,0x80a00012}, +{0x30,0x82603fff}, +{0x34,0x808b4001}, +{0x38,0x02800007}, +{0x3c,0x80a4a000}, +{0x40,0xc200255c}, +{0x44,0x80a00001}, +{0x48,0x82603fff}, +{0x4c,0xc220255c}, +{0x50,0x80a4a000}, +{0x54,0x12800004}, +{0x58,0x82032001}, +{0x5c,0x10800003}, +{0x60,0xc020258c}, +{0x64,0xc220258c}, +{0x68,0xc200258c}, +{0x6c,0x80a06003}, +{0x70,0xb0603fff}, +{0x74,0x81c7e008}, +{0x78,0x81e80000}, +{0x7c,0x9de3bf98}, +{0xf0,0x33}, +{0x00,0xc2002540}, +{0x04,0x80a06000}, +{0x08,0x0280002a}, +{0x0c,0xb0102000}, +{0x10,0xda002210}, +{0x14,0x80a36000}, +{0x18,0x02800026}, +{0x1c,0xb4102001}, +{0x20,0xde0022f8}, +{0x24,0x80a6800f}, +{0x28,0x18800018}, +{0x2c,0x03000018}, +{0x30,0x98106220}, +{0x34,0xf20022fc}, +{0x38,0xb6102007}, +{0x3c,0xb8102001}, +{0x40,0x80a70019}, +{0x44,0x1880000d}, +{0x48,0x832ee003}, +{0x4c,0x8200400c}, +{0x50,0xba006004}, +{0x54,0xc2074000}, +{0x58,0xb8072001}, +{0x5c,0x80a0400d}, +{0x60,0x14800003}, +{0x64,0xba076004}, +{0x68,0xb0062001}, +{0x6c,0x80a70019}, +{0x70,0x28bffffa}, +{0x74,0xc2074000}, +{0x78,0xb406a001}, +{0x7c,0x80a6800f}, +{0xf0,0x34}, +{0x00,0x08bfffef}, +{0x04,0xb606e007}, +{0x08,0xc21023ce}, +{0x0c,0x80a60001}, +{0x10,0x24800007}, +{0x14,0xc0202598}, +{0x18,0xc2002598}, +{0x1c,0x82006001}, +{0x20,0xc2202598}, +{0x24,0x10800003}, +{0x28,0xb0102001}, +{0x2c,0xb0102000}, +{0x30,0x81c7e008}, +{0x34,0x81e80000}, +{0x38,0x9a102005}, +{0x3c,0x8210200b}, +{0x40,0x9a234008}, +{0x44,0x82204008}, +{0x48,0x9b2b6002}, +{0x4c,0x80a22005}, +{0x50,0x14800007}, +{0x54,0x99286002}, +{0x58,0x033fc200}, +{0x5c,0x8210600c}, +{0x60,0xc2004000}, +{0x64,0x10800006}, +{0x68,0x8330400d}, +{0x6c,0x033fc200}, +{0x70,0x82106008}, +{0x74,0xc2004000}, +{0x78,0x8330400c}, +{0x7c,0x81c3e008}, +{0xf0,0x35}, +{0x00,0x9008600f}, +{0x04,0x9de3bf98}, +{0x08,0xc200247c}, +{0x0c,0x83306001}, +{0x10,0x80a60001}, +{0x14,0x1a800006}, +{0x18,0x90100018}, +{0x1c,0x7fffffe7}, +{0x20,0x01000000}, +{0x24,0x10800006}, +{0x28,0xb0020008}, +{0x2c,0x7fffffe3}, +{0x30,0x90260001}, +{0x34,0x90020008}, +{0x38,0xb0022001}, +{0x3c,0x81c7e008}, +{0x40,0x81e80000}, +{0x44,0x9de3bf98}, +{0x48,0xa8102000}, +{0x4c,0xc20023d4}, +{0x50,0x80a50001}, +{0x54,0x1a800057}, +{0x58,0xe2002348}, +{0x5c,0xa4102000}, +{0x60,0xc200247c}, +{0x64,0x80a48001}, +{0x68,0x3a80004e}, +{0x6c,0xa8052001}, +{0x70,0x7fffffe5}, +{0x74,0x90100012}, +{0x78,0x92100008}, +{0x7c,0x7fffff35}, +{0xf0,0x36}, +{0x00,0x90100014}, +{0x04,0x80a62000}, +{0x08,0x12800004}, +{0x0c,0xa0100008}, +{0x10,0x10800016}, +{0x14,0xa0102000}, +{0x18,0x80a62008}, +{0x1c,0x18800011}, +{0x20,0x80a62007}, +{0x24,0x7ffffeec}, +{0x28,0x01000000}, +{0x2c,0x94100008}, +{0x30,0x90100014}, +{0x34,0x7ffffef3}, +{0x38,0x921ca001}, +{0x3c,0x80a20011}, +{0x40,0x04800007}, +{0x44,0xa6100008}, +{0x48,0x9a102008}, +{0x4c,0x9a234018}, +{0x50,0x82102001}, +{0x54,0x8328400d}, +{0x58,0xa02c0001}, +{0x5c,0x80a62007}, +{0x60,0x18800008}, +{0x64,0x80a62008}, +{0x68,0x9a102007}, +{0x6c,0x9a234018}, +{0x70,0x82102001}, +{0x74,0x8328400d}, +{0x78,0x10800022}, +{0x7c,0xa0140001}, +{0xf0,0x37}, +{0x00,0x1280000a}, +{0x04,0x821e2009}, +{0x08,0x80a420fe}, +{0x0c,0x24800002}, +{0x10,0xa0042001}, +{0x14,0x03000018}, +{0x18,0x9b2ca002}, +{0x1c,0x82106220}, +{0x20,0x10800018}, +{0x24,0xe6234001}, +{0x28,0x80a00001}, +{0x2c,0x9a603fff}, +{0x30,0x80a420fe}, +{0x34,0x04800003}, +{0x38,0x82102001}, +{0x3c,0x82102000}, +{0x40,0x808b4001}, +{0x44,0x0280000f}, +{0x48,0x03000018}, +{0x4c,0x9b2ca002}, +{0x50,0x82106220}, +{0x54,0xc2034001}, +{0x58,0x80a04011}, +{0x5c,0x18800003}, +{0x60,0x9a204011}, +{0x64,0x9a244001}, +{0x68,0x80a4c011}, +{0x6c,0x14800003}, +{0x70,0x8224c011}, +{0x74,0x82244013}, +{0x78,0x80a34001}, +{0x7c,0xa0642000}, +{0xf0,0x38}, +{0x00,0x7fffffa1}, +{0x04,0x90100012}, +{0x08,0x92100008}, +{0x0c,0x90100014}, +{0x10,0x7ffffefb}, +{0x14,0x94100010}, +{0x18,0x10bfffb2}, +{0x1c,0xa404a001}, +{0x20,0xc20023d4}, +{0x24,0x80a50001}, +{0x28,0x0abfffae}, +{0x2c,0xa4102000}, +{0x30,0x81c7e008}, +{0x34,0x81e80000}, +{0x38,0x033fc200}, +{0x3c,0x961060a0}, +{0x40,0x98102000}, +{0x44,0x832b2002}, +{0x48,0x9a03000c}, +{0x4c,0xda136400}, +{0x50,0x98032001}, +{0x54,0x80a32016}, +{0x58,0x04bffffb}, +{0x5c,0xda20400b}, +{0x60,0x81c3e008}, +{0x64,0x01000000}, +{0x68,0x9de3bf98}, +{0x6c,0xc2002544}, +{0x70,0x82006001}, +{0x74,0xc2202544}, +{0x78,0x03000017}, +{0x7c,0xb41063f8}, +{0xf0,0x39}, +{0x00,0x9e100018}, +{0x04,0x031fffdf}, +{0x08,0xb01063ff}, +{0x0c,0xba102000}, +{0x10,0xb72f6002}, +{0x14,0xc2002544}, +{0x18,0x80a06009}, +{0x1c,0xb2076001}, +{0x20,0x12800007}, +{0x24,0xb810001b}, +{0x28,0xc206c01a}, +{0x2c,0x83306001}, +{0x30,0x82084018}, +{0x34,0xc226c01a}, +{0x38,0xc2002544}, +{0x3c,0x80a06008}, +{0x40,0x08800006}, +{0x44,0xc207001a}, +{0x48,0xfa03c01c}, +{0x4c,0xbb376001}, +{0x50,0x10800003}, +{0x54,0xba0f4018}, +{0x58,0xfa03c01c}, +{0x5c,0x8200401d}, +{0x60,0xc227001a}, +{0x64,0x80a66089}, +{0x68,0x08bfffea}, +{0x6c,0xba100019}, +{0x70,0x81c7e008}, +{0x74,0x81e80000}, +{0x78,0x9de3bf98}, +{0x7c,0x9e102001}, +{0xf0,0x3a}, +{0x00,0xc20022fc}, +{0x04,0x80a3c001}, +{0x08,0x1880002a}, +{0x0c,0x03000018}, +{0x10,0x82106220}, +{0x14,0x9a006004}, +{0x18,0x19000017}, +{0x1c,0xc20022f8}, +{0x20,0xb6102001}, +{0x24,0x80a6c001}, +{0x28,0xb21323f8}, +{0x2c,0xb41321d0}, +{0x30,0x1880001b}, +{0x34,0xc20be37f}, +{0x38,0xb0004001}, +{0x3c,0xb8036038}, +{0x40,0xc2002544}, +{0x44,0xb606e001}, +{0x48,0x80a06008}, +{0x4c,0x08800003}, +{0x50,0xfa164018}, +{0x54,0xba07401d}, +{0x58,0x81800000}, +{0x5c,0xc2002548}, +{0x60,0x01000000}, +{0x64,0x01000000}, +{0x68,0x82774001}, +{0x6c,0xba100001}, +{0x70,0xc2168018}, +{0x74,0xba274001}, +{0x78,0xfa270000}, +{0x7c,0xc200247c}, +{0xf0,0x3b}, +{0x00,0x82004001}, +{0x04,0xfa0022f8}, +{0x08,0xb4068001}, +{0x0c,0x80a6c01d}, +{0x10,0xb2064001}, +{0x14,0x08bfffeb}, +{0x18,0xb8072038}, +{0x1c,0x9e03e001}, +{0x20,0xc20022fc}, +{0x24,0x80a3c001}, +{0x28,0x08bfffdd}, +{0x2c,0x9a036004}, +{0x30,0x81c7e008}, +{0x34,0x81e80000}, +{0x38,0xc2002540}, +{0x3c,0x80a06000}, +{0x40,0x0280000f}, +{0x44,0x1b3fc200}, +{0x48,0xc2002298}, +{0x4c,0x9a136070}, +{0x50,0xc2234000}, +{0x54,0x03000017}, +{0x58,0xc0202540}, +{0x5c,0xc0202544}, +{0x60,0x981063f8}, +{0x64,0x9a102000}, +{0x68,0x832b6002}, +{0x6c,0x9a036001}, +{0x70,0x80a36089}, +{0x74,0x08bffffd}, +{0x78,0xc020400c}, +{0x7c,0x81c3e008}, +{0xf0,0x3c}, +{0x00,0x01000000}, +{0x04,0xc200247c}, +{0x08,0xda0022f8}, +{0x0c,0x8258400d}, +{0x10,0x97306001}, +{0x14,0x98102000}, +{0x18,0x80a3000b}, +{0x1c,0x1680000e}, +{0x20,0x1b000017}, +{0x24,0x0307ffc7}, +{0x28,0x901363f8}, +{0x2c,0x921063ff}, +{0x30,0x941361d0}, +{0x34,0x9b2b2002}, +{0x38,0xc2034008}, +{0x3c,0x83306003}, +{0x40,0x82084009}, +{0x44,0x98032001}, +{0x48,0x80a3000b}, +{0x4c,0x06bffffa}, +{0x50,0xc223400a}, +{0x54,0x03000018}, +{0x58,0x9a106220}, +{0x5c,0x98102000}, +{0x60,0x832b2002}, +{0x64,0x98032001}, +{0x68,0x80a322d5}, +{0x6c,0x04bffffd}, +{0x70,0xc020400d}, +{0x74,0x81c3e008}, +{0x78,0x01000000}, +{0x7c,0x00000000}, +{0xf0,0x3d}, +{0x00,0x82102020}, +{0x04,0x82204009}, +{0x08,0x80a06040}, +{0x0c,0x04800003}, +{0x10,0x9a100008}, +{0x14,0x90023fff}, +{0x18,0x80a06080}, +{0x1c,0x34800002}, +{0x20,0x90037ffe}, +{0x24,0x80a06000}, +{0x28,0x24800002}, +{0x2c,0x90036001}, +{0x30,0x80a07fc0}, +{0x34,0x24800002}, +{0x38,0x90036002}, +{0x3c,0x81c3e008}, +{0x40,0x01000000}, +{0x44,0x900221ff}, +{0x48,0x833a201f}, +{0x4c,0x8330601a}, +{0x50,0x82020001}, +{0x54,0x82087fc0}, +{0x58,0x90220001}, +{0x5c,0x81c3e008}, +{0x60,0x90022001}, +{0x64,0x9de3bf80}, +{0x68,0x90102020}, +{0x6c,0x7ffffff6}, +{0x70,0x90220018}, +{0x74,0x82102041}, +{0x78,0x82204008}, +{0x7c,0x9b2ea003}, +{0xf0,0x3e}, +{0x00,0x98004001}, +{0x04,0x9a23401a}, +{0x08,0x98030001}, +{0x0c,0x9a03400d}, +{0x10,0x9a03401b}, +{0x14,0x03000018}, +{0x18,0x82106220}, +{0x1c,0x9b2b6002}, +{0x20,0x9a034001}, +{0x24,0xc2002300}, +{0x28,0x96020008}, +{0x2c,0x9602c008}, +{0x30,0xaa006001}, +{0x34,0xc2002308}, +{0x38,0xa52ae003}, +{0x3c,0xa8006001}, +{0x40,0xa72b2003}, +{0x44,0x96037ff8}, +{0x48,0xa0103ffe}, +{0x4c,0xb0102000}, +{0x50,0x94103ffe}, +{0x54,0xa206c010}, +{0x58,0x9804ecfc}, +{0x5c,0x9e04ace8}, +{0x60,0x9202ff90}, +{0x64,0x8206800a}, +{0x68,0x80a54001}, +{0x6c,0x9a603fff}, +{0x70,0x80a50011}, +{0x74,0x82603fff}, +{0x78,0x808b4001}, +{0x7c,0x02800003}, +{0xf0,0x3f}, +{0x00,0x9a102000}, +{0x04,0xda024000}, +{0x08,0x80a22020}, +{0x0c,0x34800003}, +{0x10,0xc2030000}, +{0x14,0xc203c000}, +{0x18,0x825b4001}, +{0x1c,0x9402a001}, +{0x20,0xb0060001}, +{0x24,0x92026038}, +{0x28,0x9e03e004}, +{0x2c,0x80a2a003}, +{0x30,0x04bfffed}, +{0x34,0x98033ffc}, +{0x38,0x832c2002}, +{0x3c,0x8200401e}, +{0x40,0xa0042001}, +{0x44,0xf0207fe8}, +{0x48,0x80a42003}, +{0x4c,0x04bfffe0}, +{0x50,0x9602e004}, +{0x54,0xd207bfe0}, +{0x58,0xd407bfe4}, +{0x5c,0xd607bfe8}, +{0x60,0xd807bfec}, +{0x64,0xda07bff0}, +{0x68,0xc207bff4}, +{0x6c,0x933a6008}, +{0x70,0x953aa008}, +{0x74,0x973ae008}, +{0x78,0x993b2008}, +{0x7c,0x9b3b6008}, +{0xf0,0x40}, +{0x00,0x83386008}, +{0x04,0x90102020}, +{0x08,0xd227bfe0}, +{0x0c,0xd427bfe4}, +{0x10,0xd627bfe8}, +{0x14,0xd827bfec}, +{0x18,0xda27bff0}, +{0x1c,0xc227bff4}, +{0x20,0x7fffffa9}, +{0x24,0x90220019}, +{0x28,0x80a22020}, +{0x2c,0x14800011}, +{0x30,0xb0102000}, +{0x34,0x82020008}, +{0x38,0x82004008}, +{0x3c,0x83286003}, +{0x40,0x90006ce8}, +{0x44,0x9807bfe0}, +{0x48,0x94102005}, +{0x4c,0xc2030000}, +{0x50,0xda020000}, +{0x54,0x8258400d}, +{0x58,0xb0060001}, +{0x5c,0x98032004}, +{0x60,0x9482bfff}, +{0x64,0x1cbffffa}, +{0x68,0x90022004}, +{0x6c,0x30800011}, +{0x70,0x82102041}, +{0x74,0x90204008}, +{0x78,0x82020008}, +{0x7c,0x82004008}, +{0xf0,0x41}, +{0x00,0x83286003}, +{0x04,0x90006cfc}, +{0x08,0x9807bfe0}, +{0x0c,0x94102005}, +{0x10,0xc2030000}, +{0x14,0xda020000}, +{0x18,0x8258400d}, +{0x1c,0xb0060001}, +{0x20,0x98032004}, +{0x24,0x9482bfff}, +{0x28,0x1cbffffa}, +{0x2c,0x90023ffc}, +{0x30,0x81c7e008}, +{0x34,0x81e80000}, +{0x38,0x9de3bf98}, +{0x3c,0x9010001a}, +{0x40,0x7fffff70}, +{0x44,0x92100018}, +{0x48,0xb4100008}, +{0x4c,0x9010001b}, +{0x50,0x7fffff6c}, +{0x54,0x92100019}, +{0x58,0x7fffff83}, +{0x5c,0x97e80008}, +{0x60,0x01000000}, +{0x64,0x9de3bf90}, +{0x68,0xa8102000}, +{0x6c,0xf427a04c}, +{0x70,0xaa102000}, +{0x74,0xac102000}, +{0x78,0xae102010}, +{0x7c,0xe827bff4}, +{0xf0,0x42}, +{0x00,0xb4250017}, +{0x04,0x9210001a}, +{0x08,0x94100018}, +{0x0c,0x96100019}, +{0x10,0x7fffffea}, +{0x14,0x90100015}, +{0x18,0xa6100008}, +{0x1c,0xb6254017}, +{0x20,0x92100014}, +{0x24,0x94100018}, +{0x28,0x96100019}, +{0x2c,0x7fffffe3}, +{0x30,0x9010001b}, +{0x34,0xa4100008}, +{0x38,0xb8050017}, +{0x3c,0x9210001c}, +{0x40,0x94100018}, +{0x44,0x96100019}, +{0x48,0x7fffffdc}, +{0x4c,0x90100015}, +{0x50,0xa2100008}, +{0x54,0xba054017}, +{0x58,0x92100014}, +{0x5c,0x94100018}, +{0x60,0x96100019}, +{0x64,0x7fffffd5}, +{0x68,0x9010001d}, +{0x6c,0xa0100008}, +{0x70,0x90100015}, +{0x74,0x92100014}, +{0x78,0x94100018}, +{0x7c,0x7fffffcf}, +{0xf0,0x43}, +{0x00,0x96100019}, +{0x04,0xa624c008}, +{0x08,0xa0240008}, +{0x0c,0xa4248008}, +{0x10,0xa2244008}, +{0x14,0x80a4e000}, +{0x18,0x04800004}, +{0x1c,0x82102000}, +{0x20,0x82100013}, +{0x24,0xac102001}, +{0x28,0x80a48001}, +{0x2c,0x04800005}, +{0x30,0x80a44001}, +{0x34,0x82100012}, +{0x38,0xac102003}, +{0x3c,0x80a44001}, +{0x40,0x04800005}, +{0x44,0x80a40001}, +{0x48,0x82100011}, +{0x4c,0xac102005}, +{0x50,0x80a40001}, +{0x54,0x04800005}, +{0x58,0x80a06000}, +{0x5c,0x82100010}, +{0x60,0xac102007}, +{0x64,0x80a06000}, +{0x68,0x14800017}, +{0x6c,0x80a5a001}, +{0x70,0x80a5e020}, +{0x74,0x12800004}, +{0x78,0x80a5e010}, +{0x7c,0x10800020}, +{0xf0,0x44}, +{0x00,0xae102010}, +{0x04,0x12800004}, +{0x08,0x80a5e008}, +{0x0c,0x1080001c}, +{0x10,0xae102008}, +{0x14,0x12800004}, +{0x18,0x80a5e004}, +{0x1c,0x10800018}, +{0x20,0xae102004}, +{0x24,0x12800004}, +{0x28,0x80a5e002}, +{0x2c,0x10800014}, +{0x30,0xae102002}, +{0x34,0x12800018}, +{0x38,0x832e2006}, +{0x3c,0x10800010}, +{0x40,0xae102001}, +{0x44,0x12800004}, +{0x48,0x80a5a003}, +{0x4c,0x1080000c}, +{0x50,0xa810001a}, +{0x54,0x12800004}, +{0x58,0x80a5a005}, +{0x5c,0x10800008}, +{0x60,0xaa10001b}, +{0x64,0x12800004}, +{0x68,0x80a5a007}, +{0x6c,0x10800004}, +{0x70,0xa810001c}, +{0x74,0x22800002}, +{0x78,0xaa10001d}, +{0x7c,0xc207bff4}, +{0xf0,0x45}, +{0x00,0x82006001}, +{0x04,0x80a0607f}, +{0x08,0x04bfff9e}, +{0x0c,0xc227bff4}, +{0x10,0x832e2006}, +{0x14,0xaa054001}, +{0x18,0x82380015}, +{0x1c,0x8338601f}, +{0x20,0xaa0d4001}, +{0x24,0x9b2e6006}, +{0x28,0xc2002308}, +{0x2c,0xa885000d}, +{0x30,0x1c800004}, +{0x34,0x83286006}, +{0x38,0x10800005}, +{0x3c,0xa8102000}, +{0x40,0x80a50001}, +{0x44,0x38800002}, +{0x48,0xa8100001}, +{0x4c,0x9a0d2fff}, +{0x50,0x832d6010}, +{0x54,0x8210400d}, +{0x58,0xd807a04c}, +{0x5c,0x9b2b2002}, +{0x60,0xc2236768}, +{0x64,0x81c7e008}, +{0x68,0x81e80000}, +{0x6c,0x9de3bf98}, +{0x70,0xfa50245a}, +{0x74,0x80a76000}, +{0x78,0x0280003d}, +{0x7c,0x9e102001}, +{0xf0,0x46}, +{0x00,0xc20022fc}, +{0x04,0x80a3c001}, +{0x08,0x18800039}, +{0x0c,0x17000018}, +{0x10,0x8212e220}, +{0x14,0x9810001d}, +{0x18,0x9a006004}, +{0x1c,0xb6102001}, +{0x20,0xf20022f8}, +{0x24,0x80a6c019}, +{0x28,0xb4102000}, +{0x2c,0x1880002b}, +{0x30,0x82102000}, +{0x34,0xf0502458}, +{0x38,0xba036038}, +{0x3c,0xf8074000}, +{0x40,0xb606e001}, +{0x44,0x80a70018}, +{0x48,0x06800004}, +{0x4c,0xba076038}, +{0x50,0xb406801c}, +{0x54,0x82006001}, +{0x58,0x80a6c019}, +{0x5c,0x28bffff9}, +{0x60,0xf8074000}, +{0x64,0x80a06000}, +{0x68,0x2280001d}, +{0x6c,0x9e03e001}, +{0x70,0x953ea01f}, +{0x74,0x8182a000}, +{0x78,0x01000000}, +{0x7c,0x01000000}, +{0xf0,0x47}, +{0x00,0x01000000}, +{0x04,0x827e8001}, +{0x08,0x8258400c}, +{0x0c,0xbb38601f}, +{0x10,0xbb376016}, +{0x14,0x8200401d}, +{0x18,0xb6102001}, +{0x1c,0xfa0022f8}, +{0x20,0x80a6c01d}, +{0x24,0x1880000d}, +{0x28,0xb538600a}, +{0x2c,0x832be002}, +{0x30,0xba006038}, +{0x34,0xb812e220}, +{0x38,0xc207401c}, +{0x3c,0x8220401a}, +{0x40,0xc227401c}, +{0x44,0xb606e001}, +{0x48,0xc20022f8}, +{0x4c,0x80a6c001}, +{0x50,0x08bffffa}, +{0x54,0xba076038}, +{0x58,0x9e03e001}, +{0x5c,0xc20022fc}, +{0x60,0x80a3c001}, +{0x64,0x08bfffce}, +{0x68,0x9a036004}, +{0x6c,0x81c7e008}, +{0x70,0x81e80000}, +{0x74,0x9de3bf48}, +{0x78,0x1b00003f}, +{0x7c,0xc2002350}, +{0xf0,0x48}, +{0x00,0x9a1363ff}, +{0x04,0xba08400d}, +{0x08,0xa4102001}, +{0x0c,0xda0022f8}, +{0x10,0x80a4800d}, +{0x14,0x18800063}, +{0x18,0xa3306010}, +{0x1c,0xae10200e}, +{0x20,0xac10200e}, +{0x24,0xaa102000}, +{0x28,0xa8102000}, +{0x2c,0xa6102000}, +{0x30,0x80a46000}, +{0x34,0x02800033}, +{0x38,0xa0102000}, +{0x3c,0x03000018}, +{0x40,0x96106220}, +{0x44,0x92102000}, +{0x48,0x9807bfa8}, +{0x4c,0x8204c009}, +{0x50,0xda086440}, +{0x54,0x8205800d}, +{0x58,0x80a36000}, +{0x5c,0x02800007}, +{0x60,0x83286002}, +{0x64,0xc200400b}, +{0x68,0xc2230000}, +{0x6c,0x92026001}, +{0x70,0x10bffff7}, +{0x74,0x98032004}, +{0x78,0x7ffffc7d}, +{0x7c,0x9007bfa8}, +{0xf0,0x49}, +{0x00,0x80a74011}, +{0x04,0x1480000b}, +{0x08,0x9210001d}, +{0x0c,0x832f6002}, +{0x10,0x8200401e}, +{0x14,0x9a007fa8}, +{0x18,0xc2034000}, +{0x1c,0x92026001}, +{0x20,0xa0040001}, +{0x24,0x80a24011}, +{0x28,0x04bffffc}, +{0x2c,0x9a036004}, +{0x30,0x8224401d}, +{0x34,0x82006001}, +{0x38,0x9b3c201f}, +{0x3c,0x81836000}, +{0x40,0x01000000}, +{0x44,0x01000000}, +{0x48,0x01000000}, +{0x4c,0xa0fc0001}, +{0x50,0x36800007}, +{0x54,0xda0023c4}, +{0x58,0xc20023c8}, +{0x5c,0x80886020}, +{0x60,0x22800026}, +{0x64,0xaa056001}, +{0x68,0xda0023c4}, +{0x6c,0x9a5c000d}, +{0x70,0x833b601f}, +{0x74,0x83306018}, +{0x78,0x9a034001}, +{0x7c,0xa13b6008}, +{0xf0,0x4a}, +{0x00,0x92102000}, +{0x04,0x11000018}, +{0x08,0x82050009}, +{0x0c,0xda086440}, +{0x10,0x8205c00d}, +{0x14,0x94122220}, +{0x18,0x97286002}, +{0x1c,0x80a36000}, +{0x20,0x02800015}, +{0x24,0x92026001}, +{0x28,0xc202c00a}, +{0x2c,0x98204010}, +{0x30,0xda0822b0}, +{0x34,0x833b201f}, +{0x38,0x80a0000d}, +{0x3c,0x8220400c}, +{0x40,0x9a402000}, +{0x44,0x8330601f}, +{0x48,0x808b4001}, +{0x4c,0x22bfffef}, +{0x50,0xd822c00a}, +{0x54,0xda0ca2b0}, +{0x58,0x9a5b000d}, +{0x5c,0x833b601f}, +{0x60,0x83306019}, +{0x64,0x9a034001}, +{0x68,0x993b6007}, +{0x6c,0x10bfffe7}, +{0x70,0xd822c00a}, +{0x74,0xaa056001}, +{0x78,0xa604e00c}, +{0x7c,0x80a56001}, +{0xf0,0x4b}, +{0x00,0x04bfffac}, +{0x04,0xa805200c}, +{0x08,0xa404a001}, +{0x0c,0xc20022f8}, +{0x10,0x80a48001}, +{0x14,0xac05a00e}, +{0x18,0x08bfffa3}, +{0x1c,0xae05e00e}, +{0x20,0x81c7e008}, +{0x24,0x81e80000}, +{0x28,0x9de3bf98}, +{0x2c,0xc21023b6}, +{0x30,0xf81023be}, +{0x34,0x96102001}, +{0x38,0xfa0022f8}, +{0x3c,0x80a2c01d}, +{0x40,0xa8004001}, +{0x44,0xa407001c}, +{0x48,0x18800088}, +{0x4c,0xe6002214}, +{0x50,0x90102038}, +{0x54,0x92102038}, +{0x58,0x9810200e}, +{0x5c,0x15000018}, +{0x60,0xb8102001}, +{0x64,0xc20022fc}, +{0x68,0x80a70001}, +{0x6c,0x38800079}, +{0x70,0x9602e001}, +{0x74,0x2f000018}, +{0x78,0xac12a220}, +{0x7c,0xaa12a224}, +{0xf0,0x4c}, +{0x00,0x8203001c}, +{0x04,0xb7286002}, +{0x08,0xfa06c016}, +{0x0c,0x80a74013}, +{0x10,0x2480006b}, +{0x14,0xb8072001}, +{0x18,0x80a74014}, +{0x1c,0x16800014}, +{0x20,0x83286002}, +{0x24,0x80a74012}, +{0x28,0x06800007}, +{0x2c,0x8215e21c}, +{0x30,0xc206c015}, +{0x34,0x80a04012}, +{0x38,0x1680000c}, +{0x3c,0x8203001c}, +{0x40,0x8215e21c}, +{0x44,0xc206c001}, +{0x48,0x80a74001}, +{0x4c,0x2680005c}, +{0x50,0xb8072001}, +{0x54,0xc206c015}, +{0x58,0x80a74001}, +{0x5c,0x24800058}, +{0x60,0xb8072001}, +{0x64,0x8203001c}, +{0x68,0x83286002}, +{0x6c,0xfa0023c8}, +{0x70,0x808f6040}, +{0x74,0xf0004016}, +{0x78,0x0280000b}, +{0x7c,0xa2072001}, +{0xf0,0x4d}, +{0x00,0xfa0022fc}, +{0x04,0x83376001}, +{0x08,0x80a70001}, +{0x0c,0x28800007}, +{0x10,0x9a102000}, +{0x14,0x8227401c}, +{0x18,0xb8006001}, +{0x1c,0x10800003}, +{0x20,0x9a102001}, +{0x24,0x9a102000}, +{0x28,0xfa00221c}, +{0x2c,0xc2002220}, +{0x30,0xba5f401c}, +{0x34,0xba074001}, +{0x38,0xba5e001d}, +{0x3c,0x833f601f}, +{0x40,0x83306016}, +{0x44,0xba074001}, +{0x48,0xc2002224}, +{0x4c,0x8258401c}, +{0x50,0xbb3f600a}, +{0x54,0xba074001}, +{0x58,0xc2002240}, +{0x5c,0xb0074001}, +{0x60,0xc2002218}, +{0x64,0xb6070001}, +{0x68,0xa012a220}, +{0x6c,0xb92ee002}, +{0x70,0xba10001c}, +{0x74,0xb2024010}, +{0x78,0x9e020010}, +{0x7c,0xc20023c8}, +{0xf0,0x4e}, +{0x00,0x80886040}, +{0x04,0xb806401c}, +{0x08,0x02800007}, +{0x0c,0xb403c01d}, +{0x10,0xc20022fc}, +{0x14,0x83306001}, +{0x18,0x80a6c001}, +{0x1c,0x38800027}, +{0x20,0xb8100011}, +{0x24,0xfa0022fc}, +{0x28,0x8227401b}, +{0x2c,0x83286002}, +{0x30,0x80a6c01d}, +{0x34,0x18800020}, +{0x38,0x82064001}, +{0x3c,0x80a36000}, +{0x40,0x32800002}, +{0x44,0xb8006004}, +{0x48,0xc2070000}, +{0x4c,0x82204018}, +{0x50,0xc2270000}, +{0x54,0xfa002228}, +{0x58,0x8226c01d}, +{0x5c,0x80a6c01d}, +{0x60,0x04800013}, +{0x64,0xb85e0001}, +{0x68,0x80a36000}, +{0x6c,0x22800008}, +{0x70,0xc200222c}, +{0x74,0xc20022fc}, +{0x78,0x8220401b}, +{0x7c,0x83286002}, +{0xf0,0x4f}, +{0x00,0x8203c001}, +{0x04,0xb4006004}, +{0x08,0xc200222c}, +{0x0c,0x825f0001}, +{0x10,0xbb38601f}, +{0x14,0xbb376018}, +{0x18,0x8200401d}, +{0x1c,0xfa068000}, +{0x20,0x83386008}, +{0x24,0xba274001}, +{0x28,0xfa268000}, +{0x2c,0x10bfffd0}, +{0x30,0xb606e001}, +{0x34,0xb8100011}, +{0x38,0xb8072001}, +{0x3c,0xc20022fc}, +{0x40,0x80a70001}, +{0x44,0x08bfff90}, +{0x48,0x8203001c}, +{0x4c,0x9602e001}, +{0x50,0xc20022f8}, +{0x54,0x80a2c001}, +{0x58,0x9803200e}, +{0x5c,0x92026038}, +{0x60,0x08bfff80}, +{0x64,0x90022038}, +{0x68,0x81c7e008}, +{0x6c,0x81e80000}, +{0x70,0x9de3bf98}, +{0x74,0xc21023b6}, +{0x78,0xf81023be}, +{0x7c,0x96102001}, +{0xf0,0x50}, +{0x00,0xfa0022fc}, +{0x04,0x80a2c01d}, +{0x08,0xa0004001}, +{0x0c,0x9207001c}, +{0x10,0x1880005e}, +{0x14,0xd0002214}, +{0x18,0x15000018}, +{0x1c,0x9a102001}, +{0x20,0xc20022f8}, +{0x24,0x80a34001}, +{0x28,0x18800053}, +{0x2c,0x832ae002}, +{0x30,0xb2006038}, +{0x34,0x27000018}, +{0x38,0xa412a220}, +{0x3c,0xa212a258}, +{0x40,0xfa064012}, +{0x44,0x80a74008}, +{0x48,0x24800047}, +{0x4c,0x9a036001}, +{0x50,0x80a74010}, +{0x54,0x36800013}, +{0x58,0xfa00221c}, +{0x5c,0x80a74009}, +{0x60,0x06800007}, +{0x64,0x8214e1e8}, +{0x68,0xc2064011}, +{0x6c,0x80a04009}, +{0x70,0x3680000c}, +{0x74,0xfa00221c}, +{0x78,0x8214e1e8}, +{0x7c,0xc2064001}, +{0xf0,0x51}, +{0x00,0x80a74001}, +{0x04,0x26800038}, +{0x08,0x9a036001}, +{0x0c,0xc2064011}, +{0x10,0x80a74001}, +{0x14,0x24800034}, +{0x18,0x9a036001}, +{0x1c,0xfa00221c}, +{0x20,0xc2002220}, +{0x24,0xba5f400d}, +{0x28,0xba074001}, +{0x2c,0xf8064012}, +{0x30,0xba5f001d}, +{0x34,0x833f601f}, +{0x38,0x83306016}, +{0x3c,0xba074001}, +{0x40,0xc2002224}, +{0x44,0x8258400d}, +{0x48,0xbb3f600a}, +{0x4c,0xba074001}, +{0x50,0xc2002218}, +{0x54,0xb6034001}, +{0x58,0xc2002240}, +{0x5c,0xb8074001}, +{0x60,0xc20022f8}, +{0x64,0x80a6c001}, +{0x68,0x1880001c}, +{0x6c,0x832ee003}, +{0x70,0x8220401b}, +{0x74,0x82004001}, +{0x78,0x8200400b}, +{0x7c,0xb5286002}, +{0xf0,0x52}, +{0x00,0x9812a220}, +{0x04,0xc206800c}, +{0x08,0x9e20401c}, +{0x0c,0xde26800c}, +{0x10,0xfa002228}, +{0x14,0x8226c01d}, +{0x18,0x80a6c01d}, +{0x1c,0xb05f0001}, +{0x20,0x0480000a}, +{0x24,0xb606e001}, +{0x28,0xc200222c}, +{0x2c,0x825e0001}, +{0x30,0xbb38601f}, +{0x34,0xbb376018}, +{0x38,0x8200401d}, +{0x3c,0x83386008}, +{0x40,0x8223c001}, +{0x44,0xc226800c}, +{0x48,0xc20022f8}, +{0x4c,0x80a6c001}, +{0x50,0x08bfffed}, +{0x54,0xb406a038}, +{0x58,0x9a036001}, +{0x5c,0xb2066038}, +{0x60,0x9a036001}, +{0x64,0xc20022f8}, +{0x68,0x80a34001}, +{0x6c,0x08bfffb5}, +{0x70,0xb2066038}, +{0x74,0x9602e001}, +{0x78,0xc20022fc}, +{0x7c,0x80a2c001}, +{0xf0,0x53}, +{0x00,0x08bfffa8}, +{0x04,0x9a102001}, +{0x08,0x81c7e008}, +{0x0c,0x81e80000}, +{0x10,0xc2002214}, +{0x14,0x80a06000}, +{0x18,0x0280000c}, +{0x1c,0x01000000}, +{0x20,0xc20023c8}, +{0x24,0x80886010}, +{0x28,0x02800005}, +{0x2c,0x01000000}, +{0x30,0x03000009}, +{0x34,0x81c061a8}, +{0x38,0x01000000}, +{0x3c,0x03000009}, +{0x40,0x81c063f0}, +{0x44,0x01000000}, +{0x48,0x01000000}, +{0x4c,0x81c3e008}, +{0x50,0x01000000}, +{0x54,0x9de3bf98}, +{0x58,0xb0102001}, +{0x5c,0xda002200}, +{0x60,0x80a6000d}, +{0x64,0x1880001d}, +{0x68,0xc0202504}, +{0x6c,0x03000018}, +{0x70,0x98106220}, +{0x74,0xde0022fc}, +{0x78,0xb2102007}, +{0x7c,0xb6102001}, +{0xf0,0x54}, +{0x00,0x80a6c00f}, +{0x04,0x18800011}, +{0x08,0x832e6003}, +{0x0c,0x8200400c}, +{0x10,0xba006004}, +{0x14,0xf4002238}, +{0x18,0xc2074000}, +{0x1c,0xb606e001}, +{0x20,0xba076004}, +{0x24,0x80a0401a}, +{0x28,0x08800005}, +{0x2c,0xb820401a}, +{0x30,0xc2002504}, +{0x34,0x8200401c}, +{0x38,0xc2202504}, +{0x3c,0x80a6c00f}, +{0x40,0x28bffff7}, +{0x44,0xc2074000}, +{0x48,0xb0062001}, +{0x4c,0x80a6000d}, +{0x50,0x08bfffeb}, +{0x54,0xb2066007}, +{0x58,0xfa002504}, +{0x5c,0xc200223c}, +{0x60,0x80a74001}, +{0x64,0x28800004}, +{0x68,0xc0202568}, +{0x6c,0x82102001}, +{0x70,0xc2202568}, +{0x74,0x033fc180}, +{0x78,0xfa002568}, +{0x7c,0x8210602c}, +{0xf0,0x55}, +{0x00,0xfa204000}, +{0x04,0xfa202570}, +{0x08,0x81c7e008}, +{0x0c,0x81e80000}, +{0x10,0x9de3bf70}, +{0x14,0x92102001}, +{0x18,0xd0002300}, +{0x1c,0x80a24008}, +{0x20,0x1880001c}, +{0x24,0x9e102000}, +{0x28,0x03000018}, +{0x2c,0xa2106220}, +{0x30,0xd4002308}, +{0x34,0x98102007}, +{0x38,0x96102001}, +{0x3c,0x80a2c00a}, +{0x40,0x38800011}, +{0x44,0x92026001}, +{0x48,0x832b2003}, +{0x4c,0x82004011}, +{0x50,0x82006004}, +{0x54,0xda004000}, +{0x58,0x80a3400f}, +{0x5c,0x04800005}, +{0x60,0x82006004}, +{0x64,0x9e10000d}, +{0x68,0xa0100009}, +{0x6c,0xa410000b}, +{0x70,0x9602e001}, +{0x74,0x80a2c00a}, +{0x78,0x28bffff8}, +{0x7c,0xda004000}, +{0xf0,0x56}, +{0x00,0x92026001}, +{0x04,0x80a24008}, +{0x08,0x08bfffec}, +{0x0c,0x98032007}, +{0x10,0xa2042001}, +{0x14,0x92043fff}, +{0x18,0x80a24011}, +{0x1c,0x1480002e}, +{0x20,0x9e102000}, +{0x24,0x832a6003}, +{0x28,0x90204009}, +{0x2c,0x03000018}, +{0x30,0xa6106220}, +{0x34,0xa004a001}, +{0x38,0x9604bfff}, +{0x3c,0x80a2c010}, +{0x40,0x14800021}, +{0x44,0x82020008}, +{0x48,0x8200400b}, +{0x4c,0x9b2be002}, +{0x50,0x83286002}, +{0x54,0x9a03401e}, +{0x58,0x94004013}, +{0x5c,0x9a037fd0}, +{0x60,0x833ae01f}, +{0x64,0x8220400b}, +{0x68,0x80a26000}, +{0x6c,0x0480000f}, +{0x70,0x9930601f}, +{0x74,0xc2002300}, +{0x78,0x80a04009}, +{0x7c,0x82603fff}, +{0xf0,0x57}, +{0x00,0x8088400c}, +{0x04,0x2280000a}, +{0x08,0xc0234000}, +{0x0c,0xc2002308}, +{0x10,0x80a2c001}, +{0x14,0x38800006}, +{0x18,0xc0234000}, +{0x1c,0xc2028000}, +{0x20,0x10800003}, +{0x24,0xc2234000}, +{0x28,0xc0234000}, +{0x2c,0x9602e001}, +{0x30,0x9e03e001}, +{0x34,0x9a036004}, +{0x38,0x80a2c010}, +{0x3c,0x04bfffe9}, +{0x40,0x9402a004}, +{0x44,0x92026001}, +{0x48,0x80a24011}, +{0x4c,0x04bfffdb}, +{0x50,0x90022007}, +{0x54,0x9007bfd0}, +{0x58,0x7ffffaa5}, +{0x5c,0x92102009}, +{0x60,0xda07bfec}, +{0x64,0xc207bfe8}, +{0x68,0x8200400d}, +{0x6c,0xda07bff0}, +{0x70,0x8200400d}, +{0x74,0x9b30601f}, +{0x78,0x8200400d}, +{0x7c,0xd6082347}, +{0xf0,0x58}, +{0x00,0x9602e001}, +{0x04,0xda00256c}, +{0x08,0xd808257f}, +{0x0c,0x9a5b400b}, +{0x10,0x98032001}, +{0x14,0x81800000}, +{0x18,0x01000000}, +{0x1c,0x01000000}, +{0x20,0x01000000}, +{0x24,0x9a73400c}, +{0x28,0x83386001}, +{0x2c,0xc2202590}, +{0x30,0xda20256c}, +{0x34,0x96102000}, +{0x38,0x94102c18}, +{0x3c,0x992ae002}, +{0x40,0xc20323b4}, +{0x44,0x80a06000}, +{0x48,0x12800009}, +{0x4c,0x80a2e002}, +{0x50,0xc2002520}, +{0x54,0x14800004}, +{0x58,0x9a200001}, +{0x5c,0x10800014}, +{0x60,0xc2232520}, +{0x64,0x10800012}, +{0x68,0xda232520}, +{0x6c,0xda1323b4}, +{0x70,0xc2002590}, +{0x74,0x8258400d}, +{0x78,0x9b38601f}, +{0x7c,0x9b336018}, +{0xf0,0x59}, +{0x00,0x8200400d}, +{0x04,0xda1323b6}, +{0x08,0x83386008}, +{0x0c,0x8200400d}, +{0x10,0xda00256c}, +{0x14,0x8258400d}, +{0x18,0x83306007}, +{0x1c,0x80a06c18}, +{0x20,0x04800003}, +{0x24,0xc2232520}, +{0x28,0xd4232520}, +{0x2c,0x9602e001}, +{0x30,0x80a2e003}, +{0x34,0x04bfffe3}, +{0x38,0x992ae002}, +{0x3c,0xda102472}, +{0x40,0xc2002288}, +{0x44,0x80a36000}, +{0x48,0x02800004}, +{0x4c,0xc220251c}, +{0x50,0x10800005}, +{0x54,0xda202530}, +{0x58,0x0300001f}, +{0x5c,0x821063ff}, +{0x60,0xc2202530}, +{0x64,0x81c7e008}, +{0x68,0x81e80000}, +{0x6c,0x9de3bf80}, +{0x70,0x832e6003}, +{0x74,0x82204019}, +{0x78,0x82004001}, +{0x7c,0x82004018}, +{0xf0,0x5a}, +{0x00,0x3b000018}, +{0x04,0x83286002}, +{0x08,0xc020254c}, +{0x0c,0xba176220}, +{0x10,0xea00401d}, +{0x14,0x9e100019}, +{0x18,0xb2100018}, +{0x1c,0xc2002528}, +{0x20,0x80a54001}, +{0x24,0x9810001a}, +{0x28,0x068000c9}, +{0x2c,0xb0102000}, +{0x30,0xa006401a}, +{0x34,0xa403c01a}, +{0x38,0x8207bfe0}, +{0x3c,0xb2102004}, +{0x40,0xc0204000}, +{0x44,0xb2867fff}, +{0x48,0x1cbffffe}, +{0x4c,0x82006004}, +{0x50,0x9e23c00c}, +{0x54,0x80a3c012}, +{0x58,0x14800061}, +{0x5c,0xb92be003}, +{0x60,0xba03c00f}, +{0x64,0x82048012}, +{0x68,0xb827000f}, +{0x6c,0xba07400f}, +{0x70,0x82004012}, +{0x74,0xba274001}, +{0x78,0x9607001c}, +{0x7c,0x92274010}, +{0xf0,0x5b}, +{0x00,0x9410000b}, +{0x04,0x2d000018}, +{0x08,0x8203000c}, +{0x0c,0xb2240001}, +{0x10,0x80a64010}, +{0x14,0x1480004c}, +{0x18,0xbb3be01f}, +{0x1c,0x82028019}, +{0x20,0xba27400f}, +{0x24,0x83286002}, +{0x28,0xb815a220}, +{0x2c,0xb6064009}, +{0x30,0x9a00401c}, +{0x34,0xa937601f}, +{0x38,0xb406e008}, +{0x3c,0x80a32001}, +{0x40,0x0280000c}, +{0x44,0x80a6600e}, +{0x48,0x18800003}, +{0x4c,0xba102001}, +{0x50,0xba102000}, +{0x54,0x80a3e019}, +{0x58,0x18800003}, +{0x5c,0x82102001}, +{0x60,0x82102000}, +{0x64,0x80974001}, +{0x68,0x32800033}, +{0x6c,0xb2066001}, +{0x70,0xc2034000}, +{0x74,0x80a04015}, +{0x78,0x14800003}, +{0x7c,0xba102001}, +{0xf0,0x5c}, +{0x00,0xba102000}, +{0x04,0x833e601f}, +{0x08,0x82204019}, +{0x0c,0x8330601f}, +{0x10,0x808f4001}, +{0x14,0x0280000c}, +{0x18,0x80a32001}, +{0x1c,0xc2002308}, +{0x20,0x80a04019}, +{0x24,0x82603fff}, +{0x28,0x80884014}, +{0x2c,0x02800006}, +{0x30,0x80a32001}, +{0x34,0xc2002300}, +{0x38,0x80a3c001}, +{0x3c,0x08800083}, +{0x40,0x80a32001}, +{0x44,0x3280001c}, +{0x48,0xb2066001}, +{0x4c,0x8202c019}, +{0x50,0xa3286002}, +{0x54,0x912b001a}, +{0x58,0xb6102000}, +{0x5c,0xa615a220}, +{0x60,0xb92ee002}, +{0x64,0xc2072520}, +{0x68,0xfa044013}, +{0x6c,0x80a74001}, +{0x70,0x0480000c}, +{0x74,0x8207bff8}, +{0x78,0x80a6e003}, +{0x7c,0x14800006}, +{0xf0,0x5d}, +{0x00,0xb0070001}, +{0x04,0xc2063fe8}, +{0x08,0x82104008}, +{0x0c,0x10800005}, +{0x10,0xc2263fe8}, +{0x14,0xc2063fe8}, +{0x18,0x82006001}, +{0x1c,0xc2263fe8}, +{0x20,0xb606e001}, +{0x24,0x80a6e004}, +{0x28,0x08bfffef}, +{0x2c,0xb92ee002}, +{0x30,0xb2066001}, +{0x34,0x9a036004}, +{0x38,0x80a64010}, +{0x3c,0x04bfffc0}, +{0x40,0xb406a001}, +{0x44,0x9e03e001}, +{0x48,0x92026003}, +{0x4c,0x9402a00e}, +{0x50,0x80a3c012}, +{0x54,0x04bfffad}, +{0x58,0x9602e00e}, +{0x5c,0xfa102470}, +{0x60,0xc207bff0}, +{0x64,0x80a0401d}, +{0x68,0x14800003}, +{0x6c,0xba102001}, +{0x70,0xba102000}, +{0x74,0x821b2002}, +{0x78,0x80a00001}, +{0x7c,0x82603fff}, +{0xf0,0x5e}, +{0x00,0x80974001}, +{0x04,0x12800052}, +{0x08,0xb0103fff}, +{0x0c,0xc207bfe0}, +{0x10,0x80886010}, +{0x14,0x0280000a}, +{0x18,0xfa07bfe4}, +{0x1c,0xc207bfec}, +{0x20,0x80886082}, +{0x24,0x02800007}, +{0x28,0x808f6082}, +{0x2c,0x80886028}, +{0x30,0x12800047}, +{0x34,0xb0102003}, +{0x38,0xfa07bfe4}, +{0x3c,0x808f6082}, +{0x40,0x02800007}, +{0x44,0x808f6028}, +{0x48,0xc207bfec}, +{0x4c,0x80886028}, +{0x50,0x3280003f}, +{0x54,0xb0102002}, +{0x58,0x808f6028}, +{0x5c,0x02800008}, +{0x60,0xf807bfe8}, +{0x64,0xc207bfec}, +{0x68,0x80886082}, +{0x6c,0x02800005}, +{0x70,0x820f200a}, +{0x74,0x10800036}, +{0x78,0xb0102002}, +{0x7c,0x820f200a}, +{0xf0,0x5f}, +{0x00,0x8218600a}, +{0x04,0x80a00001}, +{0x08,0xb2043fff}, +{0x0c,0xba603fff}, +{0x10,0x821e6001}, +{0x14,0x80a00001}, +{0x18,0xb6402000}, +{0x1c,0x808f401b}, +{0x20,0x02800005}, +{0x24,0x9e04bfff}, +{0x28,0x80a3e001}, +{0x2c,0x32800028}, +{0x30,0xb0102001}, +{0x34,0x820f2022}, +{0x38,0x80a06022}, +{0x3c,0x1280000d}, +{0x40,0x820f2088}, +{0x44,0xc2002308}, +{0x48,0x821e4001}, +{0x4c,0x80a00001}, +{0x50,0xba402000}, +{0x54,0x821be001}, +{0x58,0x80a00001}, +{0x5c,0x82402000}, +{0x60,0x808f4001}, +{0x64,0x3280001a}, +{0x68,0xb0102001}, +{0x6c,0x820f2088}, +{0x70,0x82186088}, +{0x74,0x80a00001}, +{0x78,0x82603fff}, +{0x7c,0x8088401b}, +{0xf0,0x60}, +{0x00,0x02800007}, +{0x04,0x820f20a0}, +{0x08,0xc2002300}, +{0x0c,0x80a3c001}, +{0x10,0x3280000f}, +{0x14,0xb0102001}, +{0x18,0x820f20a0}, +{0x1c,0x80a060a0}, +{0x20,0x1280000b}, +{0x24,0xb0102000}, +{0x28,0xc2002308}, +{0x2c,0x80a64001}, +{0x30,0x02800007}, +{0x34,0x01000000}, +{0x38,0xc2002300}, +{0x3c,0x80a3c001}, +{0x40,0x12800003}, +{0x44,0xb0102001}, +{0x48,0xb0102000}, +{0x4c,0x81c7e008}, +{0x50,0x81e80000}, +{0x54,0x9de3bf98}, +{0x58,0x832e2003}, +{0x5c,0x82204018}, +{0x60,0xb2100018}, +{0x64,0xbb286003}, +{0x68,0x31000018}, +{0x6c,0x82162224}, +{0x70,0xb6102002}, +{0x74,0xf40022fc}, +{0x78,0xf8074001}, +{0x7c,0x80a6c01a}, +{0xf0,0x61}, +{0x00,0x1880000f}, +{0x04,0x9e102001}, +{0x08,0x82162220}, +{0x0c,0x82074001}, +{0x10,0x82006008}, +{0x14,0xfa004000}, +{0x18,0x80a7401c}, +{0x1c,0x16800004}, +{0x20,0x82006004}, +{0x24,0xb810001d}, +{0x28,0x9e10001b}, +{0x2c,0xb606e001}, +{0x30,0x80a6c01a}, +{0x34,0x28bffff9}, +{0x38,0xfa004000}, +{0x3c,0x80a72000}, +{0x40,0x16800017}, +{0x44,0xb0102000}, +{0x48,0x832e6003}, +{0x4c,0x82204019}, +{0x50,0x82004001}, +{0x54,0x39000018}, +{0x58,0x8200400f}, +{0x5c,0x83286002}, +{0x60,0xba17221c}, +{0x64,0xb6172220}, +{0x68,0xfa00401d}, +{0x6c,0xf600401b}, +{0x70,0xb8172224}, +{0x74,0xc200401c}, +{0x78,0xba07401b}, +{0x7c,0xba074001}, +{0xf0,0x62}, +{0x00,0xc200220c}, +{0x04,0xba20001d}, +{0x08,0xba5f4001}, +{0x0c,0x833f601f}, +{0x10,0x83306018}, +{0x14,0xba074001}, +{0x18,0xb13f6008}, +{0x1c,0x81c7e008}, +{0x20,0x81e80000}, +{0x24,0x9de3bee8}, +{0x28,0xa0102000}, +{0x2c,0xc20022f8}, +{0x30,0x80a40001}, +{0x34,0x1a80000a}, +{0x38,0xa2042001}, +{0x3c,0x8207bff8}, +{0x40,0xa12c2002}, +{0x44,0xa0040001}, +{0x48,0x7fffffc3}, +{0x4c,0x90100011}, +{0x50,0xd0243fa0}, +{0x54,0x10bffff6}, +{0x58,0xa0100011}, +{0x5c,0xc0202514}, +{0x60,0xb607bff8}, +{0x64,0x8207bf48}, +{0x68,0xa2102013}, +{0x6c,0xc0204000}, +{0x70,0xa2847fff}, +{0x74,0x1cbffffe}, +{0x78,0x82006004}, +{0x7c,0xa2102000}, +{0xf0,0x63}, +{0x00,0x832c6002}, +{0x04,0xa2046001}, +{0x08,0x80a46009}, +{0x0c,0x04bffffd}, +{0x10,0xc0206768}, +{0x14,0xa0102001}, +{0x18,0xc20022f8}, +{0x1c,0x80a40001}, +{0x20,0x18800086}, +{0x24,0xb810201c}, +{0x28,0xba10200e}, +{0x2c,0xae10200e}, +{0x30,0xa2102001}, +{0x34,0xc20022fc}, +{0x38,0x80a44001}, +{0x3c,0x18800078}, +{0x40,0x03000044}, +{0x44,0xac040001}, +{0x48,0x9b2f2002}, +{0x4c,0x992f6002}, +{0x50,0x972de002}, +{0x54,0x03000050}, +{0x58,0xaa040001}, +{0x5c,0xa8036004}, +{0x60,0xa6032008}, +{0x64,0xa402e004}, +{0x68,0xc2002308}, +{0x6c,0x80a44001}, +{0x70,0x3880002f}, +{0x74,0xc2002304}, +{0x78,0xc2002300}, +{0x7c,0x80a40001}, +{0xf0,0x64}, +{0x00,0x38800041}, +{0x04,0xc200237c}, +{0x08,0x90100011}, +{0x0c,0x92100010}, +{0x10,0x7ffffeb7}, +{0x14,0x94102001}, +{0x18,0x80a22000}, +{0x1c,0x02800057}, +{0x20,0x1b000040}, +{0x24,0x1b000018}, +{0x28,0x8213621c}, +{0x2c,0x96136220}, +{0x30,0xd8048001}, +{0x34,0xd604800b}, +{0x38,0x9a136224}, +{0x3c,0x832c2002}, +{0x40,0x9803000b}, +{0x44,0xda04800d}, +{0x48,0x8200401b}, +{0x4c,0x9803000d}, +{0x50,0xc2007f9c}, +{0x54,0x80a30001}, +{0x58,0x06800048}, +{0x5c,0x1b000040}, +{0x60,0x80a22000}, +{0x64,0x3680000d}, +{0x68,0xc2002514}, +{0x6c,0x90100011}, +{0x70,0x92100010}, +{0x74,0x7ffffe9e}, +{0x78,0x94102002}, +{0x7c,0x80a22000}, +{0xf0,0x65}, +{0x00,0x0280003e}, +{0x04,0x1b000040}, +{0x08,0xc2002514}, +{0x0c,0x9b286002}, +{0x10,0x10800034}, +{0x14,0xea236768}, +{0x18,0x9b2c6010}, +{0x1c,0x9a034010}, +{0x20,0x99286002}, +{0x24,0x1080002f}, +{0x28,0xda232768}, +{0x2c,0x80a06000}, +{0x30,0x02800007}, +{0x34,0x19000018}, +{0x38,0xc2002300}, +{0x3c,0x80a40001}, +{0x40,0x0880002e}, +{0x44,0x1b000040}, +{0x48,0x19000018}, +{0x4c,0x82132220}, +{0x50,0xda04c001}, +{0x54,0xc200251c}, +{0x58,0x80a34001}, +{0x5c,0x24800027}, +{0x60,0x1b000040}, +{0x64,0x821321e8}, +{0x68,0xc204c001}, +{0x6c,0x80a0400d}, +{0x70,0x36800022}, +{0x74,0x1b000040}, +{0x78,0x82132258}, +{0x7c,0x10800013}, +{0xf0,0x66}, +{0x00,0xc204c001}, +{0x04,0x80a06000}, +{0x08,0x1280001c}, +{0x0c,0x1b000040}, +{0x10,0x19000018}, +{0x14,0x82132220}, +{0x18,0xda050001}, +{0x1c,0xc200251c}, +{0x20,0x80a34001}, +{0x24,0x24800015}, +{0x28,0x1b000040}, +{0x2c,0x8213221c}, +{0x30,0xc2050001}, +{0x34,0x80a0400d}, +{0x38,0x36800010}, +{0x3c,0x1b000040}, +{0x40,0x82132224}, +{0x44,0xc2050001}, +{0x48,0x80a34001}, +{0x4c,0x0680000b}, +{0x50,0x1b000040}, +{0x54,0xc2002514}, +{0x58,0x9b286002}, +{0x5c,0xec236768}, +{0x60,0x82006001}, +{0x64,0xc2202514}, +{0x68,0xc2002514}, +{0x6c,0x80a06009}, +{0x70,0x18800012}, +{0x74,0x1b000040}, +{0x78,0xa2046001}, +{0x7c,0xc20022fc}, +{0xf0,0x67}, +{0x00,0xac05800d}, +{0x04,0x80a44001}, +{0x08,0xa404a004}, +{0x0c,0xa604e004}, +{0x10,0xa8052004}, +{0x14,0x08bfff95}, +{0x18,0xaa05400d}, +{0x1c,0xa0042001}, +{0x20,0xc20022f8}, +{0x24,0x80a40001}, +{0x28,0xae05e00e}, +{0x2c,0xba07600e}, +{0x30,0x08bfff80}, +{0x34,0xb807200e}, +{0x38,0x81c7e008}, +{0x3c,0x81e80000}, +{0x40,0x80a22000}, +{0x44,0x2280001d}, +{0x48,0xc2002558}, +{0x4c,0xd4002208}, +{0x50,0x80a2a000}, +{0x54,0x0280002f}, +{0x58,0x01000000}, +{0x5c,0xc2002514}, +{0x60,0x80a06000}, +{0x64,0x12800007}, +{0x68,0xc2002558}, +{0x6c,0x80a06000}, +{0x70,0x02800028}, +{0x74,0x82007fff}, +{0x78,0x10800026}, +{0x7c,0xc2202558}, +{0xf0,0x68}, +{0x00,0x80a06000}, +{0x04,0x32800023}, +{0x08,0xd4202558}, +{0x0c,0x17200040}, +{0x10,0x193fc200}, +{0x14,0x8212e001}, +{0x18,0xc2230000}, +{0x1c,0xc200233c}, +{0x20,0x83306002}, +{0x24,0x9a132070}, +{0x28,0xc2234000}, +{0x2c,0xd6230000}, +{0x30,0x10800018}, +{0x34,0xd4202558}, +{0x38,0x80a06000}, +{0x3c,0x32800007}, +{0x40,0xc2002514}, +{0x44,0xc2002208}, +{0x48,0x80a06000}, +{0x4c,0x1280000e}, +{0x50,0x033fc200}, +{0x54,0xc2002514}, +{0x58,0x80a06001}, +{0x5c,0x08800006}, +{0x60,0xd800233c}, +{0x64,0x82007fff}, +{0x68,0xda002204}, +{0x6c,0x8258400d}, +{0x70,0x98030001}, +{0x74,0x033fc200}, +{0x78,0x82106070}, +{0x7c,0x10800005}, +{0xf0,0x69}, +{0x00,0xd8204000}, +{0x04,0xda002234}, +{0x08,0x82106070}, +{0x0c,0xda204000}, +{0x10,0x81c3e008}, +{0x14,0x01000000}, +{0x18,0x82220009}, +{0x1c,0x9a58400a}, +{0x20,0x833b601f}, +{0x24,0x80a20009}, +{0x28,0x83306019}, +{0x2c,0x04800004}, +{0x30,0x90102000}, +{0x34,0x82034001}, +{0x38,0x91386007}, +{0x3c,0x81c3e008}, +{0x40,0x01000000}, +{0x44,0x9de3bf98}, +{0x48,0xc2002308}, +{0x4c,0x82006001}, +{0x50,0xe60022fc}, +{0x54,0x80a4c001}, +{0x58,0x2a800019}, +{0x5c,0xe80022f8}, +{0x60,0x15000018}, +{0x64,0xa8102001}, +{0x68,0xc20022f8}, +{0x6c,0x80a50001}, +{0x70,0x1880000c}, +{0x74,0x832ce002}, +{0x78,0x9a006038}, +{0x7c,0x9612a224}, +{0xf0,0x6a}, +{0x00,0x9812a220}, +{0x04,0xc203400c}, +{0x08,0xc223400b}, +{0x0c,0xa8052001}, +{0x10,0xc20022f8}, +{0x14,0x80a50001}, +{0x18,0x08bffffb}, +{0x1c,0x9a036038}, +{0x20,0xc2002308}, +{0x24,0xa604ffff}, +{0x28,0x82006001}, +{0x2c,0x80a4c001}, +{0x30,0x1abfffee}, +{0x34,0xa8102001}, +{0x38,0xe80022f8}, +{0x3c,0x80a52000}, +{0x40,0x0280002a}, +{0x44,0x832d2003}, +{0x48,0xaa204014}, +{0x4c,0x27000018}, +{0x50,0xa52d6003}, +{0x54,0x8214e228}, +{0x58,0xa214e224}, +{0x5c,0xd2048001}, +{0x60,0xd408228c}, +{0x64,0x7fffffcd}, +{0x68,0xd0048011}, +{0x6c,0xac14e220}, +{0x70,0xd0248016}, +{0x74,0xc2002308}, +{0x78,0xa0054015}, +{0x7c,0xa0040001}, +{0xf0,0x6b}, +{0x00,0xa12c2002}, +{0x04,0x8214e21c}, +{0x08,0xd2040001}, +{0x0c,0xd408228d}, +{0x10,0x7fffffc2}, +{0x14,0xd0040016}, +{0x18,0xd0240011}, +{0x1c,0xc2002300}, +{0x20,0x80a50001}, +{0x24,0x2880000f}, +{0x28,0xa8853fff}, +{0x2c,0xa214e258}, +{0x30,0x98100016}, +{0x34,0x9a100012}, +{0x38,0xa6102000}, +{0x3c,0xc203400c}, +{0x40,0xc2234011}, +{0x44,0xc2002308}, +{0x48,0xa604e001}, +{0x4c,0x82006001}, +{0x50,0x80a4c001}, +{0x54,0x08bffffa}, +{0x58,0x9a036004}, +{0x5c,0xa8853fff}, +{0x60,0x12bfffdb}, +{0x64,0xaa057ff9}, +{0x68,0xa6102001}, +{0x6c,0xc2002308}, +{0x70,0x80a4c001}, +{0x74,0x18800019}, +{0x78,0x23000018}, +{0x7c,0xa12ce002}, +{0xf0,0x6c}, +{0x00,0x82146290}, +{0x04,0xa4146258}, +{0x08,0xd2040001}, +{0x0c,0xd408228e}, +{0x10,0x7fffffa2}, +{0x14,0xd0040012}, +{0x18,0x9a146220}, +{0x1c,0xd024000d}, +{0x20,0xc2002300}, +{0x24,0xa1286003}, +{0x28,0xa0240001}, +{0x2c,0xa0040010}, +{0x30,0xa0040013}, +{0x34,0xa12c2002}, +{0x38,0xa21461e8}, +{0x3c,0xd004000d}, +{0x40,0xd2040011}, +{0x44,0x7fffff95}, +{0x48,0xd408228f}, +{0x4c,0xd0240012}, +{0x50,0x10bfffe7}, +{0x54,0xa604e001}, +{0x58,0x17000018}, +{0x5c,0x9012e224}, +{0x60,0x9212e258}, +{0x64,0xda024000}, +{0x68,0xc2020000}, +{0x6c,0x8200400d}, +{0x70,0x9412e220}, +{0x74,0x83386001}, +{0x78,0xc2228000}, +{0x7c,0xd8002308}, +{0xf0,0x6d}, +{0x00,0x992b2002}, +{0x04,0x9612e25c}, +{0x08,0xda03000b}, +{0x0c,0xc203000a}, +{0x10,0x8200400d}, +{0x14,0x83386001}, +{0x18,0xc2230008}, +{0x1c,0xc2002300}, +{0x20,0x9b286003}, +{0x24,0x9a234001}, +{0x28,0x9b2b6003}, +{0x2c,0xd803400a}, +{0x30,0xc203400b}, +{0x34,0x8200400c}, +{0x38,0x83386001}, +{0x3c,0xc2234009}, +{0x40,0xda002300}, +{0x44,0x832b6003}, +{0x48,0x8220400d}, +{0x4c,0xda002308}, +{0x50,0x82004001}, +{0x54,0x8200400d}, +{0x58,0x83286002}, +{0x5c,0xda004009}, +{0x60,0xd8004008}, +{0x64,0x9a03400c}, +{0x68,0x9b3b6001}, +{0x6c,0xda20400b}, +{0x70,0x81c7e008}, +{0x74,0x81e80000}, +{0x78,0x80a2200d}, +{0x7c,0x82402000}, +{0xf0,0x6e}, +{0x00,0x80a26018}, +{0x04,0x90402000}, +{0x08,0x81c3e008}, +{0x0c,0x90084008}, +{0x10,0x9de3bf98}, +{0x14,0xa026001b}, +{0x18,0xae06001b}, +{0x1c,0xf427a04c}, +{0x20,0x03000007}, +{0x24,0xba1063fe}, +{0x28,0x80a40017}, +{0x2c,0xb8102000}, +{0x30,0xaa102000}, +{0x34,0xac102000}, +{0x38,0x1480001f}, +{0x3c,0xb4100010}, +{0x40,0x832c2003}, +{0x44,0x82204010}, +{0x48,0xa6004001}, +{0x4c,0xa226401b}, +{0x50,0xa806401b}, +{0x54,0x80a44014}, +{0x58,0x34800014}, +{0x5c,0xa0042001}, +{0x60,0x82044013}, +{0x64,0xa5286002}, +{0x68,0x90100011}, +{0x6c,0x7fffffe3}, +{0x70,0x92100010}, +{0x74,0x80a22000}, +{0x78,0x02800008}, +{0x7c,0xa2046001}, +{0xf0,0x6f}, +{0x00,0x03000018}, +{0x04,0x82106220}, +{0x08,0xc2048001}, +{0x0c,0x80a0401d}, +{0x10,0x26800002}, +{0x14,0xba100001}, +{0x18,0x80a44014}, +{0x1c,0x04bffff3}, +{0x20,0xa404a004}, +{0x24,0xa0042001}, +{0x28,0x80a40017}, +{0x2c,0x04bfffe8}, +{0x30,0xa604e00e}, +{0x34,0xc2002250}, +{0x38,0x80a74001}, +{0x3c,0x26800002}, +{0x40,0xba100001}, +{0x44,0xb006001b}, +{0x48,0x80a68018}, +{0x4c,0x14800029}, +{0x50,0xa010001a}, +{0x54,0x832ea003}, +{0x58,0x8220401a}, +{0x5c,0xa6004001}, +{0x60,0xa226401b}, +{0x64,0xa806401b}, +{0x68,0x80a44014}, +{0x6c,0x1480001a}, +{0x70,0x82044013}, +{0x74,0xa5286002}, +{0x78,0x90100011}, +{0x7c,0x7fffffbf}, +{0xf0,0x70}, +{0x00,0x92100010}, +{0x04,0x80a22000}, +{0x08,0x22800010}, +{0x0c,0xa2046001}, +{0x10,0x03000018}, +{0x14,0x82106220}, +{0x18,0xc2048001}, +{0x1c,0x8220401d}, +{0x20,0x9a046001}, +{0x24,0x98042001}, +{0x28,0x9658400d}, +{0x2c,0x80a06000}, +{0x30,0x04800005}, +{0x34,0x9a58400c}, +{0x38,0xaa05400d}, +{0x3c,0xac05800b}, +{0x40,0xb8070001}, +{0x44,0xa2046001}, +{0x48,0x80a44014}, +{0x4c,0x04bfffeb}, +{0x50,0xa404a004}, +{0x54,0xa0042001}, +{0x58,0x80a40018}, +{0x5c,0x04bfffe1}, +{0x60,0xa604e00e}, +{0x64,0x80a72000}, +{0x68,0x14800006}, +{0x6c,0x9b2d6006}, +{0x70,0xd807a04c}, +{0x74,0x832b2002}, +{0x78,0x1080001d}, +{0x7c,0xc0206768}, +{0xf0,0x71}, +{0x00,0x833b601f}, +{0x04,0x81806000}, +{0x08,0x01000000}, +{0x0c,0x01000000}, +{0x10,0x01000000}, +{0x14,0x9a7b401c}, +{0x18,0x832da006}, +{0x1c,0x9938601f}, +{0x20,0x81832000}, +{0x24,0x01000000}, +{0x28,0x01000000}, +{0x2c,0x01000000}, +{0x30,0x8278401c}, +{0x34,0xaa037fa0}, +{0x38,0x80a56000}, +{0x3c,0x14800003}, +{0x40,0xac007fa0}, +{0x44,0xaa102001}, +{0x48,0x80a5a000}, +{0x4c,0x24800002}, +{0x50,0xac102001}, +{0x54,0x9a0dafff}, +{0x58,0x832d6010}, +{0x5c,0x8210400d}, +{0x60,0xd807a04c}, +{0x64,0x9b2b2002}, +{0x68,0xc2236768}, +{0x6c,0x81c7e008}, +{0x70,0x81e80000}, +{0x74,0x9de3bf98}, +{0x78,0x03000018}, +{0x7c,0xb6106254}, +{0xf0,0x72}, +{0x00,0xb810625c}, +{0x04,0x96106258}, +{0x08,0xc2002274}, +{0x0c,0x80a06000}, +{0x10,0x832e2003}, +{0x14,0x82204018}, +{0x18,0x82004001}, +{0x1c,0x82004019}, +{0x20,0xb12e2006}, +{0x24,0xbb2e6006}, +{0x28,0xb5286002}, +{0x2c,0xb0063fe0}, +{0x30,0x9a066001}, +{0x34,0x98066002}, +{0x38,0x9f2e2010}, +{0x3c,0x02800020}, +{0x40,0x82077fe0}, +{0x44,0xfa06801b}, +{0x48,0xf806801c}, +{0x4c,0xf406800b}, +{0x50,0x8207401a}, +{0x54,0xb610001d}, +{0x58,0x80a7401c}, +{0x5c,0x04800003}, +{0x60,0xb000401c}, +{0x64,0xb610001c}, +{0x68,0x8227401b}, +{0x6c,0xba26801b}, +{0x70,0xba5f400d}, +{0x74,0x82584019}, +{0x78,0x8200401d}, +{0x7c,0xb827001b}, +{0xf0,0x73}, +{0x00,0xb85f000c}, +{0x04,0xba06c01b}, +{0x08,0x8200401c}, +{0x0c,0xba07401b}, +{0x10,0xba26001d}, +{0x14,0x83286006}, +{0x18,0x9b38601f}, +{0x1c,0x81836000}, +{0x20,0x01000000}, +{0x24,0x01000000}, +{0x28,0x01000000}, +{0x2c,0x8278401d}, +{0x30,0x82807fa0}, +{0x34,0x2c800002}, +{0x38,0x82102000}, +{0x3c,0xb003c001}, +{0x40,0xb0263000}, +{0x44,0x81c7e008}, +{0x48,0x81e80000}, +{0x4c,0x9de3bf98}, +{0x50,0xa2102000}, +{0x54,0xc2002514}, +{0x58,0x80a44001}, +{0x5c,0x1a800029}, +{0x60,0xa12c6002}, +{0x64,0xda042768}, +{0x68,0x93336010}, +{0x6c,0x8333600c}, +{0x70,0x900b6fff}, +{0x74,0x80886001}, +{0x78,0x02800006}, +{0x7c,0x920a6fff}, +{0xf0,0x74}, +{0x00,0x7fffffbd}, +{0x04,0xa2046001}, +{0x08,0x1080001a}, +{0x0c,0xd0242768}, +{0x10,0x80a36000}, +{0x14,0x22800017}, +{0x18,0xa2046001}, +{0x1c,0x93336010}, +{0x20,0xc200246c}, +{0x24,0x98100009}, +{0x28,0x9f33600e}, +{0x2c,0x80a06000}, +{0x30,0x900b6fff}, +{0x34,0x920a6fff}, +{0x38,0x0280000c}, +{0x3c,0x94100011}, +{0x40,0x808be001}, +{0x44,0x12800005}, +{0x48,0x96102002}, +{0x4c,0x920b2fff}, +{0x50,0x94100011}, +{0x54,0x96102001}, +{0x58,0x7fffff2e}, +{0x5c,0xa2046001}, +{0x60,0x10800005}, +{0x64,0xc2002514}, +{0x68,0x7ffff99f}, +{0x6c,0xa2046001}, +{0x70,0xc2002514}, +{0x74,0x80a44001}, +{0x78,0x0abfffdb}, +{0x7c,0xa12c6002}, +{0xf0,0x75}, +{0x00,0x81c7e008}, +{0x04,0x81e80000}, +{0x08,0x9de3bf98}, +{0x0c,0x9e102000}, +{0x10,0x832be002}, +{0x14,0xfa006768}, +{0x18,0x80a76000}, +{0x1c,0x2280002e}, +{0x20,0x9e03e001}, +{0x24,0x83376010}, +{0x28,0xba0f6fff}, +{0x2c,0x82086fff}, +{0x30,0xb403e001}, +{0x34,0x98076020}, +{0x38,0x96006020}, +{0x3c,0x80a6a009}, +{0x40,0x9a007fe0}, +{0x44,0xba077fe0}, +{0x48,0x18800022}, +{0x4c,0x832ea002}, +{0x50,0xf8006768}, +{0x54,0x80a72000}, +{0x58,0x2280001c}, +{0x5c,0xb406a001}, +{0x60,0xb7372010}, +{0x64,0xb60eefff}, +{0x68,0xb20f2fff}, +{0x6c,0x80a6c00d}, +{0x70,0x14800003}, +{0x74,0xb0102001}, +{0x78,0xb0102000}, +{0x7c,0x80a6c00b}, +{0xf0,0x76}, +{0x00,0x06800003}, +{0x04,0xb8102001}, +{0x08,0xb8102000}, +{0x0c,0x808e001c}, +{0x10,0x2280000e}, +{0x14,0xb406a001}, +{0x18,0x80a6401d}, +{0x1c,0x14800003}, +{0x20,0xb6102001}, +{0x24,0xb6102000}, +{0x28,0x80a6400c}, +{0x2c,0x06800003}, +{0x30,0xb8102001}, +{0x34,0xb8102000}, +{0x38,0x808ec01c}, +{0x3c,0x32800002}, +{0x40,0xc0206768}, +{0x44,0xb406a001}, +{0x48,0x10bfffe0}, +{0x4c,0x80a6a009}, +{0x50,0x9e03e001}, +{0x54,0x80a3e009}, +{0x58,0x08bfffcf}, +{0x5c,0x832be002}, +{0x60,0x81c7e008}, +{0x64,0x81e80000}, +{0x68,0xc2002510}, +{0x6c,0x82006001}, +{0x70,0x80a06008}, +{0x74,0x08800003}, +{0x78,0xc2202510}, +{0x7c,0xc0202510}, +{0xf0,0x77}, +{0x00,0xd8002510}, +{0x04,0x96102000}, +{0x08,0x832b2002}, +{0x0c,0x8200400c}, +{0x10,0x83286003}, +{0x14,0x82006600}, +{0x18,0x9b2ae002}, +{0x1c,0x80a32000}, +{0x20,0xc2236790}, +{0x24,0x12800003}, +{0x28,0x98033fff}, +{0x2c,0x98102008}, +{0x30,0x9602e001}, +{0x34,0x80a2e008}, +{0x38,0x04bffff5}, +{0x3c,0x832b2002}, +{0x40,0x0303ffc7}, +{0x44,0x921063ff}, +{0x48,0x98102000}, +{0x4c,0x96102000}, +{0x50,0x9b2ae002}, +{0x54,0xc2036768}, +{0x58,0x82084009}, +{0x5c,0x9602e001}, +{0x60,0x952b2002}, +{0x64,0x80a06000}, +{0x68,0x02800004}, +{0x6c,0xc2236768}, +{0x70,0x98032001}, +{0x74,0xc222a768}, +{0x78,0x80a2e009}, +{0x7c,0x24bffff6}, +{0xf0,0x78}, +{0x00,0x9b2ae002}, +{0x04,0x9610000c}, +{0x08,0x80a32009}, +{0x0c,0x14800007}, +{0x10,0xd8202514}, +{0x14,0x832ae002}, +{0x18,0x9602e001}, +{0x1c,0x80a2e009}, +{0x20,0x04bffffd}, +{0x24,0xc0206768}, +{0x28,0x81c3e008}, +{0x2c,0x01000000}, +{0x30,0x9de3bf98}, +{0x34,0xc20022f4}, +{0x38,0x80a06000}, +{0x3c,0x02800049}, +{0x40,0xb0102000}, +{0x44,0xc2002514}, +{0x48,0x80a60001}, +{0x4c,0x1a800045}, +{0x50,0x033c003f}, +{0x54,0x9e1063ff}, +{0x58,0xb52e2002}, +{0x5c,0xfa06a768}, +{0x60,0x8337600c}, +{0x64,0x80886001}, +{0x68,0x3280003a}, +{0x6c,0xb0062001}, +{0x70,0xb9376010}, +{0x74,0xb80f2fff}, +{0x78,0x80a7201f}, +{0x7c,0x2880001a}, +{0xf0,0x79}, +{0x00,0xfa06a768}, +{0x04,0xc2002300}, +{0x08,0x83286006}, +{0x0c,0x82007fe0}, +{0x10,0x80a70001}, +{0x14,0x38800014}, +{0x18,0xfa06a768}, +{0x1c,0x808f2020}, +{0x20,0x02800008}, +{0x24,0xb60f3fe0}, +{0x28,0x8238001c}, +{0x2c,0x8208601f}, +{0x30,0xc20862d4}, +{0x34,0x8226c001}, +{0x38,0x10800005}, +{0x3c,0x8200601f}, +{0x40,0x820f201f}, +{0x44,0xc20862d4}, +{0x48,0x8206c001}, +{0x4c,0x82086fff}, +{0x50,0x83286010}, +{0x54,0xba0f400f}, +{0x58,0xba174001}, +{0x5c,0xfa26a768}, +{0x60,0xfa06a768}, +{0x64,0xb80f6fff}, +{0x68,0x80a7201f}, +{0x6c,0x28800019}, +{0x70,0xb0062001}, +{0x74,0xc2002308}, +{0x78,0x83286006}, +{0x7c,0x82007fe0}, +{0xf0,0x7a}, +{0x00,0x80a70001}, +{0x04,0x38800013}, +{0x08,0xb0062001}, +{0x0c,0x808f6020}, +{0x10,0xb60f6fe0}, +{0x14,0x02800008}, +{0x18,0xb20f7000}, +{0x1c,0x8238001c}, +{0x20,0x8208601f}, +{0x24,0xc2086254}, +{0x28,0x8226c001}, +{0x2c,0x10800005}, +{0x30,0x8200601f}, +{0x34,0x820f601f}, +{0x38,0xc2086254}, +{0x3c,0x8206c001}, +{0x40,0x82086fff}, +{0x44,0x82164001}, +{0x48,0xc226a768}, +{0x4c,0xb0062001}, +{0x50,0xc2002514}, +{0x54,0x80a60001}, +{0x58,0x0abfffc1}, +{0x5c,0xb52e2002}, +{0x60,0x81c7e008}, +{0x64,0x81e80000}, +{0x68,0x912a2002}, +{0x6c,0xc2002794}, +{0x70,0xda004008}, +{0x74,0x033c003c}, +{0x78,0x822b4001}, +{0x7c,0x98102790}, +{0xf0,0x7b}, +{0x00,0xda030000}, +{0x04,0xc2234008}, +{0x08,0xd8030000}, +{0x0c,0xda030008}, +{0x10,0x03000020}, +{0x14,0x822b4001}, +{0x18,0x81c3e008}, +{0x1c,0xc2230008}, +{0x20,0x912a2002}, +{0x24,0xc2002790}, +{0x28,0xc0204008}, +{0x2c,0xc2002794}, +{0x30,0xc2104008}, +{0x34,0xda002798}, +{0x38,0xda134008}, +{0x3c,0x82086fff}, +{0x40,0x94004001}, +{0x44,0x9a0b6fff}, +{0x48,0x80a2800d}, +{0x4c,0x18800003}, +{0x50,0x9422800d}, +{0x54,0x94102000}, +{0x58,0xd6002790}, +{0x5c,0x9a0aafff}, +{0x60,0xd802c008}, +{0x64,0x0303ffc0}, +{0x68,0x9b2b6010}, +{0x6c,0x822b0001}, +{0x70,0x8210400d}, +{0x74,0xc222c008}, +{0x78,0xc2002794}, +{0x7c,0xc2004008}, +{0xf0,0x7c}, +{0x00,0xda002798}, +{0x04,0xda034008}, +{0x08,0x82086fff}, +{0x0c,0x94004001}, +{0x10,0x9a0b6fff}, +{0x14,0x80a2800d}, +{0x18,0x18800003}, +{0x1c,0x9422800d}, +{0x20,0x94102000}, +{0x24,0xd8002790}, +{0x28,0xc2030008}, +{0x2c,0x9a0aafff}, +{0x30,0x82087000}, +{0x34,0x8210400d}, +{0x38,0xc2230008}, +{0x3c,0xd8002790}, +{0x40,0xc2030008}, +{0x44,0x1b000020}, +{0x48,0x8210400d}, +{0x4c,0x81c3e008}, +{0x50,0xc2230008}, +{0x54,0x912a2002}, +{0x58,0xc2002790}, +{0x5c,0xc0204008}, +{0x60,0xc2002794}, +{0x64,0xda104008}, +{0x68,0xc200279c}, +{0x6c,0xd6104008}, +{0x70,0xc2002798}, +{0x74,0x9a0b6fff}, +{0x78,0xd8104008}, +{0x7c,0x832b6002}, +{0xf0,0x7d}, +{0x00,0x8200400d}, +{0x04,0x960aefff}, +{0x08,0x980b2fff}, +{0x0c,0x8200400b}, +{0x10,0x992b2002}, +{0x14,0x80a0400c}, +{0x18,0x18800003}, +{0x1c,0x8220400c}, +{0x20,0x82102000}, +{0x24,0xd6002790}, +{0x28,0x9b306001}, +{0x2c,0xd802c008}, +{0x30,0x9a0b6fff}, +{0x34,0x0303ffc0}, +{0x38,0x822b0001}, +{0x3c,0x9b2b6010}, +{0x40,0x8210400d}, +{0x44,0xc222c008}, +{0x48,0xc2002794}, +{0x4c,0xda004008}, +{0x50,0xc200279c}, +{0x54,0xd6004008}, +{0x58,0xc2002798}, +{0x5c,0x9a0b6fff}, +{0x60,0xd8004008}, +{0x64,0x832b6002}, +{0x68,0x8200400d}, +{0x6c,0x960aefff}, +{0x70,0x980b2fff}, +{0x74,0x8200400b}, +{0x78,0x992b2002}, +{0x7c,0x80a0400c}, +{0xf0,0x7e}, +{0x00,0x18800003}, +{0x04,0x8220400c}, +{0x08,0x82102000}, +{0x0c,0xd8002790}, +{0x10,0x9b306001}, +{0x14,0xc2030008}, +{0x18,0x9a0b6fff}, +{0x1c,0x82087000}, +{0x20,0x8210400d}, +{0x24,0xc2230008}, +{0x28,0xd8002790}, +{0x2c,0xc2030008}, +{0x30,0x1b000020}, +{0x34,0x8210400d}, +{0x38,0x81c3e008}, +{0x3c,0xc2230008}, +{0x40,0x9de3bf98}, +{0x44,0xa2102000}, +{0x48,0xa12c6002}, +{0x4c,0xc2002794}, +{0x50,0xc2004010}, +{0x54,0x80a06000}, +{0x58,0x0280001f}, +{0x5c,0x0303ffc3}, +{0x60,0xc2002798}, +{0x64,0xc2004010}, +{0x68,0x80a06000}, +{0x6c,0x0280000c}, +{0x70,0x01000000}, +{0x74,0x8330600d}, +{0x78,0x80886001}, +{0x7c,0x12800008}, +{0xf0,0x7f}, +{0x00,0x01000000}, +{0x04,0xc200279c}, +{0x08,0xda004010}, +{0x0c,0x8333600d}, +{0x10,0x80886001}, +{0x14,0x02800006}, +{0x18,0x80a36000}, +{0x1c,0x7fffff73}, +{0x20,0x90100011}, +{0x24,0x10800010}, +{0x28,0xc2002794}, +{0x2c,0x02800006}, +{0x30,0x01000000}, +{0x34,0x7fffffa8}, +{0x38,0x90100011}, +{0x3c,0x1080000a}, +{0x40,0xc2002794}, +{0x44,0x7fffff77}, +{0x48,0x90100011}, +{0x4c,0x10800006}, +{0x50,0xc2002794}, +{0x54,0x821063ff}, +{0x58,0xda002790}, +{0x5c,0xc2234010}, +{0x60,0xc2002794}, +{0x64,0xc2004010}, +{0x68,0x8330600c}, +{0x6c,0x80886001}, +{0x70,0x02800007}, +{0x74,0xa2046001}, +{0x78,0xc2002790}, +{0x7c,0xda004010}, +{0xf0,0x80}, +{0x00,0x19000004}, +{0x04,0x9a13400c}, +{0x08,0xda204010}, +{0x0c,0x80a46009}, +{0x10,0x04bfffcf}, +{0x14,0xa12c6002}, +{0x18,0x81c7e008}, +{0x1c,0x81e80000}, +{0x20,0xd6020000}, +{0x24,0xd8024000}, +{0x28,0x9132e010}, +{0x2c,0x95332010}, +{0x30,0x900a2fff}, +{0x34,0x940aafff}, +{0x38,0x03000007}, +{0x3c,0x9a22000a}, +{0x40,0x821063ff}, +{0x44,0x940b0001}, +{0x48,0x900ac001}, +{0x4c,0x9022000a}, +{0x50,0x9a5b400d}, +{0x54,0x905a0008}, +{0x58,0x81c3e008}, +{0x5c,0x90034008}, +{0x60,0x031fffff}, +{0x64,0x9002200c}, +{0x68,0x821063ff}, +{0x6c,0x9a102063}, +{0x70,0xc2220000}, +{0x74,0x9a837fff}, +{0x78,0x1cbffffe}, +{0x7c,0x90022004}, +{0xf0,0x81}, +{0x00,0x81c3e008}, +{0x04,0x01000000}, +{0x08,0x031fffff}, +{0x0c,0x821063ff}, +{0x10,0xc2222008}, +{0x14,0x92102000}, +{0x18,0x96100008}, +{0x1c,0x94102000}, +{0x20,0x9a02e00c}, +{0x24,0xd8034000}, +{0x28,0xc2022008}, +{0x2c,0x80a30001}, +{0x30,0x16800005}, +{0x34,0x9a036004}, +{0x38,0xd8222008}, +{0x3c,0xd4220000}, +{0x40,0xd2222004}, +{0x44,0x9402a001}, +{0x48,0x80a2a009}, +{0x4c,0x24bffff7}, +{0x50,0xd8034000}, +{0x54,0x92026001}, +{0x58,0x80a26009}, +{0x5c,0x04bffff0}, +{0x60,0x9602e028}, +{0x64,0xda022008}, +{0x68,0x03200000}, +{0x6c,0x8238400d}, +{0x70,0x80a00001}, +{0x74,0x81c3e008}, +{0x78,0x90402000}, +{0x7c,0xc2022004}, +{0xf0,0x82}, +{0x00,0x9b286002}, +{0x04,0x9a034001}, +{0x08,0x031fffff}, +{0x0c,0x9b2b6003}, +{0x10,0x9a034008}, +{0x14,0x981063ff}, +{0x18,0x9a03600c}, +{0x1c,0x82102009}, +{0x20,0xd8234000}, +{0x24,0x82807fff}, +{0x28,0x1cbffffe}, +{0x2c,0x9a036004}, +{0x30,0xc2020000}, +{0x34,0x83286002}, +{0x38,0x82004008}, +{0x3c,0x8200600c}, +{0x40,0x9a102009}, +{0x44,0xd8204000}, +{0x48,0x9a837fff}, +{0x4c,0x1cbffffe}, +{0x50,0x82006028}, +{0x54,0x81c3e008}, +{0x58,0x01000000}, +{0x5c,0x98100008}, +{0x60,0x90102008}, +{0x64,0x9a102100}, +{0x68,0x832b4008}, +{0x6c,0x80a30001}, +{0x70,0x14800006}, +{0x74,0x01000000}, +{0x78,0x90023fff}, +{0x7c,0x80a22000}, +{0xf0,0x83}, +{0x00,0x14bffffb}, +{0x04,0x832b4008}, +{0x08,0x81c3e008}, +{0x0c,0x01000000}, +{0x10,0x9de3bdd0}, +{0x14,0xae07be58}, +{0x18,0x7fffffb2}, +{0x1c,0x90100017}, +{0x20,0xa6102000}, +{0x24,0xa12ce002}, +{0x28,0xd2002790}, +{0x2c,0xc2024010}, +{0x30,0x8330600f}, +{0x34,0x80886001}, +{0x38,0x2280000f}, +{0x3c,0xd000245c}, +{0x40,0xc2002794}, +{0x44,0x90004010}, +{0x48,0xc2004010}, +{0x4c,0x8330600d}, +{0x50,0x80886001}, +{0x54,0x02800004}, +{0x58,0x92024010}, +{0x5c,0x10800006}, +{0x60,0xd000245c}, +{0x64,0x7fffff8f}, +{0x68,0x01000000}, +{0x6c,0x7fffffdc}, +{0x70,0x01000000}, +{0x74,0xc2002358}, +{0x78,0x9807bff8}, +{0x7c,0x825a0001}, +{0xf0,0x84}, +{0x00,0x9a04000c}, +{0x04,0xa604e001}, +{0x08,0x80a4e009}, +{0x0c,0x04bfffe6}, +{0x10,0xc2237e38}, +{0x14,0xac10000c}, +{0x18,0xa6102000}, +{0x1c,0xa8102000}, +{0x20,0xea002790}, +{0x24,0x0303ffc3}, +{0x28,0xda054014}, +{0x2c,0x821063ff}, +{0x30,0x80a34001}, +{0x34,0x22800014}, +{0x38,0xa604e001}, +{0x3c,0xa2102000}, +{0x40,0xc2002514}, +{0x44,0x80a44001}, +{0x48,0x3a80000f}, +{0x4c,0xa604e001}, +{0x50,0xa005be6c}, +{0x54,0xa4102768}, +{0x58,0x90100012}, +{0x5c,0x7fffff71}, +{0x60,0x92054014}, +{0x64,0xd0240000}, +{0x68,0xa2046001}, +{0x6c,0xc2002514}, +{0x70,0x80a44001}, +{0x74,0xa404a004}, +{0x78,0x0abffff8}, +{0x7c,0xa0042028}, +{0xf0,0x85}, +{0x00,0xa604e001}, +{0x04,0xa8052004}, +{0x08,0x80a4e009}, +{0x0c,0x04bfffe5}, +{0x10,0xac05a004}, +{0x14,0xa2102000}, +{0x18,0xc2002514}, +{0x1c,0x80a44001}, +{0x20,0x1a80002d}, +{0x24,0x01000000}, +{0x28,0x7fffff78}, +{0x2c,0x90100017}, +{0x30,0x80a22000}, +{0x34,0xa0046001}, +{0x38,0x02800027}, +{0x3c,0x90100017}, +{0x40,0xd807be58}, +{0x44,0x832b2002}, +{0x48,0x8200401e}, +{0x4c,0xc2007e30}, +{0x50,0xda002230}, +{0x54,0x9a034001}, +{0x58,0xc2002548}, +{0x5c,0x9a5b4001}, +{0x60,0xc2002334}, +{0x64,0x82006001}, +{0x68,0x81800000}, +{0x6c,0x01000000}, +{0x70,0x01000000}, +{0x74,0x01000000}, +{0x78,0x9a734001}, +{0x7c,0xc207be60}, +{0xf0,0x86}, +{0x00,0x80a0400d}, +{0x04,0x98032001}, +{0x08,0xc207be5c}, +{0x0c,0x992b201c}, +{0x10,0x0a800007}, +{0x14,0x95286002}, +{0x18,0xc202a768}, +{0x1c,0x1b3c0000}, +{0x20,0x8210400d}, +{0x24,0x10800008}, +{0x28,0xc222a768}, +{0x2c,0xda02a768}, +{0x30,0x033c0000}, +{0x34,0x822b4001}, +{0x38,0x8210400c}, +{0x3c,0x7fffff70}, +{0x40,0xc222a768}, +{0x44,0xc2002514}, +{0x48,0x80a40001}, +{0x4c,0x0abfffd7}, +{0x50,0xa2100010}, +{0x54,0x81c7e008}, +{0x58,0x81e80000}, +{0x5c,0x92102000}, +{0x60,0xc2002514}, +{0x64,0x80a24001}, +{0x68,0x1a800037}, +{0x6c,0x0303ffff}, +{0x70,0x901063ff}, +{0x74,0x952a6002}, +{0x78,0xc202a768}, +{0x7c,0x8330601c}, +{0xf0,0x87}, +{0x00,0x80a00001}, +{0x04,0x9a603fff}, +{0x08,0x8218600f}, +{0x0c,0x80a00001}, +{0x10,0x82603fff}, +{0x14,0x80934001}, +{0x18,0x22800027}, +{0x1c,0x92026001}, +{0x20,0x9a102001}, +{0x24,0x96102000}, +{0x28,0x992ae002}, +{0x2c,0xc2032768}, +{0x30,0x8330601c}, +{0x34,0x80a0400d}, +{0x38,0x02800013}, +{0x3c,0x80a2e00a}, +{0x40,0xc2002794}, +{0x44,0xc200400c}, +{0x48,0x8330601c}, +{0x4c,0x80a0400d}, +{0x50,0x0280000d}, +{0x54,0x80a2e00a}, +{0x58,0xc2002798}, +{0x5c,0xc200400c}, +{0x60,0x8330601c}, +{0x64,0x80a0400d}, +{0x68,0x02800007}, +{0x6c,0x80a2e00a}, +{0x70,0x9602e001}, +{0x74,0x80a2e009}, +{0x78,0x08bfffed}, +{0x7c,0x992ae002}, +{0xf0,0x88}, +{0x00,0x80a2e00a}, +{0x04,0x22800007}, +{0x08,0xc202a768}, +{0x0c,0x9a036001}, +{0x10,0x80a3600a}, +{0x14,0x08bfffe5}, +{0x18,0x96102000}, +{0x1c,0xc202a768}, +{0x20,0x9b2b601c}, +{0x24,0x82084008}, +{0x28,0x8210400d}, +{0x2c,0xc222a768}, +{0x30,0x92026001}, +{0x34,0xc2002514}, +{0x38,0x80a24001}, +{0x3c,0x0abfffcf}, +{0x40,0x952a6002}, +{0x44,0x81c3e008}, +{0x48,0x01000000}, +{0x4c,0x98102000}, +{0x50,0x9b2b2002}, +{0x54,0x98032001}, +{0x58,0xc2002790}, +{0x5c,0x80a32009}, +{0x60,0x08bffffc}, +{0x64,0xc020400d}, +{0x68,0x98102000}, +{0x6c,0xc2002514}, +{0x70,0x80a30001}, +{0x74,0x1a800012}, +{0x78,0x033fffc7}, +{0x7c,0x941063ff}, +{0xf0,0x89}, +{0x00,0x832b2002}, +{0x04,0xda006768}, +{0x08,0x8333601c}, +{0x0c,0x82007fff}, +{0x10,0x98032001}, +{0x14,0x80a06009}, +{0x18,0x97286002}, +{0x1c,0x18800004}, +{0x20,0x9a0b400a}, +{0x24,0xc2002790}, +{0x28,0xda20400b}, +{0x2c,0xc2002514}, +{0x30,0x80a30001}, +{0x34,0x0abffff4}, +{0x38,0x832b2002}, +{0x3c,0x81c3e008}, +{0x40,0x01000000}, +{0x44,0x9de3bf98}, +{0x48,0x92102000}, +{0x4c,0x94026001}, +{0x50,0x80a2a009}, +{0x54,0x18800068}, +{0x58,0x9610000a}, +{0x5c,0x033c003f}, +{0x60,0x901063ff}, +{0x64,0xf6002790}, +{0x68,0xb32ae002}, +{0x6c,0xfa06c019}, +{0x70,0x80a76000}, +{0x74,0x2280005c}, +{0x78,0x9602e001}, +{0x7c,0xb52a6002}, +{0xf0,0x8a}, +{0x00,0xc206c01a}, +{0x04,0x80a06000}, +{0x08,0x22800057}, +{0x0c,0x9602e001}, +{0x10,0xda002794}, +{0x14,0xf0034019}, +{0x18,0x80a62000}, +{0x1c,0x22800052}, +{0x20,0x9602e001}, +{0x24,0xf803401a}, +{0x28,0x80a72000}, +{0x2c,0x2280004e}, +{0x30,0x9602e001}, +{0x34,0x83306010}, +{0x38,0xbb376010}, +{0x3c,0x98086fff}, +{0x40,0x9e0f6fff}, +{0x44,0x80a3000f}, +{0x48,0x16800009}, +{0x4c,0xbb372010}, +{0x50,0x83362010}, +{0x54,0xba0f6fff}, +{0x58,0x82086fff}, +{0x5c,0x80a74001}, +{0x60,0x3480000d}, +{0x64,0xc206c01a}, +{0x68,0x80a3000f}, +{0x6c,0x2480003e}, +{0x70,0x9602e001}, +{0x74,0xbb372010}, +{0x78,0x83362010}, +{0x7c,0xba0f6fff}, +{0xf0,0x8b}, +{0x00,0x82086fff}, +{0x04,0x80a74001}, +{0x08,0x36800037}, +{0x0c,0x9602e001}, +{0x10,0xc206c01a}, +{0x14,0xfa06c019}, +{0x18,0xb0086fff}, +{0x1c,0xb80f6fff}, +{0x20,0x80a6001c}, +{0x24,0x1680000a}, +{0x28,0x01000000}, +{0x2c,0xfa034019}, +{0x30,0xc203401a}, +{0x34,0x82086fff}, +{0x38,0xba0f6fff}, +{0x3c,0x80a0401d}, +{0x40,0x3480000e}, +{0x44,0xfa16c01a}, +{0x48,0x80a6001c}, +{0x4c,0x24800026}, +{0x50,0x9602e001}, +{0x54,0xc2002794}, +{0x58,0xfa004019}, +{0x5c,0xc200401a}, +{0x60,0x82086fff}, +{0x64,0xba0f6fff}, +{0x68,0x80a0401d}, +{0x6c,0x3680001e}, +{0x70,0x9602e001}, +{0x74,0xfa16c01a}, +{0x78,0xf806c019}, +{0x7c,0xba0f6fff}, +{0xf0,0x8c}, +{0x00,0xbb2f6010}, +{0x04,0x820f0008}, +{0x08,0x8210401d}, +{0x0c,0xc226c019}, +{0x10,0xf6002790}, +{0x14,0xc206c01a}, +{0x18,0x3b03ffc0}, +{0x1c,0xb80f001d}, +{0x20,0x82084008}, +{0x24,0x8210401c}, +{0x28,0xc226c01a}, +{0x2c,0xf8002790}, +{0x30,0xf6070019}, +{0x34,0xfa07001a}, +{0x38,0xba0f6fff}, +{0x3c,0x820ef000}, +{0x40,0x8210401d}, +{0x44,0xc2270019}, +{0x48,0xfa002790}, +{0x4c,0xc207401a}, +{0x50,0x82087000}, +{0x54,0xb60eefff}, +{0x58,0x8210401b}, +{0x5c,0xc227401a}, +{0x60,0x9602e001}, +{0x64,0x80a2e009}, +{0x68,0x28bfffa0}, +{0x6c,0xf6002790}, +{0x70,0x80a2a009}, +{0x74,0x08bfff96}, +{0x78,0x9210000a}, +{0x7c,0x81c7e008}, +{0xf0,0x8d}, +{0x00,0x81e80000}, +{0x04,0x9de3bf98}, +{0x08,0xa6102000}, +{0x0c,0xda002244}, +{0x10,0x80a36000}, +{0x14,0x02800033}, +{0x18,0xa12ce002}, +{0x1c,0xe4002790}, +{0x20,0xc2048010}, +{0x24,0x80a06000}, +{0x28,0x22800004}, +{0x2c,0xc204282c}, +{0x30,0x1080002c}, +{0x34,0xc024282c}, +{0x38,0x80a06000}, +{0x3c,0x2280000b}, +{0x40,0xc2002518}, +{0x44,0xc2002794}, +{0x48,0xc2004010}, +{0x4c,0x1b000008}, +{0x50,0x8210400d}, +{0x54,0xc2248010}, +{0x58,0xc204282c}, +{0x5c,0x82007fff}, +{0x60,0x10800020}, +{0x64,0xc224282c}, +{0x68,0x80a0400d}, +{0x6c,0x2a80001e}, +{0x70,0xa604e001}, +{0x74,0xe2002794}, +{0x78,0xc2044010}, +{0x7c,0x80a06000}, +{0xf0,0x8e}, +{0x00,0x22800019}, +{0x04,0xa604e001}, +{0x08,0x8330600d}, +{0x0c,0x80886001}, +{0x10,0x32800015}, +{0x14,0xa604e001}, +{0x18,0xd2002798}, +{0x1c,0xc2024010}, +{0x20,0x80a06000}, +{0x24,0x22800010}, +{0x28,0xa604e001}, +{0x2c,0x92024010}, +{0x30,0x7ffffe3c}, +{0x34,0x90044010}, +{0x38,0xc200224c}, +{0x3c,0x80a20001}, +{0x40,0x38800009}, +{0x44,0xa604e001}, +{0x48,0xc2002248}, +{0x4c,0xc224282c}, +{0x50,0xc2044010}, +{0x54,0x1b000008}, +{0x58,0x8210400d}, +{0x5c,0xc2248010}, +{0x60,0xa604e001}, +{0x64,0x80a4e009}, +{0x68,0x24bfffca}, +{0x6c,0xda002244}, +{0x70,0x81c7e008}, +{0x74,0x81e80000}, +{0x78,0x9de3bf98}, +{0x7c,0xc2002514}, +{0xf0,0x8f}, +{0x00,0x80a06000}, +{0x04,0x22800006}, +{0x08,0xc2002200}, +{0x0c,0xc2002314}, +{0x10,0x82200001}, +{0x14,0x10800062}, +{0x18,0xc2202538}, +{0x1c,0x80a06000}, +{0x20,0x1280005f}, +{0x24,0x01000000}, +{0x28,0xfa002314}, +{0x2c,0x80a76000}, +{0x30,0x0280005b}, +{0x34,0x01000000}, +{0x38,0xc2002538}, +{0x3c,0x82006001}, +{0x40,0x80a0401d}, +{0x44,0x06800056}, +{0x48,0xc2202538}, +{0x4c,0x9e102001}, +{0x50,0xc20022fc}, +{0x54,0x80a3c001}, +{0x58,0x18800051}, +{0x5c,0xc0202538}, +{0x60,0x13000017}, +{0x64,0x9a102001}, +{0x68,0xc20022f8}, +{0x6c,0x80a34001}, +{0x70,0x18800046}, +{0x74,0xf20be37f}, +{0x78,0x0300003f}, +{0x7c,0x941063ff}, +{0xf0,0x90}, +{0x00,0x21000017}, +{0x04,0x961263f8}, +{0x08,0x901261d0}, +{0x0c,0x98102001}, +{0x10,0xf8002548}, +{0x14,0x80a72008}, +{0x18,0xf400234c}, +{0x1c,0x08800005}, +{0x20,0x82064019}, +{0x24,0xc210400b}, +{0x28,0x10800003}, +{0x2c,0xb6004001}, +{0x30,0xf610400b}, +{0x34,0xb0064019}, +{0x38,0x81800000}, +{0x3c,0x01000000}, +{0x40,0x01000000}, +{0x44,0x01000000}, +{0x48,0xba76c01c}, +{0x4c,0xc2160008}, +{0x50,0xb6a74001}, +{0x54,0x22800027}, +{0x58,0xc200247c}, +{0x5c,0x80a6e000}, +{0x60,0x04800007}, +{0x64,0x832b001a}, +{0x68,0x80a6c001}, +{0x6c,0x3480000c}, +{0x70,0xb73ec01a}, +{0x74,0x1080000a}, +{0x78,0xb6102001}, +{0x7c,0x36800009}, +{0xf0,0x91}, +{0x00,0xb41421d0}, +{0x04,0x832b001a}, +{0x08,0x82200001}, +{0x0c,0x80a6c001}, +{0x10,0x36800003}, +{0x14,0xb6103fff}, +{0x18,0xb73ec01a}, +{0x1c,0xb41421d0}, +{0x20,0xc216001a}, +{0x24,0xb606c001}, +{0x28,0x808e6001}, +{0x2c,0x0280000a}, +{0x30,0x83366001}, +{0x34,0xb9286002}, +{0x38,0xc207001a}, +{0x3c,0x3b3fffc0}, +{0x40,0x8208401d}, +{0x44,0xba0ec00a}, +{0x48,0x8200401d}, +{0x4c,0x10800008}, +{0x50,0xc227001a}, +{0x54,0x83286002}, +{0x58,0xfa00401a}, +{0x5c,0xb92ee010}, +{0x60,0xba0f400a}, +{0x64,0xb807001d}, +{0x68,0xf820401a}, +{0x6c,0xc200247c}, +{0x70,0xb2064001}, +{0x74,0x9a036001}, +{0x78,0xc20022f8}, +{0x7c,0x80a34001}, +{0xf0,0x92}, +{0x00,0x28bfffc5}, +{0x04,0xf8002548}, +{0x08,0x9e03e001}, +{0x0c,0xc20022fc}, +{0x10,0x80a3c001}, +{0x14,0x08bfffb5}, +{0x18,0x9a102001}, +{0x1c,0x81c7e008}, +{0x20,0x81e80000}, +{0x24,0xc0202514}, +{0x28,0x9a102000}, +{0x2c,0x832b6002}, +{0x30,0xc2020001}, +{0x34,0x80a06000}, +{0x38,0x02800005}, +{0x3c,0x9a036001}, +{0x40,0xc2002514}, +{0x44,0x82006001}, +{0x48,0xc2202514}, +{0x4c,0x80a36009}, +{0x50,0x04bffff8}, +{0x54,0x832b6002}, +{0x58,0x81c3e008}, +{0x5c,0x01000000}, +{0x60,0x9de3bf98}, +{0x64,0xa8102000}, +{0x68,0xa0102000}, +{0x6c,0xc200235c}, +{0x70,0x80a06000}, +{0x74,0x32800004}, +{0x78,0xc0242768}, +{0x7c,0x1080005d}, +{0xf0,0x93}, +{0x00,0xc2002790}, +{0x04,0xc2002790}, +{0x08,0xc2004010}, +{0x0c,0x80a06000}, +{0x10,0x02800019}, +{0x14,0xda042854}, +{0x18,0x03300000}, +{0x1c,0x808b4001}, +{0x20,0x32800010}, +{0x24,0xc2002790}, +{0x28,0xda002514}, +{0x2c,0x80a36000}, +{0x30,0x22800053}, +{0x34,0xa8052001}, +{0x38,0x8203400d}, +{0x3c,0x8200400d}, +{0x40,0x82007ffd}, +{0x44,0xda00235c}, +{0x48,0x9b334001}, +{0x4c,0x9a0b6007}, +{0x50,0x03200000}, +{0x54,0x9a134001}, +{0x58,0xda242854}, +{0x5c,0xc2002790}, +{0x60,0xc2004010}, +{0x64,0x80a06000}, +{0x68,0x32800007}, +{0x6c,0xc2042854}, +{0x70,0xda042854}, +{0x74,0x03200000}, +{0x78,0x822b4001}, +{0x7c,0xc2242854}, +{0xf0,0x94}, +{0x00,0xc2042854}, +{0x04,0x1b300000}, +{0x08,0x9a08400d}, +{0x0c,0x19200000}, +{0x10,0x80a3400c}, +{0x14,0x12800019}, +{0x18,0xa40860ff}, +{0x1c,0x98102000}, +{0x20,0x832b2002}, +{0x24,0xc2006790}, +{0x28,0xc2004010}, +{0x2c,0x80a06000}, +{0x30,0x0280000b}, +{0x34,0x9b30600d}, +{0x38,0x808b6001}, +{0x3c,0x12800009}, +{0x40,0x80a30012}, +{0x44,0x98032001}, +{0x48,0x80a30012}, +{0x4c,0x24bffff6}, +{0x50,0x832b2002}, +{0x54,0x10800006}, +{0x58,0xc2042854}, +{0x5c,0x80a30012}, +{0x60,0x24800027}, +{0x64,0xa8052001}, +{0x68,0xc2042854}, +{0x6c,0x1b100000}, +{0x70,0x8210400d}, +{0x74,0xc2242854}, +{0x78,0xa32ca002}, +{0x7c,0xd0046790}, +{0xf0,0x95}, +{0x00,0xc2020010}, +{0x04,0x80a06000}, +{0x08,0x12800006}, +{0x0c,0x03100000}, +{0x10,0xda042854}, +{0x14,0x822b4001}, +{0x18,0x10800018}, +{0x1c,0xc2242854}, +{0x20,0xe6042854}, +{0x24,0x8334e01e}, +{0x28,0x80886001}, +{0x2c,0x22800014}, +{0x30,0xa8052001}, +{0x34,0x80a4a000}, +{0x38,0x2280000e}, +{0x3c,0xc2046790}, +{0x40,0xd204678c}, +{0x44,0x90020010}, +{0x48,0x7ffffd56}, +{0x4c,0x92024010}, +{0x50,0x80a22008}, +{0x54,0x34800007}, +{0x58,0xc2046790}, +{0x5c,0x820cfff0}, +{0x60,0x9a04bfff}, +{0x64,0x8210400d}, +{0x68,0xc2242854}, +{0x6c,0xc2046790}, +{0x70,0xc2004010}, +{0x74,0xc2242768}, +{0x78,0xa8052001}, +{0x7c,0x80a52009}, +{0xf0,0x96}, +{0x00,0x04bfff9b}, +{0x04,0xa0042004}, +{0x08,0x81c7e008}, +{0x0c,0x81e80000}, +{0x10,0x8332a01f}, +{0x14,0x8200400a}, +{0x18,0x83386001}, +{0x1c,0x80a24001}, +{0x20,0x26800015}, +{0x24,0x90102000}, +{0x28,0x9a024001}, +{0x2c,0x80a36008}, +{0x30,0x24800004}, +{0x34,0x92224001}, +{0x38,0x1080000f}, +{0x3c,0x90102000}, +{0x40,0x80a2400d}, +{0x44,0x1480000b}, +{0x48,0x912a2002}, +{0x4c,0x832a6002}, +{0x50,0xc2006790}, +{0x54,0xc2004008}, +{0x58,0x80a06000}, +{0x5c,0x02bffff7}, +{0x60,0x92026001}, +{0x64,0x80a2400d}, +{0x68,0x04bffffa}, +{0x6c,0x832a6002}, +{0x70,0x90102001}, +{0x74,0x81c3e008}, +{0x78,0x01000000}, +{0x7c,0x9de3bf98}, +{0xf0,0x97}, +{0x00,0x92100019}, +{0x04,0x90100018}, +{0x08,0x7fffffe2}, +{0x0c,0x9410001a}, +{0x10,0xa4100018}, +{0x14,0x80a22000}, +{0x18,0x12800028}, +{0x1c,0x92100019}, +{0x20,0xa33ea01f}, +{0x24,0x8334601f}, +{0x28,0x82068001}, +{0x2c,0x83386001}, +{0x30,0x80a64001}, +{0x34,0x2680000e}, +{0x38,0x8334601f}, +{0x3c,0x82264001}, +{0x40,0x83286002}, +{0x44,0xda006790}, +{0x48,0x832e2002}, +{0x4c,0xc2034001}, +{0x50,0x80a06000}, +{0x54,0x02800019}, +{0x58,0x92103fff}, +{0x5c,0x10800004}, +{0x60,0x8334601f}, +{0x64,0x10800015}, +{0x68,0x92100018}, +{0x6c,0x82068001}, +{0x70,0x83386001}, +{0x74,0xa0102001}, +{0x78,0x80a40001}, +{0x7c,0x1480000e}, +{0xf0,0x98}, +{0x00,0x90100012}, +{0x04,0xb0064010}, +{0x08,0x92100018}, +{0x0c,0x7fffffc1}, +{0x10,0x9410001a}, +{0x14,0x8334601f}, +{0x18,0x82068001}, +{0x1c,0xa0042001}, +{0x20,0x80a22000}, +{0x24,0x12bffff0}, +{0x28,0x83386001}, +{0x2c,0x10bffff4}, +{0x30,0x80a40001}, +{0x34,0x92103fff}, +{0x38,0x81c7e008}, +{0x3c,0x91e80009}, +{0x40,0x9de3bf98}, +{0x44,0xa32e2002}, +{0x48,0xc20467b4}, +{0x4c,0x80a06000}, +{0x50,0x0280001c}, +{0x54,0xb0102001}, +{0x58,0x8336a01f}, +{0x5c,0x82068001}, +{0x60,0xb5386001}, +{0x64,0xa026401a}, +{0x68,0xb2066001}, +{0x6c,0xc20ea35f}, +{0x70,0xb4584001}, +{0x74,0x80a40019}, +{0x78,0x14800011}, +{0x7c,0xb0102000}, +{0xf0,0x99}, +{0x00,0x832c2002}, +{0x04,0xd0006790}, +{0x08,0x90020011}, +{0x0c,0x7ffffce5}, +{0x10,0x920467b4}, +{0x14,0x80a2001a}, +{0x18,0x04800003}, +{0x1c,0xa0042001}, +{0x20,0xb0062001}, +{0x24,0x80a40019}, +{0x28,0x04bffff7}, +{0x2c,0x832c2002}, +{0x30,0x80a62001}, +{0x34,0x14800003}, +{0x38,0xb0102001}, +{0x3c,0xb0102000}, +{0x40,0x81c7e008}, +{0x44,0x81e80000}, +{0x48,0x9de3bf48}, +{0x4c,0xc2082360}, +{0x50,0x80a06000}, +{0x54,0x0280007c}, +{0x58,0xba102000}, +{0x5c,0xa6102000}, +{0x60,0xda04e854}, +{0x64,0x8333601e}, +{0x68,0x80886001}, +{0x6c,0x22800073}, +{0x70,0xba076001}, +{0x74,0x83336008}, +{0x78,0x820860ff}, +{0x7c,0x80a06002}, +{0xf0,0x9a}, +{0x00,0x0480000c}, +{0x04,0xa4102003}, +{0x08,0x82006002}, +{0x0c,0xa4106001}, +{0x10,0x80a4a009}, +{0x14,0x04800005}, +{0x18,0x80a4a002}, +{0x1c,0x10800005}, +{0x20,0xa4102009}, +{0x24,0x80a4a002}, +{0x28,0x0480005d}, +{0x2c,0x1b3fffc0}, +{0x30,0x94100012}, +{0x34,0xd20ce857}, +{0x38,0x7fffff91}, +{0x3c,0x9010001d}, +{0x40,0xa2100008}, +{0x44,0x94100012}, +{0x48,0x92946000}, +{0x4c,0x04800051}, +{0x50,0x9010001d}, +{0x54,0x7fffffbb}, +{0x58,0x01000000}, +{0x5c,0x80a22000}, +{0x60,0x32bffff1}, +{0x64,0xa404bffe}, +{0x68,0xad3ca01f}, +{0x6c,0x8335a01f}, +{0x70,0x82048001}, +{0x74,0x83386001}, +{0x78,0x9a044001}, +{0x7c,0xa0244001}, +{0xf0,0x9b}, +{0x00,0x80a4000d}, +{0x04,0x1480000f}, +{0x08,0x9610000d}, +{0x0c,0x9807bff8}, +{0x10,0x832c2002}, +{0x14,0xda006790}, +{0x18,0xc2134013}, +{0x1c,0x82086fff}, +{0x20,0xc2233fd8}, +{0x24,0xc2034013}, +{0x28,0x82086fff}, +{0x2c,0xc2233fb0}, +{0x30,0xa0042001}, +{0x34,0x80a4000b}, +{0x38,0x04bffff6}, +{0x3c,0x98032004}, +{0x40,0x92100012}, +{0x44,0x7ffff22a}, +{0x48,0x9007bfd0}, +{0x4c,0x9007bfa8}, +{0x50,0x7ffff227}, +{0x54,0x92100012}, +{0x58,0x9935a01f}, +{0x5c,0x9804800c}, +{0x60,0x993b2001}, +{0x64,0x8207bff8}, +{0x68,0x952b2002}, +{0x6c,0x94028001}, +{0x70,0xda02bfd8}, +{0x74,0xd604e768}, +{0x78,0x9a0b6fff}, +{0x7c,0x0303ffc0}, +{0xf0,0x9c}, +{0x00,0x9b2b6010}, +{0x04,0x822ac001}, +{0x08,0x8210400d}, +{0x0c,0xc224e768}, +{0x10,0xda02bfb0}, +{0x14,0x9a0b6fff}, +{0x18,0x82087000}, +{0x1c,0x8210400d}, +{0x20,0xc224e768}, +{0x24,0x832c6002}, +{0x28,0xda006790}, +{0x2c,0x8204400c}, +{0x30,0xa024400c}, +{0x34,0x80a40001}, +{0x38,0x031fffff}, +{0x3c,0xea034013}, +{0x40,0xae1063ff}, +{0x44,0x14800011}, +{0x48,0x832c2002}, +{0x4c,0xe8006790}, +{0x50,0x90050013}, +{0x54,0x7ffffc73}, +{0x58,0x9204e768}, +{0x5c,0x8335a01f}, +{0x60,0x82048001}, +{0x64,0x83386001}, +{0x68,0xa0042001}, +{0x6c,0x80a20017}, +{0x70,0x16800004}, +{0x74,0x82044001}, +{0x78,0xae100008}, +{0x7c,0xea050013}, +{0xf0,0x9d}, +{0x00,0x10bffff1}, +{0x04,0x80a40001}, +{0x08,0x10800004}, +{0x0c,0xea24e768}, +{0x10,0x10bfffa5}, +{0x14,0xa404bffe}, +{0x18,0x1b3fffc0}, +{0x1c,0xc204e854}, +{0x20,0x9a1360ff}, +{0x24,0x8208400d}, +{0x28,0x9b2ca008}, +{0x2c,0x8210400d}, +{0x30,0xc224e854}, +{0x34,0xba076001}, +{0x38,0x80a76009}, +{0x3c,0x04bfff89}, +{0x40,0xa604e004}, +{0x44,0x81c7e008}, +{0x48,0x81e80000}, +{0x4c,0x9de3bf98}, +{0x50,0xa6102000}, +{0x54,0xa12ce002}, +{0x58,0xda042768}, +{0x5c,0x80a36000}, +{0x60,0x12800008}, +{0x64,0x82102001}, +{0x68,0xc02427b4}, +{0x6c,0xda002550}, +{0x70,0x83284013}, +{0x74,0x822b4001}, +{0x78,0x1080001c}, +{0x7c,0xc2202550}, +{0xf0,0x9e}, +{0x00,0xe80427b4}, +{0x04,0x80a52000}, +{0x08,0x12800004}, +{0x0c,0xa5284013}, +{0x10,0x10800016}, +{0x14,0xda2427b4}, +{0x18,0xe2002550}, +{0x1c,0x808c4012}, +{0x20,0x32800011}, +{0x24,0xc2042768}, +{0x28,0x8333600c}, +{0x2c,0x80886001}, +{0x30,0x3280000d}, +{0x34,0xc2042768}, +{0x38,0x90042768}, +{0x3c,0x7ffffc39}, +{0x40,0x920427b4}, +{0x44,0xc2002354}, +{0x48,0x80a20001}, +{0x4c,0x1a800004}, +{0x50,0x82144012}, +{0x54,0x10800005}, +{0x58,0xe8242768}, +{0x5c,0xc2202550}, +{0x60,0xc2042768}, +{0x64,0xc22427b4}, +{0x68,0xa604e001}, +{0x6c,0x80a4e009}, +{0x70,0x08bfffda}, +{0x74,0xa12ce002}, +{0x78,0x81c7e008}, +{0x7c,0x81e80000}, +{0xf0,0x9f}, +{0x00,0x9de3bf98}, +{0x04,0xc2060000}, +{0x08,0xbb30600c}, +{0x0c,0xb9306010}, +{0x10,0xb80f2fff}, +{0x14,0xb08f6001}, +{0x18,0xb6086fff}, +{0x1c,0x12800014}, +{0x20,0x9f30601c}, +{0x24,0xc250229e}, +{0x28,0xfa5022a2}, +{0x2c,0x8226c001}, +{0x30,0xba27001d}, +{0x34,0xf850229c}, +{0x38,0xf65022a0}, +{0x3c,0x8258401c}, +{0x40,0xba5f401b}, +{0x44,0x82006800}, +{0x48,0xba076800}, +{0x4c,0xb938601f}, +{0x50,0xb73f601f}, +{0x54,0xb9372014}, +{0x58,0xb736e014}, +{0x5c,0x8200401c}, +{0x60,0xba07401b}, +{0x64,0xb738600c}, +{0x68,0xb93f600c}, +{0x6c,0xf4002324}, +{0x70,0xf2002328}, +{0x74,0xfa002308}, +{0x78,0xc2002300}, +{0x7c,0xb65ec01a}, +{0xf0,0xa0}, +{0x00,0xbb2f6006}, +{0x04,0xb85f0019}, +{0x08,0x83286006}, +{0x0c,0x9b3ee01f}, +{0x10,0x81836000}, +{0x14,0x01000000}, +{0x18,0x01000000}, +{0x1c,0x01000000}, +{0x20,0xb67ec01d}, +{0x24,0x9b3f201f}, +{0x28,0x81836000}, +{0x2c,0x01000000}, +{0x30,0x01000000}, +{0x34,0x01000000}, +{0x38,0xb87f0001}, +{0x3c,0x80a62000}, +{0x40,0x32800031}, +{0x44,0x3b03ffc0}, +{0x48,0xc20022a4}, +{0x4c,0x80a06000}, +{0x50,0x0280000a}, +{0x54,0x80a6e000}, +{0x58,0xc25022a6}, +{0x5c,0x80a6c001}, +{0x60,0x14800031}, +{0x64,0xb0102000}, +{0x68,0xc25022a4}, +{0x6c,0x80a6c001}, +{0x70,0x0680002d}, +{0x74,0x80a6e000}, +{0x78,0x24800002}, +{0x7c,0xb6102001}, +{0xf0,0xa1}, +{0x00,0x80a6c01a}, +{0x04,0x3a800002}, +{0x08,0xb606bfff}, +{0x0c,0xc20022a8}, +{0x10,0x80a06000}, +{0x14,0x0280000a}, +{0x18,0x80a72000}, +{0x1c,0xc25022aa}, +{0x20,0x80a70001}, +{0x24,0x14800020}, +{0x28,0xb0102000}, +{0x2c,0xc25022a8}, +{0x30,0x80a70001}, +{0x34,0x0680001c}, +{0x38,0x80a72000}, +{0x3c,0x24800002}, +{0x40,0xb8102001}, +{0x44,0x80a70019}, +{0x48,0x3a800002}, +{0x4c,0xb8067fff}, +{0x50,0xc20023c8}, +{0x54,0x80886002}, +{0x58,0x32800002}, +{0x5c,0xb626801b}, +{0x60,0x80886004}, +{0x64,0x32800002}, +{0x68,0xb826401c}, +{0x6c,0x80886008}, +{0x70,0x02800005}, +{0x74,0x3b03ffc0}, +{0x78,0xb61ec01c}, +{0x7c,0xb81f001b}, +{0xf0,0xa2}, +{0x00,0xb61ec01c}, +{0x04,0x832ee010}, +{0x08,0x8208401d}, +{0x0c,0xbb2be01c}, +{0x10,0xba074001}, +{0x14,0x0300003f}, +{0x18,0x821063ff}, +{0x1c,0x820f0001}, +{0x20,0xb0074001}, +{0x24,0x81c7e008}, +{0x28,0x81e80000}, +{0x2c,0x9de3bf98}, +{0x30,0xda002514}, +{0x34,0xc2002284}, +{0x38,0x80a34001}, +{0x3c,0x0880000a}, +{0x40,0xa0102000}, +{0x44,0xc20023c8}, +{0x48,0x80886001}, +{0x4c,0x02800007}, +{0x50,0xa2102000}, +{0x54,0x033fc180}, +{0x58,0xc0204000}, +{0x5c,0x1080001c}, +{0x60,0xc0202514}, +{0x64,0xa2102000}, +{0x68,0x912c6002}, +{0x6c,0xc2022768}, +{0x70,0x9b30601c}, +{0x74,0x80a36000}, +{0x78,0x0280000f}, +{0x7c,0xa2046001}, +{0xf0,0xa3}, +{0x00,0xc2002284}, +{0x04,0x80a34001}, +{0x08,0x1880000b}, +{0x0c,0x90022768}, +{0x10,0x7fffff7c}, +{0x14,0x01000000}, +{0x18,0x80a22000}, +{0x1c,0x02800007}, +{0x20,0x80a46009}, +{0x24,0xa0042001}, +{0x28,0x9b2c2002}, +{0x2c,0x033fc180}, +{0x30,0xd0234001}, +{0x34,0x80a46009}, +{0x38,0x28bfffed}, +{0x3c,0x912c6002}, +{0x40,0x033fc180}, +{0x44,0xe0204000}, +{0x48,0xe0202514}, +{0x4c,0x81c7e008}, +{0x50,0x81e80000}, +{0x54,0x9de3bf98}, +{0x58,0xd0002320}, +{0x5c,0x80a22000}, +{0x60,0x0280004b}, +{0x64,0x01000000}, +{0x68,0xc200231c}, +{0x6c,0x80a06000}, +{0x70,0x22800016}, +{0x74,0xd800231c}, +{0x78,0x82063fff}, +{0x7c,0x80a06001}, +{0xf0,0xa4}, +{0x00,0x38800012}, +{0x04,0xd800231c}, +{0x08,0xc2002318}, +{0x0c,0x80a06000}, +{0x10,0x12800008}, +{0x14,0x213fc000}, +{0x18,0xa0142020}, +{0x1c,0x82102001}, +{0x20,0x7ffff019}, +{0x24,0xc2240000}, +{0x28,0x10800007}, +{0x2c,0xc0240000}, +{0x30,0xa0142020}, +{0x34,0x7ffff014}, +{0x38,0xc0240000}, +{0x3c,0x82102001}, +{0x40,0xc2240000}, +{0x44,0xd800231c}, +{0x48,0x80a0000c}, +{0x4c,0x82603fff}, +{0x50,0x9a1e2001}, +{0x54,0x80a0000d}, +{0x58,0x9a603fff}, +{0x5c,0x8088400d}, +{0x60,0x0280000d}, +{0x64,0x80a0000c}, +{0x68,0xc2002318}, +{0x6c,0x80a06000}, +{0x70,0x12800006}, +{0x74,0x033fc000}, +{0x78,0x9a102001}, +{0x7c,0x82106020}, +{0xf0,0xa5}, +{0x00,0x10800004}, +{0x04,0xda204000}, +{0x08,0x82106020}, +{0x0c,0xc0204000}, +{0x10,0x80a0000c}, +{0x14,0x82603fff}, +{0x18,0x9a1e2002}, +{0x1c,0x80a0000d}, +{0x20,0x9a603fff}, +{0x24,0x8088400d}, +{0x28,0x0280000d}, +{0x2c,0x80a62000}, +{0x30,0xc2002318}, +{0x34,0x80a06000}, +{0x38,0x12800005}, +{0x3c,0x033fc000}, +{0x40,0x82106020}, +{0x44,0x10800005}, +{0x48,0xc0204000}, +{0x4c,0x9a102001}, +{0x50,0x82106020}, +{0x54,0xda204000}, +{0x58,0x80a62000}, +{0x5c,0x1280000c}, +{0x60,0x01000000}, +{0x64,0xc2002318}, +{0x68,0x80a06000}, +{0x6c,0x12800005}, +{0x70,0x033fc000}, +{0x74,0x82106020}, +{0x78,0x10800005}, +{0x7c,0xc0204000}, +{0xf0,0xa6}, +{0x00,0x9a102001}, +{0x04,0x82106020}, +{0x08,0xda204000}, +{0x0c,0x81c7e008}, +{0x10,0x81e80000}, +{0x14,0x9de3bf98}, +{0x18,0xc2002514}, +{0x1c,0x80a06000}, +{0x20,0x12800007}, +{0x24,0x90102001}, +{0x28,0xda002568}, +{0x2c,0xc2002570}, +{0x30,0x80a34001}, +{0x34,0x22800006}, +{0x38,0xc2002514}, +{0x3c,0x82102001}, +{0x40,0x7fffffa5}, +{0x44,0xc220250c}, +{0x48,0xc2002514}, +{0x4c,0x80a06000}, +{0x50,0x1280000c}, +{0x54,0x01000000}, +{0x58,0xc200250c}, +{0x5c,0x80a06000}, +{0x60,0x02800008}, +{0x64,0x9a007fff}, +{0x68,0xb0102002}, +{0x6c,0x80a36000}, +{0x70,0x12800004}, +{0x74,0xda20250c}, +{0x78,0x7fffff97}, +{0x7c,0x81e80000}, +{0xf0,0xa7}, +{0x00,0x01000000}, +{0x04,0x81c7e008}, +{0x08,0x81e80000}, +{0x0c,0x01000000}, +{0x10,0x27001040}, +{0x14,0xa614e00f}, +{0x18,0xe6a00040}, +{0x1c,0x01000000}, +{0x20,0x81c3e008}, +{0x24,0x01000000}, +{0x28,0x9de3bf98}, +{0x2c,0xc2002508}, +{0x30,0x80a06000}, +{0x34,0x0280000e}, +{0x38,0x1b3fc180}, +{0x3c,0x82102001}, +{0x40,0x9a13603c}, +{0x44,0xc2234000}, +{0x48,0xc2002508}, +{0x4c,0x80a06000}, +{0x50,0x02800005}, +{0x54,0x033fc180}, +{0x58,0x7fffffed}, +{0x5c,0x01000000}, +{0x60,0x30bffffa}, +{0x64,0x8210603c}, +{0x68,0xc0204000}, +{0x6c,0x81c7e008}, +{0x70,0x81e80000}, +{0x74,0x9de3bf98}, +{0x78,0xda002500}, +{0x7c,0xc20022d0}, +{0xf0,0xa8}, +{0x00,0x80a34001}, +{0x04,0x18800025}, +{0x08,0xa4102000}, +{0x0c,0xd2002790}, +{0x10,0x832ca002}, +{0x14,0xe2024001}, +{0x18,0x80a46000}, +{0x1c,0x12800004}, +{0x20,0xa12ca003}, +{0x24,0x10800019}, +{0x28,0xc02427dc}, +{0x2c,0x92024001}, +{0x30,0xc20427dc}, +{0x34,0x80a06000}, +{0x38,0x02800008}, +{0x3c,0x900427dc}, +{0x40,0x7ffffaf8}, +{0x44,0x01000000}, +{0x48,0xc20022ac}, +{0x4c,0x80a20001}, +{0x50,0x28800005}, +{0x54,0xc20427e0}, +{0x58,0xe22427dc}, +{0x5c,0x1080000b}, +{0x60,0xc02427e0}, +{0x64,0x82006001}, +{0x68,0xc22427e0}, +{0x6c,0xda002378}, +{0x70,0x80a0400d}, +{0x74,0x28800006}, +{0x78,0xa404a001}, +{0x7c,0x7ffff069}, +{0xf0,0xa9}, +{0x00,0x01000000}, +{0x04,0x30800005}, +{0x08,0xa404a001}, +{0x0c,0x80a4a009}, +{0x10,0x24bfffe0}, +{0x14,0xd2002790}, +{0x18,0x81c7e008}, +{0x1c,0x81e80000}, +{0x20,0x9de3bf98}, +{0x24,0x7ffff54c}, +{0x28,0x01000000}, +{0x2c,0x7ffff390}, +{0x30,0x01000000}, +{0x34,0x7ffff3d0}, +{0x38,0x01000000}, +{0x3c,0x7ffff535}, +{0x40,0x01000000}, +{0x44,0x7ffff800}, +{0x48,0x01000000}, +{0x4c,0x7ffff571}, +{0x50,0x01000000}, +{0x54,0x7ffff714}, +{0x58,0x01000000}, +{0x5c,0x7ffff7b9}, +{0x60,0x90102001}, +{0x64,0x7ffff93a}, +{0x68,0x01000000}, +{0x6c,0x7ffffca3}, +{0x70,0x01000000}, +{0x74,0x7ffff9cf}, +{0x78,0x01000000}, +{0x7c,0x7ffff963}, +{0xf0,0xaa}, +{0x00,0x01000000}, +{0x04,0x7ffffd08}, +{0x08,0x90102768}, +{0x0c,0x7ffff997}, +{0x10,0x01000000}, +{0x14,0x7ffffa8b}, +{0x18,0x01000000}, +{0x1c,0x7ffffb1d}, +{0x20,0x01000000}, +{0x24,0x7ffffb8e}, +{0x28,0x01000000}, +{0x2c,0x7ffffbc8}, +{0x30,0x01000000}, +{0x34,0x7ffffbe4}, +{0x38,0x01000000}, +{0x3c,0x7ffffc52}, +{0x40,0x01000000}, +{0x44,0x7ffffcf8}, +{0x48,0xd0002790}, +{0x4c,0xc2002514}, +{0x50,0x7ffffd04}, +{0x54,0xc2202518}, +{0x58,0x7ffffddc}, +{0x5c,0x01000000}, +{0x60,0x7ffffe5b}, +{0x64,0x01000000}, +{0x68,0x7fffffa3}, +{0x6c,0x01000000}, +{0x70,0x7ffffeef}, +{0x74,0x01000000}, +{0x78,0x7fffff67}, +{0x7c,0x01000000}, +{0xf0,0xab}, +{0x00,0x7fffff8a}, +{0x04,0x81e80000}, +{0x08,0x01000000}, +{0x0c,0x9de3bf98}, +{0x10,0xc200253c}, +{0x14,0x80a06000}, +{0x18,0x12800048}, +{0x1c,0xb0102000}, +{0x20,0xd6002460}, +{0x24,0x82102080}, +{0x28,0x80a2e000}, +{0x2c,0x02800043}, +{0x30,0xc220256c}, +{0x34,0x10800005}, +{0x38,0xb0102001}, +{0x3c,0xc220256c}, +{0x40,0x1080003e}, +{0x44,0xf00e2468}, +{0x48,0xd80022fc}, +{0x4c,0x80a6000c}, +{0x50,0x1880002d}, +{0x54,0x9a102000}, +{0x58,0xd40022f8}, +{0x5c,0x33000018}, +{0x60,0xb6102001}, +{0x64,0x80a6c00a}, +{0x68,0x18800020}, +{0x6c,0xb4102000}, +{0x70,0x832e2002}, +{0x74,0xb8006038}, +{0x78,0xa0166220}, +{0x7c,0x901661e8}, +{0xf0,0xac}, +{0x00,0x92166258}, +{0x04,0xde0022f8}, +{0x08,0xfa070010}, +{0x0c,0x80a7400b}, +{0x10,0x26800013}, +{0x14,0xb606e001}, +{0x18,0x80a6e001}, +{0x1c,0x22800007}, +{0x20,0xc20022f8}, +{0x24,0xc2070008}, +{0x28,0x80a74001}, +{0x2c,0x2480000c}, +{0x30,0xb606e001}, +{0x34,0xc20022f8}, +{0x38,0x80a6c001}, +{0x3c,0x22800007}, +{0x40,0xb406a001}, +{0x44,0xc2070009}, +{0x48,0x80a74001}, +{0x4c,0x26800004}, +{0x50,0xb606e001}, +{0x54,0xb406a001}, +{0x58,0xb606e001}, +{0x5c,0x80a6c00f}, +{0x60,0x08bfffea}, +{0x64,0xb8072038}, +{0x68,0x80a6800d}, +{0x6c,0x34800002}, +{0x70,0x9a10001a}, +{0x74,0xb0062001}, +{0x78,0x80a6000c}, +{0x7c,0x28bfffda}, +{0xf0,0xad}, +{0x00,0xb6102001}, +{0x04,0xb0102000}, +{0x08,0xc20e2464}, +{0x0c,0x80a06000}, +{0x10,0x22800006}, +{0x14,0xb0062001}, +{0x18,0x80a34001}, +{0x1c,0x34bfffc8}, +{0x20,0xc20e2278}, +{0x24,0xb0062001}, +{0x28,0x80a62003}, +{0x2c,0x24bffff8}, +{0x30,0xc20e2464}, +{0x34,0xb0102000}, +{0x38,0x81c7e008}, +{0x3c,0x81e80000}, +{0x40,0x9de3bf98}, +{0x44,0xc2002574}, +{0x48,0x80a06000}, +{0x4c,0x02800021}, +{0x50,0x90100018}, +{0x54,0x82007fff}, +{0x58,0x7ffff164}, +{0x5c,0xc2202574}, +{0x60,0xc2002574}, +{0x64,0x80a06000}, +{0x68,0x3280001b}, +{0x6c,0xc2002578}, +{0x70,0xc200253c}, +{0x74,0xda002334}, +{0x78,0x8200400d}, +{0x7c,0x82006001}, +{0xf0,0xae}, +{0x00,0xc2202548}, +{0x04,0xc2002564}, +{0x08,0x80a06000}, +{0x0c,0x1280000f}, +{0x10,0x01000000}, +{0x14,0x7ffff1bc}, +{0x18,0x01000000}, +{0x1c,0x033fc200}, +{0x20,0xda002334}, +{0x24,0xd800232c}, +{0x28,0x82106074}, +{0x2c,0xd8204000}, +{0x30,0x96102001}, +{0x34,0x9a036001}, +{0x38,0xda202574}, +{0x3c,0xd6202540}, +{0x40,0x10800004}, +{0x44,0xd6202564}, +{0x48,0x7ffff16c}, +{0x4c,0x01000000}, +{0x50,0xc2002578}, +{0x54,0x80a06000}, +{0x58,0x12800014}, +{0x5c,0x01000000}, +{0x60,0xc2002574}, +{0x64,0x80a06000}, +{0x68,0x12800010}, +{0x6c,0x01000000}, +{0x70,0x7fffff87}, +{0x74,0x01000000}, +{0x78,0x80a22000}, +{0x7c,0x1280000a}, +{0xf0,0xaf}, +{0x00,0xd020253c}, +{0x04,0xc2002334}, +{0x08,0x9a102001}, +{0x0c,0x82006001}, +{0x10,0xc2202574}, +{0x14,0xda202578}, +{0x18,0xda202540}, +{0x1c,0x7ffff709}, +{0x20,0x91e82000}, +{0x24,0xd0202574}, +{0x28,0x81c7e008}, +{0x2c,0x81e80000}, +{0x30,0x9de3bf98}, +{0x34,0x033fc200}, +{0x38,0x82106030}, +{0x3c,0xda004000}, +{0x40,0xc200257c}, +{0x44,0x80a34001}, +{0x48,0x12800017}, +{0x4c,0x01000000}, +{0x50,0x7ffff01d}, +{0x54,0x01000000}, +{0x58,0x80a22000}, +{0x5c,0x32800008}, +{0x60,0xc2002514}, +{0x64,0x7ffff066}, +{0x68,0xb0102000}, +{0x6c,0x80a22000}, +{0x70,0x0280000f}, +{0x74,0x01000000}, +{0x78,0xc2002514}, +{0x7c,0x80a06000}, +{0xf0,0xb0}, +{0x00,0x12800006}, +{0x04,0x90102002}, +{0x08,0xc200250c}, +{0x0c,0x80a06000}, +{0x10,0x02800005}, +{0x14,0x01000000}, +{0x18,0x033fc180}, +{0x1c,0x7ffffe6e}, +{0x20,0xc0204000}, +{0x24,0x7fffef7f}, +{0x28,0xb0102001}, +{0x2c,0x81c7e008}, +{0x30,0x81e80000}, +{0x34,0x9de3bf98}, +{0x38,0x7ffffed5}, +{0x3c,0x01000000}, +{0x40,0xe0002500}, +{0x44,0x80a42015}, +{0x48,0x08800016}, +{0x4c,0x80a42000}, +{0x50,0x7ffff15a}, +{0x54,0x01000000}, +{0x58,0x033fc140}, +{0x5c,0x82106048}, +{0x60,0xda004000}, +{0x64,0x03000040}, +{0x68,0x11000016}, +{0x6c,0x808b4001}, +{0x70,0x12800004}, +{0x74,0x90122180}, +{0x78,0x11000016}, +{0x7c,0x901223a8}, +{0xf0,0xb1}, +{0x00,0x7fffff90}, +{0x04,0x01000000}, +{0x08,0x7fffffca}, +{0x0c,0x01000000}, +{0x10,0x80a22000}, +{0x14,0x2280001d}, +{0x18,0xc2002500}, +{0x1c,0x3080002f}, +{0x20,0x1280000f}, +{0x24,0x80a42014}, +{0x28,0x7fffef21}, +{0x2c,0x01000000}, +{0x30,0x80a22000}, +{0x34,0x32800003}, +{0x38,0x90102002}, +{0x3c,0x90102001}, +{0x40,0x7ffffe45}, +{0x44,0x01000000}, +{0x48,0x7fffef56}, +{0x4c,0x01000000}, +{0x50,0x7fffee94}, +{0x54,0x01000000}, +{0x58,0x30800009}, +{0x5c,0x3880000b}, +{0x60,0xc2002500}, +{0x64,0x808c2001}, +{0x68,0x32800008}, +{0x6c,0xc2002500}, +{0x70,0x90043ff8}, +{0x74,0x7ffff074}, +{0x78,0x91322001}, +{0x7c,0x7ffff0cf}, +{0xf0,0xb2}, +{0x00,0x01000000}, +{0x04,0xc2002500}, +{0x08,0x80a40001}, +{0x0c,0x3280000d}, +{0x10,0xc2002578}, +{0x14,0x031fffff}, +{0x18,0x821063f0}, +{0x1c,0x80a40001}, +{0x20,0x38800003}, +{0x24,0x21040000}, +{0x28,0xa0042001}, +{0x2c,0x033fc180}, +{0x30,0x82106034}, +{0x34,0xe0204000}, +{0x38,0xe0202500}, +{0x3c,0xc2002578}, +{0x40,0x80a06000}, +{0x44,0x02800005}, +{0x48,0x01000000}, +{0x4c,0x7ffffed5}, +{0x50,0x01000000}, +{0x54,0xc0202578}, +{0x58,0x81c7e008}, +{0x5c,0x81e80000}, +{0x60,0x81c3e008}, +{0x64,0x01000000}, +{0x68,0x01000000}, +{0x6c,0x01000000}, +{0x70,0x01000000}, +{0x74,0x01000000}, +{0x78,0x01000000}, +{0x7c,0x01000000}, +{0xf0,0xb3}, +{0x00,0x00001682}, +{0x04,0x00000000}, +{0x08,0x46656220}, +{0x0c,0x20352032}, +{0x10,0x30313300}, +{0x14,0x00000000}, +{0x18,0x31353a34}, +{0x1c,0x383a3334}, +{0x20,0x00000000}, +{0x24,0x00000000}, +{0x28,0x00000000}, +{0x2c,0x00000000}, +{0x30,0x00000000}, +{0x34,0x00000000}, +{0x38,0x00000000}, +{0x3c,0x00000000}, +{0x40,0x00000000}, +{0x44,0x00000000}, +{0x48,0x00000000}, +{0x4c,0x00000000}, +{0x50,0x00000000}, +{0x54,0x00000000}, +{0x58,0x00000000}, +{0x5c,0x00000000}, +{0x60,0x00000000}, +{0x64,0x00000000}, +{0x68,0x00000000}, +{0x6c,0x00000000}, +{0x70,0x00000000}, +{0x74,0x00000000}, +{0x78,0x00000000}, +{0x7c,0x00000000}, +}; +#endif +static const struct fw_data GSLX680_FW[] = { +}; + +#endif diff --git a/drivers/video/display/screen/Kconfig b/drivers/video/display/screen/Kconfig index 2c325269d62a..2c58f4769c75 100755 --- a/drivers/video/display/screen/Kconfig +++ b/drivers/video/display/screen/Kconfig @@ -142,7 +142,8 @@ config LCD_DS1006H bool "Lvds screen for ds1006h(RK3168)" config LCD_B101UANO_1920x1200 bool "Lvds screen B101UANO for u30gt2" - +config LCD_E242868_1024X600 + bool "RK3168 86v RGB 1024*600 " config LCD_WY_800X480 bool "lcd for 760" config LCD_HH070D_LVDS diff --git a/drivers/video/display/screen/Makefile b/drivers/video/display/screen/Makefile index 8b158a9f5bbf..ad3e2ec2b856 100755 --- a/drivers/video/display/screen/Makefile +++ b/drivers/video/display/screen/Makefile @@ -57,5 +57,6 @@ obj-$(CONFIG_LCD_TL5001_MIPI) += lcd_tl5001_mipi.o obj-$(CONFIG_LCD_LP097QX1) += lcd_LP097QX1.o obj-$(CONFIG_LCD_DS1006H) += lcd_ds1006h.o obj-$(CONFIG_LCD_B101UANO_1920x1200) += lcd_b101uano_1920x1200.o +obj-$(CONFIG_LCD_E242868_1024X600) += lcd_E242868_rk3168_86v.o obj-$(CONFIG_LCD_WY_800X480) += lcd_wy_800x480.o obj-$(CONFIG_LCD_HH070D_LVDS) += lcd_hh070d_lvds.o \ No newline at end of file diff --git a/drivers/video/display/screen/lcd_E242868_rk3168_86v.c b/drivers/video/display/screen/lcd_E242868_rk3168_86v.c new file mode 100644 index 000000000000..983365bd6bf2 --- /dev/null +++ b/drivers/video/display/screen/lcd_E242868_rk3168_86v.c @@ -0,0 +1,195 @@ +/* This Lcd Driver is HSD070IDW1 write by cst 2009.10.27 */ +#include +#include +#include +#include +#include +#include +#include "screen.h" +#include +//#include "../../rk29_fb.h" +#include "../transmitter/rk610_lcd.h" + +/* Base */ +#define OUT_TYPE SCREEN_RGB +#define OUT_FACE OUT_P888 +#define OUT_CLK 50000000 +#define LCDC_ACLK 500000000 //29 lcdc axi DMA ƵÂÊ + +/* Timing */ +#define H_PW 30 +#define H_BP 10 +#define H_VD 1024 +#define H_FP 210 + +#define V_PW 13 +#define V_BP 10 +#define V_VD 600 +#define V_FP 22 + +#define LCD_WIDTH 154 +#define LCD_HEIGHT 85 + +/* Other */ +#define DCLK_POL 0 +#define SWAP_RB 0 +#ifdef CONFIG_HDMI_DUAL_DISP +static int set_scaler_info(struct rk29fb_screen *screen, u8 hdmi_resolution) +{ + screen->s_clk_inv = S_DCLK_POL; + screen->s_den_inv = 0; + screen->s_hv_sync_inv = 0; + switch(hdmi_resolution){ + case HDMI_1920x1080p_60Hz: + /* Scaler Timing */ + screen->hdmi_resolution = hdmi_resolution; + screen->s_pixclock = S_OUT_CLK; + screen->s_hsync_len = S_H_PW; + screen->s_left_margin = S_H_BP; + screen->s_right_margin = S_H_FP; + screen->s_hsync_len = S_H_PW; + screen->s_upper_margin = S_V_BP; + screen->s_lower_margin = S_V_FP; + screen->s_vsync_len = S_V_PW; + screen->s_hsync_st = S_H_ST; + screen->s_vsync_st = S_V_ST; + break; + case HDMI_1920x1080p_50Hz: + /* Scaler Timing */ + screen->hdmi_resolution = hdmi_resolution; + screen->s_pixclock = S1_OUT_CLK; + screen->s_hsync_len = S1_H_PW; + screen->s_left_margin = S1_H_BP; + screen->s_right_margin = S1_H_FP; + screen->s_hsync_len = S1_H_PW; + screen->s_upper_margin = S1_V_BP; + screen->s_lower_margin = S1_V_FP; + screen->s_vsync_len = S1_V_PW; + screen->s_hsync_st = S1_H_ST; + screen->s_vsync_st = S1_V_ST; + break; + case HDMI_1280x720p_60Hz: + /* Scaler Timing */ + screen->hdmi_resolution = hdmi_resolution; + screen->s_pixclock = S2_OUT_CLK; + screen->s_hsync_len = S2_H_PW; + screen->s_left_margin = S2_H_BP; + screen->s_right_margin = S2_H_FP; + screen->s_hsync_len = S2_H_PW; + screen->s_upper_margin = S2_V_BP; + screen->s_lower_margin = S2_V_FP; + screen->s_vsync_len = S2_V_PW; + screen->s_hsync_st = S2_H_ST; + screen->s_vsync_st = S2_V_ST; + break; + case HDMI_1280x720p_50Hz: + /* Scaler Timing */ + screen->hdmi_resolution = hdmi_resolution; + screen->s_pixclock = S3_OUT_CLK; + screen->s_hsync_len = S3_H_PW; + screen->s_left_margin = S3_H_BP; + screen->s_right_margin = S3_H_FP; + screen->s_hsync_len = S3_H_PW; + screen->s_upper_margin = S3_V_BP; + screen->s_lower_margin = S3_V_FP; + screen->s_vsync_len = S3_V_PW; + screen->s_hsync_st = S3_H_ST; + screen->s_vsync_st = S3_V_ST; + break; + case HDMI_720x576p_50Hz_4x3: + case HDMI_720x576p_50Hz_16x9: + /* Scaler Timing */ + screen->hdmi_resolution = hdmi_resolution; + screen->s_pixclock = S4_OUT_CLK; + screen->s_hsync_len = S4_H_PW; + screen->s_left_margin = S4_H_BP; + screen->s_right_margin = S4_H_FP; + screen->s_hsync_len = S4_H_PW; + screen->s_upper_margin = S4_V_BP; + screen->s_lower_margin = S4_V_FP; + screen->s_vsync_len = S4_V_PW; + screen->s_hsync_st = S4_H_ST; + screen->s_vsync_st = S4_V_ST; + break; + case HDMI_720x480p_60Hz_16x9: + case HDMI_720x480p_60Hz_4x3: + /* Scaler Timing */ + screen->hdmi_resolution = hdmi_resolution; + screen->s_pixclock = S5_OUT_CLK; + screen->s_hsync_len = S5_H_PW; + screen->s_left_margin = S5_H_BP; + screen->s_right_margin = S5_H_FP; + screen->s_hsync_len = S5_H_PW; + screen->s_upper_margin = S5_V_BP; + screen->s_lower_margin = S5_V_FP; + screen->s_vsync_len = S5_V_PW; + screen->s_hsync_st = S5_H_ST; + screen->s_vsync_st = S5_V_ST; + break; + default : + printk("%s lcd not support dual display at this hdmi resolution %d \n",__func__,hdmi_resolution); + return -1; + break; + } + + return 0; +} +#else +static int set_scaler_info(struct rk29fb_screen *screen, u8 hdmi_resolution){} +#endif + +void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info ) +{ + /* screen type & face */ + screen->type = OUT_TYPE; + screen->face = OUT_FACE; + + /* Screen size */ + screen->x_res = H_VD; + screen->y_res = V_VD; + + screen->width = LCD_WIDTH; + screen->height = LCD_HEIGHT; + + /* Timing */ + screen->lcdc_aclk = LCDC_ACLK; + screen->pixclock = OUT_CLK; + screen->left_margin = H_BP; + screen->right_margin = H_FP; + screen->hsync_len = H_PW; + screen->upper_margin = V_BP; + screen->lower_margin = V_FP; + screen->vsync_len = V_PW; + + /* Pin polarity */ + screen->pin_hsync = 0; + screen->pin_vsync = 0; + screen->pin_den = 0; + screen->pin_dclk = DCLK_POL; + + /* Swap rule */ + screen->swap_rb = SWAP_RB; + screen->swap_rg = 0; + screen->swap_gb = 0; + screen->swap_delta = 0; + screen->swap_dumy = 0; + + /* Operation function*/ + /*screen->init = init;*/ + screen->init = NULL; + screen->standby = NULL; + screen->sscreen_get = set_scaler_info; +#ifdef CONFIG_RK610_LVDS + screen->sscreen_set = rk610_lcd_scaler_set_param; +#endif +} +size_t get_fb_size(void) +{ + size_t size = 0; + #if defined(CONFIG_THREE_FB_BUFFER) + size = ((H_VD)*(V_VD)<<2)* 3; //three buffer + #else + size = ((H_VD)*(V_VD)<<2)<<1; //two buffer + #endif + return ALIGN(size,SZ_1M); +} diff --git a/sound/soc/codecs/es8323.c b/sound/soc/codecs/es8323.c index 2ad5ce842765..1ae7bb15cc9f 100755 --- a/sound/soc/codecs/es8323.c +++ b/sound/soc/codecs/es8323.c @@ -39,6 +39,10 @@ #include #include + +#include +#include + #if 0 #define DBG(x...) printk(KERN_INFO x) #else @@ -46,6 +50,7 @@ #endif #define alsa_dbg DBG +static int set_spk = 1; // add by xhc when insert hdmi 0, no insert hdmi 1 #define RT5633_SPK_TIMER 0 //if enable this, MUST enable RT5633_EQ_FUNC_ENA and RT5633_EQ_FUNC_SEL==RT5633_EQ_FOR_MANUAL first! #if (RT5633_SPK_TIMER == 1) static struct timer_list spk_timer; @@ -58,7 +63,9 @@ static bool last_is_spk = false; #undef SPK_CTL // #undef SPK_CON #define SPK_CON RK30_PIN2_PD7 //RK30_PIN4_PC5 - +#define HP_DET RK30_PIN0_PB5 +static int HP_IRQ=0; +static int hp_irq_flag = 0; //#define SPK_CTL RK29_PIN6_PB6 //#define EAR_CON_PIN RK29_PIN6_PB5 #undef EAR_CON_PIN @@ -67,8 +74,9 @@ static bool last_is_spk = false; #define es8323_DEF_VOL 0x1e #endif -static int es8323_set_bias_level(struct snd_soc_codec *codec, - enum snd_soc_bias_level level); +static int es8323_set_bias_level(struct snd_soc_codec *codec,enum snd_soc_bias_level level); +extern int es8323_dapm_pre_event(struct snd_soc_dapm_widget* widget, struct snd_kcontrol * null, int event); +extern int es8323_dapm_post_event(struct snd_soc_dapm_widget* widget, struct snd_kcontrol * null, int event); /* * es8323 register cache * We can't read the es8323 register space when we @@ -100,10 +108,65 @@ struct es8323_priv { int is_biason; }; +static void hp_detect_do_switch(struct work_struct *work) +{ + int ret; + int irq = gpio_to_irq(HP_DET); + unsigned int type; + + //rk28_send_wakeup_key(); + printk("hjc:%s,irq=%d\n",__func__,irq); + type = gpio_get_value(HP_DET) ? IRQ_TYPE_EDGE_FALLING : IRQ_TYPE_EDGE_RISING; + ret = irq_set_irq_type(irq, type); + if (ret < 0) { + pr_err("%s: irq_set_irq_type(%d, %d) failed\n", __func__, irq, type); + } + + hp_irq_flag = 1; + + if(0 == gpio_get_value(HP_DET)){ + printk("hp_det = 0,insert hp\n"); + gpio_set_value(SPK_CON,0); + }else if(1 == gpio_get_value(HP_DET)){ + printk("hp_det = 1,deinsert hp\n"); + gpio_set_value(SPK_CON,1); + } + enable_irq(irq); +} + + +static DECLARE_DELAYED_WORK(wakeup_work, hp_detect_do_switch); + + +static irqreturn_t hp_det_irq_handler(int irq, void *dev_id) +{ +#if 0 + printk("%s=%d,%d\n",__FUNCTION__,HP_IRQ,HP_DET); + //disable_irq_nosync(ts->client->irq); + //queue_work(gt801_wq, &ts->work); + if(0 == gpio_get_value(HP_DET)){ + printk("hp_det = 0,insert hp\n"); + gpio_set_value(SPK_CON,0); + }else if(1 == gpio_get_value(HP_DET)){ + printk("hp_det = 1,insert hp\n"); + gpio_set_value(SPK_CON,1); + } + return IRQ_HANDLED; +#endif + printk("hjc:%s>>>>\n",__func__); + disable_irq_nosync(irq); // for irq debounce + //wake_lock_timeout(&usb_wakelock, WAKE_LOCK_TIMEOUT); + schedule_delayed_work(&wakeup_work, HZ / 10); + return IRQ_HANDLED; + +} + + + static unsigned int es8323_read_reg_cache(struct snd_soc_codec *codec, unsigned int reg) { - u16 *cache = codec->reg_cache; + //u16 *cache = codec->reg_cache; if (reg >= ARRAY_SIZE(es8323_reg)) return -1; return es8323_reg[reg]; @@ -112,7 +175,7 @@ static unsigned int es8323_read_reg_cache(struct snd_soc_codec *codec, static int es8323_write(struct snd_soc_codec *codec, unsigned int reg, unsigned int value) { - u16 *cache = codec->reg_cache; + //u16 *cache = codec->reg_cache; u8 data[2]; int ret; @@ -138,81 +201,35 @@ static int es8323_write(struct snd_soc_codec *codec, unsigned int reg, snd_soc_write(codec, ES8323_CONTROL1, 0x80); return snd_soc_write(codec, ES8323_CONTROL1, 0x00); } -static int es8323_volatile_register( - struct snd_soc_codec *codec, unsigned int reg) -{ - if(reg<0x35) - { - return 1; - } - else - { - return 0; - } -} -static int es8323_readable_register( - struct snd_soc_codec *codec, unsigned int reg) -{ - if(reg<0x35) - { - return 1; - } - else - { - return 0; - } -} - -/* - * es8323 Controls - */ -/* -static const char *bass_boost_txt[] = {"Linear Control", "Adaptive Boost"}; -static const struct soc_enum bass_boost = - SOC_ENUM_SINGLE(es8323_BASS, 7, 2, bass_boost_txt); - -static const char *bass_filter_txt[] = { "130Hz @ 48kHz", "200Hz @ 48kHz" }; -static const struct soc_enum bass_filter = - SOC_ENUM_SINGLE(es8323_BASS, 6, 2, bass_filter_txt); - -static const char *treble_txt[] = {"8kHz", "4kHz"}; -static const struct soc_enum treble = - SOC_ENUM_SINGLE(es8323_TREBLE, 6, 2, treble_txt); - -static const char *stereo_3d_lc_txt[] = {"200Hz", "500Hz"}; -static const struct soc_enum stereo_3d_lc = - SOC_ENUM_SINGLE(es8323_3D, 5, 2, stereo_3d_lc_txt); - -static const char *stereo_3d_uc_txt[] = {"2.2kHz", "1.5kHz"}; -static const struct soc_enum stereo_3d_uc = - SOC_ENUM_SINGLE(es8323_3D, 6, 2, stereo_3d_uc_txt); - -static const char *stereo_3d_func_txt[] = {"Capture", "Playback"}; -static const struct soc_enum stereo_3d_func = - SOC_ENUM_SINGLE(es8323_3D, 7, 2, stereo_3d_func_txt); -*/ +static const char *es8323_line_texts[] = { + "Line 1", "Line 2", "PGA"}; + +static const unsigned int es8323_line_values[] = { + 0, 1, 3}; +static const char *es8323_pga_sel[] = {"Line 1", "Line 2", "Differential"}; static const char *stereo_3d_txt[] = {"No 3D ", "Level 1","Level 2","Level 3","Level 4","Level 5","Level 6","Level 7"}; -static const struct soc_enum stereo_3d = - SOC_ENUM_SINGLE(ES8323_DACCONTROL7, 2, 8, stereo_3d_txt); - static const char *alc_func_txt[] = {"Off", "Right", "Left", "Stereo"}; -static const struct soc_enum alc_func = - SOC_ENUM_SINGLE(ES8323_ADCCONTROL10, 6, 4, alc_func_txt); - -static const char *ng_type_txt[] = {"Constant PGA Gain", - "Mute ADC Output"}; -static const struct soc_enum ng_type = - SOC_ENUM_SINGLE(ES8323_ADCCONTROL14, 1, 2, ng_type_txt); - +static const char *ng_type_txt[] = {"Constant PGA Gain","Mute ADC Output"}; static const char *deemph_txt[] = {"None", "32Khz", "44.1Khz", "48Khz"}; -static const struct soc_enum deemph = - SOC_ENUM_SINGLE(ES8323_DACCONTROL6, 6, 4, deemph_txt); - -static const char *adcpol_txt[] = {"Normal", "L Invert", "R Invert", - "L + R Invert"}; -static const struct soc_enum adcpol = - SOC_ENUM_SINGLE(ES8323_ADCCONTROL6, 6, 4, adcpol_txt); +static const char *adcpol_txt[] = {"Normal", "L Invert", "R Invert","L + R Invert"}; +static const char *es8323_mono_mux[] = {"Stereo", "Mono (Left)","Mono (Right)"}; +static const char *es8323_diff_sel[] = {"Line 1", "Line 2"}; + +static const struct soc_enum es8323_enum[]={ + SOC_VALUE_ENUM_SINGLE(ES8323_DACCONTROL16, 3, 7, ARRAY_SIZE(es8323_line_texts), es8323_line_texts, es8323_line_values),/* LLINE */ + SOC_VALUE_ENUM_SINGLE(ES8323_DACCONTROL16, 0, 7, ARRAY_SIZE(es8323_line_texts), es8323_line_texts, es8323_line_values),/* rline */ + SOC_VALUE_ENUM_SINGLE(ES8323_ADCCONTROL2, 6, 3, ARRAY_SIZE(es8323_pga_sel), es8323_line_texts, es8323_line_values),/* Left PGA Mux */ + SOC_VALUE_ENUM_SINGLE(ES8323_ADCCONTROL2, 4, 3, ARRAY_SIZE(es8323_pga_sel), es8323_line_texts, es8323_line_values),/* Right PGA Mux */ + SOC_ENUM_SINGLE(ES8323_DACCONTROL7, 2, 8, stereo_3d_txt),/* stereo-3d */ + SOC_ENUM_SINGLE(ES8323_ADCCONTROL10, 6, 4, alc_func_txt),/*alc func*/ + SOC_ENUM_SINGLE(ES8323_ADCCONTROL14, 1, 2, ng_type_txt),/*noise gate type*/ + SOC_ENUM_SINGLE(ES8323_DACCONTROL6, 6, 4, deemph_txt),/*Playback De-emphasis*/ + SOC_ENUM_SINGLE(ES8323_ADCCONTROL6, 6, 4, adcpol_txt), + SOC_ENUM_SINGLE(ES8323_ADCCONTROL3, 3, 3, es8323_mono_mux), + SOC_ENUM_SINGLE(ES8323_ADCCONTROL3, 7, 2, es8323_diff_sel), + }; + static const DECLARE_TLV_DB_SCALE(pga_tlv, 0, 300, 0); static const DECLARE_TLV_DB_SCALE(adc_tlv, -9600, 50, 1); @@ -221,176 +238,74 @@ static const DECLARE_TLV_DB_SCALE(out_tlv, -4500, 150, 0); static const DECLARE_TLV_DB_SCALE(bypass_tlv, -1500, 300, 0); static const struct snd_kcontrol_new es8323_snd_controls[] = { -/* -SOC_ENUM("Bass Boost", bass_boost), -SOC_ENUM("Bass Filter", bass_filter), -SOC_SINGLE("Bass Volume", es8323_BASS, 0, 15, 1), - -SOC_SINGLE("Treble Volume", es8323_TREBLE, 0, 15, 0), -SOC_ENUM("Treble Cut-off", treble), - -SOC_SINGLE("3D Switch", es8323_3D, 0, 1, 0), -SOC_SINGLE("3D Volume", es8323_3D, 1, 15, 0), -SOC_ENUM("3D Lower Cut-off", stereo_3d_lc), -SOC_ENUM("3D Upper Cut-off", stereo_3d_uc), -SOC_ENUM("3D Mode", stereo_3d_func), -*/ -SOC_ENUM("3D Mode", stereo_3d), +SOC_ENUM("3D Mode", es8323_enum[4]), SOC_SINGLE("ALC Capture Target Volume", ES8323_ADCCONTROL11, 4, 15, 0), SOC_SINGLE("ALC Capture Max PGA", ES8323_ADCCONTROL10, 3, 7, 0), SOC_SINGLE("ALC Capture Min PGA", ES8323_ADCCONTROL10, 0, 7, 0), -SOC_ENUM("ALC Capture Function", alc_func), +SOC_ENUM("ALC Capture Function", es8323_enum[5]), SOC_SINGLE("ALC Capture ZC Switch", ES8323_ADCCONTROL13, 6, 1, 0), SOC_SINGLE("ALC Capture Hold Time", ES8323_ADCCONTROL11, 0, 15, 0), SOC_SINGLE("ALC Capture Decay Time", ES8323_ADCCONTROL12, 4, 15, 0), SOC_SINGLE("ALC Capture Attack Time", ES8323_ADCCONTROL12, 0, 15, 0), SOC_SINGLE("ALC Capture NG Threshold", ES8323_ADCCONTROL14, 3, 31, 0), -SOC_ENUM("ALC Capture NG Type", ng_type), +SOC_ENUM("ALC Capture NG Type",es8323_enum[6]), SOC_SINGLE("ALC Capture NG Switch", ES8323_ADCCONTROL14, 0, 1, 0), - SOC_SINGLE("ZC Timeout Switch", ES8323_ADCCONTROL13, 6, 1, 0), - -SOC_DOUBLE_R_TLV("Capture Digital Volume", ES8323_ADCCONTROL8, ES8323_ADCCONTROL9, - 0, 255, 1, adc_tlv), - -SOC_SINGLE("Capture Mute", ES8323_ADCCONTROL7, 2, 1, 0), - /* -SOC_DOUBLE_R_TLV("Capture Volume", es8323_LINVOL, es8323_RINVOL, - 0, 63, 0, pga_tlv), - */ +SOC_DOUBLE_R_TLV("Capture Digital Volume", ES8323_ADCCONTROL8, ES8323_ADCCONTROL9,0, 255, 1, adc_tlv), +SOC_SINGLE("Capture Mute", ES8323_ADCCONTROL7, 2, 1, 0), SOC_SINGLE_TLV("Left Channel Capture Volume", ES8323_ADCCONTROL1, 4, 15, 0, bypass_tlv), SOC_SINGLE_TLV("Right Channel Capture Volume", ES8323_ADCCONTROL1, 0, 15, 0, bypass_tlv), - -//SOC_DOUBLE_R("Capture ZC Switch", es8323_LINVOL, es8323_RINVOL, 6, 1, 0), -//SOC_SINGLE("Capture Switch", ES8323_ADCPOWER, 4, 3, 1), - -SOC_ENUM("Playback De-emphasis", deemph), - -SOC_ENUM("Capture Polarity", adcpol), -//SOC_SINGLE("Playback 6dB Attenuate", es8323_ADCDAC, 7, 1, 0), -//SOC_SINGLE("Capture 6dB Attenuate", es8323_ADCDAC, 8, 1, 0), - -//SOC_DOUBLE_R_TLV("PCM Volume", ES8323_DACCONTROL4, ES8323_DACCONTROL5, 0, 255, 1, dac_tlv), - +SOC_ENUM("Playback De-emphasis", es8323_enum[7]), +SOC_ENUM("Capture Polarity", es8323_enum[8]), +SOC_DOUBLE_R_TLV("PCM Volume", ES8323_DACCONTROL4, ES8323_DACCONTROL5, 0, 255, 1, dac_tlv), SOC_SINGLE_TLV("Left Mixer Left Bypass Volume", ES8323_DACCONTROL17, 3, 7, 1, bypass_tlv), -/* -SOC_SINGLE_TLV("Left Mixer Right Bypass Volume", es8323_LOUTM2, 4, 7, 1, - bypass_tlv), -SOC_SINGLE_TLV("Right Mixer Left Bypass Volume", es8323_ROUTM1, 4, 7, 1, - bypass_tlv), -*/ -SOC_SINGLE_TLV("Right Mixer Right Bypass Volume", ES8323_DACCONTROL20, 3, 7, 1, - bypass_tlv), - -//SOC_DOUBLE_R("Output 1 Playback ZC Switch", es8323_LOUT1V,es8323_ROUT1V, 7, 1, 0), -SOC_DOUBLE_R_TLV("Output 1 Playback Volume", ES8323_DACCONTROL24, ES8323_DACCONTROL25, - 0, 64, 0, out_tlv), - -//SOC_DOUBLE_R("Output 2 Playback ZC Switch", es8323_LOUT2V,es8323_ROUT2V, 7, 1, 0), -SOC_DOUBLE_R_TLV("Output 2 Playback Volume", ES8323_DACCONTROL26, ES8323_DACCONTROL27, - 0, 64, 0, out_tlv), +SOC_SINGLE_TLV("Right Mixer Right Bypass Volume", ES8323_DACCONTROL20, 3, 7, 1, bypass_tlv), +SOC_DOUBLE_R_TLV("Output 1 Playback Volume", ES8323_DACCONTROL24, ES8323_DACCONTROL25, 0, 64, 0, out_tlv), +SOC_DOUBLE_R_TLV("Output 2 Playback Volume", ES8323_DACCONTROL26, ES8323_DACCONTROL27, 0, 64, 0, out_tlv), }; -/* - * DAPM Controls - */ -/* -static int es8323_lrc_control(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *kcontrol, int event) -{ - struct snd_soc_codec *codec = w->codec; - u16 adctl2 = snd_soc_read(codec, es8323_ADCTL2); -*/ - /* Use the DAC to gate LRC if active, otherwise use ADC */ - /* - if (snd_soc_read(codec, es8323_PWR2) & 0x180) - adctl2 &= ~0x4; - else - adctl2 |= 0x4; - - DBG("Enter::%s----%d, adctl2 = %x\n",__FUNCTION__,__LINE__,adctl2); - - return snd_soc_write(codec, es8323_ADCTL2, adctl2); -} -*/ -static const char *es8323_line_texts[] = { - "Line 1", "Line 2", "PGA"}; - -static const unsigned int es8323_line_values[] = { - 0, 1, 3}; -static const struct soc_enum es8323_lline_enum = - SOC_VALUE_ENUM_SINGLE(ES8323_DACCONTROL16, 3, 7, - ARRAY_SIZE(es8323_line_texts), - es8323_line_texts, - es8323_line_values); static const struct snd_kcontrol_new es8323_left_line_controls = - SOC_DAPM_VALUE_ENUM("Route", es8323_lline_enum); + SOC_DAPM_VALUE_ENUM("Route", es8323_enum[0]); -static const struct soc_enum es8323_rline_enum = - SOC_VALUE_ENUM_SINGLE(ES8323_DACCONTROL16, 0, 7, - ARRAY_SIZE(es8323_line_texts), - es8323_line_texts, - es8323_line_values); static const struct snd_kcontrol_new es8323_right_line_controls = - SOC_DAPM_VALUE_ENUM("Route", es8323_rline_enum); + SOC_DAPM_VALUE_ENUM("Route", es8323_enum[1]); + +/* Left PGA Mux */ +static const struct snd_kcontrol_new es8323_left_pga_controls = + SOC_DAPM_VALUE_ENUM("Route", es8323_enum[2]); +/* Right PGA Mux */ +static const struct snd_kcontrol_new es8323_right_pga_controls = + SOC_DAPM_VALUE_ENUM("Route", es8323_enum[3]); /* Left Mixer */ static const struct snd_kcontrol_new es8323_left_mixer_controls[] = { SOC_DAPM_SINGLE("Left Playback Switch", ES8323_DACCONTROL17, 7, 1, 0), - SOC_DAPM_SINGLE("Left Bypass Switch", ES8323_DACCONTROL17, 6, 1, 0), - //SOC_DAPM_SINGLE("Right Playback Switch", es8323_LOUTM2, 8, 1, 0), - //SOC_DAPM_SINGLE("Right Bypass Switch", es8323_LOUTM2, 7, 1, 0), + SOC_DAPM_SINGLE("Left Bypass Switch", ES8323_DACCONTROL17, 6, 1, 0), }; /* Right Mixer */ static const struct snd_kcontrol_new es8323_right_mixer_controls[] = { - //SOC_DAPM_SINGLE("Left Playback Switch", es8323_ROUTM1, 8, 1, 0), - //SOC_DAPM_SINGLE("Left Bypass Switch", es8323_ROUTM1, 7, 1, 0), SOC_DAPM_SINGLE("Right Playback Switch", ES8323_DACCONTROL20, 7, 1, 0), SOC_DAPM_SINGLE("Right Bypass Switch", ES8323_DACCONTROL20, 6, 1, 0), }; -int es8328_dapm_pre_event(struct snd_soc_dapm_widget* widget, struct snd_kcontrol * null, int event); -int es8328_dapm_post_event(struct snd_soc_dapm_widget* widget, struct snd_kcontrol * null, int event); - -static const char *es8323_pga_sel[] = {"Line 1", "Line 2", "Differential"}; -static const unsigned int es8323_pga_val[] = { 0, 1, 3 }; - -/* Left PGA Mux */ -static const struct soc_enum es8323_lpga_enum = - SOC_VALUE_ENUM_SINGLE(ES8323_ADCCONTROL2, 6, 3, - ARRAY_SIZE(es8323_pga_sel), - es8323_pga_sel, - es8323_pga_val); -static const struct snd_kcontrol_new es8323_left_pga_controls = - SOC_DAPM_VALUE_ENUM("Route", es8323_lpga_enum); - -/* Right PGA Mux */ -static const struct soc_enum es8323_rpga_enum = - SOC_VALUE_ENUM_SINGLE(ES8323_ADCCONTROL2, 4, 3, - ARRAY_SIZE(es8323_pga_sel), - es8323_pga_sel, - es8323_pga_val); -static const struct snd_kcontrol_new es8323_right_pga_controls = - SOC_DAPM_VALUE_ENUM("Route", es8323_rpga_enum); - /* Differential Mux */ -static const char *es8323_diff_sel[] = {"Line 1", "Line 2"}; -static const struct soc_enum diffmux = - SOC_ENUM_SINGLE(ES8323_ADCCONTROL3, 7, 2, es8323_diff_sel); +//static const char *es8323_diff_sel[] = {"Line 1", "Line 2"}; static const struct snd_kcontrol_new es8323_diffmux_controls = - SOC_DAPM_ENUM("Route", diffmux); + SOC_DAPM_ENUM("Route", es8323_enum[10]); /* Mono ADC Mux */ -static const char *es8323_mono_mux[] = {"Stereo", "Mono (Left)", - "Mono (Right)"}; -static const struct soc_enum monomux = - SOC_ENUM_SINGLE(ES8323_ADCCONTROL3, 3, 3, es8323_mono_mux); static const struct snd_kcontrol_new es8323_monomux_controls = - SOC_DAPM_ENUM("Route", monomux); + SOC_DAPM_ENUM("Route", es8323_enum[9]); static const struct snd_soc_dapm_widget es8323_dapm_widgets[] = { +#if 1 + SND_SOC_DAPM_INPUT("LINPUT1"), + SND_SOC_DAPM_INPUT("LINPUT2"), + SND_SOC_DAPM_INPUT("RINPUT1"), + SND_SOC_DAPM_INPUT("RINPUT2"), + SND_SOC_DAPM_MICBIAS("Mic Bias", ES8323_ADCPOWER, 3, 1), SND_SOC_DAPM_MUX("Differential Mux", SND_SOC_NOPM, 0, 0, @@ -415,8 +330,8 @@ static const struct snd_soc_dapm_widget es8323_dapm_widgets[] = { SND_SOC_DAPM_ADC("Left ADC", "Left Capture", ES8323_ADCPOWER, 5, 1), /* gModify.Cmmt Implement when suspend/startup */ - /*SND_SOC_DAPM_DAC("Right DAC", "Right Playback", es8323_PWR2, 7, 0),*/ - /*SND_SOC_DAPM_DAC("Left DAC", "Left Playback", es8323_PWR2, 8, 0),*/ + SND_SOC_DAPM_DAC("Right DAC", "Right Playback", ES8323_DACPOWER, 7, 0), + SND_SOC_DAPM_DAC("Left DAC", "Left Playback", ES8323_DACPOWER, 8, 0), SND_SOC_DAPM_MIXER("Left Mixer", SND_SOC_NOPM, 0, 0, &es8323_left_mixer_controls[0], @@ -429,8 +344,8 @@ static const struct snd_soc_dapm_widget es8323_dapm_widgets[] = { SND_SOC_DAPM_PGA("Left Out 2", ES8323_DACPOWER, 3, 0, NULL, 0), SND_SOC_DAPM_PGA("Right Out 1", ES8323_DACPOWER, 4, 0, NULL, 0), SND_SOC_DAPM_PGA("Left Out 1", ES8323_DACPOWER, 5, 0, NULL, 0), - - //SND_SOC_DAPM_POST("LRC control", es8323_lrc_control), + SND_SOC_DAPM_PGA("LAMP", ES8323_ADCCONTROL1, 4, 0, NULL, 0), + SND_SOC_DAPM_PGA("RAMP", ES8323_ADCCONTROL1, 0, 0, NULL, 0), SND_SOC_DAPM_OUTPUT("LOUT1"), SND_SOC_DAPM_OUTPUT("ROUT1"), @@ -438,38 +353,33 @@ static const struct snd_soc_dapm_widget es8323_dapm_widgets[] = { SND_SOC_DAPM_OUTPUT("ROUT2"), SND_SOC_DAPM_OUTPUT("VREF"), - SND_SOC_DAPM_INPUT("LINPUT1"), - SND_SOC_DAPM_INPUT("LINPUT2"), - SND_SOC_DAPM_INPUT("RINPUT1"), - SND_SOC_DAPM_INPUT("RINPUT2"), - SND_SOC_DAPM_PRE("PRE", es8328_dapm_pre_event), - SND_SOC_DAPM_POST("POST", es8328_dapm_post_event), + SND_SOC_DAPM_PRE("PRE", es8323_dapm_pre_event), + SND_SOC_DAPM_POST("POST", es8323_dapm_post_event), +#endif }; static const struct snd_soc_dapm_route audio_map[] = { - { "Left Line Mux", "Line 1", "LINPUT1" }, - { "Left Line Mux", "Line 2", "LINPUT2" }, - { "Left Line Mux", "PGA", "Left PGA Mux" }, - //{ "Left Line Mux", "Differential", "Differential Mux" }, - - { "Right Line Mux", "Line 1", "RINPUT1" }, - { "Right Line Mux", "Line 2", "RINPUT2" }, - { "Right Line Mux", "PGA", "Right PGA Mux" }, - //{ "Right Line Mux", "Differential", "Differential Mux" }, + { "Left Line Mux", "NULL", "LINPUT1" }, + { "Left Line Mux", "NULL", "LINPUT2" }, + { "Left Line Mux", "NULL", "Left PGA Mux" }, + + { "Right Line Mux", "NULL", "RINPUT1" }, + { "Right Line Mux", "NULL", "RINPUT2" }, + { "Right Line Mux", "NULL", "Right PGA Mux" }, - { "Left PGA Mux", "Line 1", "LINPUT1" }, - { "Left PGA Mux", "Line 2", "LINPUT2" }, - { "Left PGA Mux", "Differential", "Differential Mux" }, + { "Left PGA Mux", "LAMP", "LINPUT1" }, + { "Left PGA Mux", "LAMP", "LINPUT2" }, + { "Left PGA Mux", "LAMP", "Differential Mux" }, - { "Right PGA Mux", "Line 1", "RINPUT1" }, - { "Right PGA Mux", "Line 2", "RINPUT2" }, - { "Right PGA Mux", "Differential", "Differential Mux" }, + { "Right PGA Mux", "RAMP", "RINPUT1" }, + { "Right PGA Mux", "RAMP", "RINPUT2" }, + { "Right PGA Mux", "RAMP", "Differential Mux" }, - { "Differential Mux", "Line 1", "LINPUT1" }, - { "Differential Mux", "Line 1", "RINPUT1" }, - { "Differential Mux", "Line 2", "LINPUT2" }, - { "Differential Mux", "Line 2", "RINPUT2" }, + { "Differential Mux", "LAMP", "LINPUT1" }, + { "Differential Mux", "RAMP", "RINPUT1" }, + { "Differential Mux", "LAMP", "LINPUT2" }, + { "Differential Mux", "RAMP", "RINPUT2" }, { "Left ADC Mux", "Stereo", "Left PGA Mux" }, { "Left ADC Mux", "Mono (Left)", "Left PGA Mux" }, @@ -482,23 +392,17 @@ static const struct snd_soc_dapm_route audio_map[] = { { "Left ADC", NULL, "Left ADC Mux" }, { "Right ADC", NULL, "Right ADC Mux" }, - { "Left Line Mux", "Line 1", "LINPUT1" }, - { "Left Line Mux", "Line 2", "LINPUT2" }, - { "Left Line Mux", "PGA", "Left PGA Mux" }, - //{ "Left Line Mux", "Differential", "Differential Mux" }, + { "Left Line Mux", "LAMP", "LINPUT1" }, + { "Left Line Mux", "LAMP", "LINPUT2" }, + { "Left Line Mux", "LAMP", "Left PGA Mux" }, - { "Right Line Mux", "Line 1", "RINPUT1" }, - { "Right Line Mux", "Line 2", "RINPUT2" }, - { "Right Line Mux", "PGA", "Right PGA Mux" }, - //{ "Right Line Mux", "Differential", "Differential Mux" }, + { "Right Line Mux", "RAMP", "RINPUT1" }, + { "Right Line Mux", "RAMP", "RINPUT2" }, + { "Right Line Mux", "RAMP", "Right PGA Mux" }, { "Left Mixer", "Left Playback Switch", "Left DAC" }, { "Left Mixer", "Left Bypass Switch", "Left Line Mux" }, - //{ "Left Mixer", "Right Playback Switch", "Right DAC" }, - //{ "Left Mixer", "Right Bypass Switch", "Right Line Mux" }, - //{ "Right Mixer", "Left Playback Switch", "Left DAC" }, - //{ "Right Mixer", "Left Bypass Switch", "Left Line Mux" }, { "Right Mixer", "Right Playback Switch", "Right DAC" }, { "Right Mixer", "Right Bypass Switch", "Right Line Mux" }, @@ -513,7 +417,7 @@ static const struct snd_soc_dapm_route audio_map[] = { { "ROUT2", NULL, "Right Out 2" }, }; -int es8328_dapm_pre_event(struct snd_soc_dapm_widget* widget, struct snd_kcontrol * null, int event) +int es8323_dapm_pre_event(struct snd_soc_dapm_widget* widget, struct snd_kcontrol * null, int event) { // printk("fun:%s, event:%d\r\n", __FUNCTION__, event); if (event==1) @@ -523,7 +427,7 @@ int es8328_dapm_pre_event(struct snd_soc_dapm_widget* widget, struct snd_kcontro } return 0; } -int es8328_dapm_post_event(struct snd_soc_dapm_widget* widget, struct snd_kcontrol * null, int event) +int es8323_dapm_post_event(struct snd_soc_dapm_widget* widget, struct snd_kcontrol * null, int event) { // printk("fun:%s, event:%d\r\n", __FUNCTION__, event); if (event==8) @@ -636,48 +540,34 @@ static struct snd_pcm_hw_constraint_list constraints_12 = { static void on_off_ext_amp(int i) { - struct snd_soc_codec *codec; - gpio_set_value(SPK_CON, i); + // struct snd_soc_codec *codec; + if (set_spk == 0) { + return; + } + if(hp_irq_flag == 0) + gpio_set_value(SPK_CON, i); //delete by hjc + + DBG("*** %s() SPEAKER set SPK_CON %d\n", __FUNCTION__, i); mdelay(50); #ifdef SPK_CTL //gpio_direction_output(SPK_CTL, GPIO_LOW); gpio_set_value(SPK_CTL, i); - /*snd_soc_write(codec,0x1E,0x1F); - snd_soc_write(codec,0x1F,0xF7); - snd_soc_write(codec,0x20,0xFD); - snd_soc_write(codec,0x21,0xFF); - snd_soc_write(codec,0x22,0x1F); - snd_soc_write(codec,0x23,0xF7); - snd_soc_write(codec,0x24,0xFD); - snd_soc_write(codec,0x25,0xFF); - snd_soc_write(codec,0x30,0x18); - snd_soc_write(codec,0x31,0x18); - */ - DBG("*** %s() SPEAKER set as %d\n", __FUNCTION__, i); + DBG("*** %s() SPEAKER set as %d\n", __FUNCTION__, i); #endif #ifdef EAR_CON_PIN //gpio_direction_output(EAR_CON_PIN, GPIO_LOW); gpio_set_value(EAR_CON_PIN, i); - /*snd_soc_write(codec,0x1E,0x01);//for 47uF capacitors ,15db Bass@90Hz,Fs=44100 - snd_soc_write(codec,0x1F,0x84); - snd_soc_write(codec,0x20,0xED); - snd_soc_write(codec,0x21,0xAF); - snd_soc_write(codec,0x22,0x20); - snd_soc_write(codec,0x23,0x6C); - snd_soc_write(codec,0x24,0xE9); - snd_soc_write(codec,0x25,0xBE); - snd_soc_write(codec,0x30,0x1c); - snd_soc_write(codec,0x31,0x1c); - */ DBG("*** %s() HEADPHONE set as %d\n", __FUNCTION__, i); mdelay(50); #endif } +#if 0 static void es8323_codec_set_spk(bool on) { on_off_ext_amp(on); } +#endif @@ -809,7 +699,7 @@ static int es8323_pcm_startup(struct snd_pcm_substream *substream, { struct snd_soc_codec *codec = dai->codec; struct es8323_priv *es8323 = snd_soc_codec_get_drvdata(codec); - u16 i; + // u16 i; if (!es8323->is_startup) { es8323->is_startup = 1; //on_off_ext_amp(0); @@ -822,7 +712,7 @@ static int es8323_pcm_startup(struct snd_pcm_substream *substream, snd_soc_write(codec, ES8323_DACCONTROL21, 0x80); */ snd_soc_write(codec, ES8323_ADCPOWER, 0x59); - snd_soc_write(codec, ES8323_DACPOWER, 0x0c); + snd_soc_write(codec, ES8323_DACPOWER, 0x3c); snd_soc_write(codec, ES8323_CHIPPOWER, 0x00); //on_off_ext_amp(1); } @@ -916,21 +806,22 @@ static int es8323_pcm_hw_params(struct snd_pcm_substream *substream, static int es8323_mute(struct snd_soc_dai *dai, int mute) { struct snd_soc_codec *codec = dai->codec; - u16 mute_reg = snd_soc_read(codec, ES8323_DACCONTROL3) & 0xfb; + // u16 mute_reg = snd_soc_read(codec, ES8323_DACCONTROL3) & 0xfb; DBG("Enter::%s----%d--mute=%d\n",__FUNCTION__,__LINE__,mute); if (mute) //snd_soc_write(codec, ES8323_DACCONTROL3, mute_reg | 0x4); { - snd_soc_write(codec, ES8323_DACCONTROL3, 0xe6);//0xe6); + snd_soc_write(codec, ES8323_DACCONTROL3, 0x06);//0xe6); } else { - snd_soc_write(codec, ES8323_DACCONTROL3, 0xe2);//0xe2); - + snd_soc_write(codec, ES8323_DACCONTROL3, 0x02);//0xe2); + snd_soc_write(codec, 0x30,0x1e); + snd_soc_write(codec, 0x31,0x1e); } @@ -939,61 +830,37 @@ static int es8323_mute(struct snd_soc_dai *dai, int mute) return 0; } -static int es8323_trigger(struct snd_pcm_substream *substream, int status, struct snd_soc_dai *dai) -{ - if(substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { - if(status == SNDRV_PCM_TRIGGER_START){ - //on_off_ext_amp(1); - } - else if(status == SNDRV_PCM_TRIGGER_STOP){ - //on_off_ext_amp(0); - } - } - - return 0; -} ///////////////////////////////////////////////////////////////// static int es8323_set_bias_level(struct snd_soc_codec *codec, enum snd_soc_bias_level level) { struct es8323_priv *es8323 = snd_soc_codec_get_drvdata(codec); - u16 OUT_VOL = snd_soc_read(codec, ES8323_LOUT1_VOL); - + // u16 OUT_VOL = snd_soc_read(codec, ES8323_LOUT1_VOL); + // u16 i; + DBG("Enter::%s----%d level =%d\n",__FUNCTION__,__LINE__,level); - u16 i; switch (level) { case SND_SOC_BIAS_ON: es8323->is_biason = 1; break; - case SND_SOC_BIAS_PREPARE: - snd_soc_write(codec, 0x07, 0x7C); - snd_soc_write(codec, 0x05, 0x00); - snd_soc_write(codec, 0x06, 0xFF); - //snd_soc_write(codec, 0x2b, 0x80); + snd_soc_write(codec, ES8323_ANAVOLMANAG, 0x7C); + snd_soc_write(codec, ES8323_CHIPLOPOW1, 0x00); + snd_soc_write(codec, ES8323_CHIPLOPOW2, 0xFF); snd_soc_write(codec, ES8323_CHIPPOWER, 0x00); - //snd_soc_write(codec, ES8323_DACPOWER, 0x0c); snd_soc_write(codec, ES8323_ADCPOWER, 0x59); - //snd_soc_write(codec, 0x19, 0x00); break; - case SND_SOC_BIAS_STANDBY: - - snd_soc_write(codec, 0x07, 0x7C); - snd_soc_write(codec, 0x05, 0x00); - snd_soc_write(codec, 0x06, 0xFF); - //snd_soc_write(codec, 0x2b, 0x80); + case SND_SOC_BIAS_STANDBY: + snd_soc_write(codec, ES8323_ANAVOLMANAG, 0x7C); + snd_soc_write(codec, ES8323_CHIPLOPOW1, 0x00); + snd_soc_write(codec, ES8323_CHIPLOPOW2, 0xFF); snd_soc_write(codec, ES8323_CHIPPOWER, 0x00); - //snd_soc_write(codec, ES8323_DACPOWER, 0x0c); snd_soc_write(codec, ES8323_ADCPOWER, 0x59); - //snd_soc_write(codec, 0x19, 0x00); break; - case SND_SOC_BIAS_OFF: - //snd_soc_write(codec, 0x19, 0x04); - //snd_soc_write(codec, ES8323_DACPOWER, 0xcc); - snd_soc_write(codec, 0x07, 0x7B); - snd_soc_write(codec, 0x05, 0xFF); - snd_soc_write(codec, 0x06, 0xFF); + snd_soc_write(codec, ES8323_ANAVOLMANAG, 0x7B); + snd_soc_write(codec, ES8323_CHIPLOPOW1, 0xFF); + snd_soc_write(codec, ES8323_CHIPLOPOW2, 0xFF); snd_soc_write(codec, ES8323_ADCPOWER, 0xFF); snd_soc_write(codec, ES8323_CHIPPOWER, 0xAA); @@ -1017,7 +884,6 @@ static struct snd_soc_dai_ops es8323_ops = { .set_fmt = es8323_set_dai_fmt, .set_sysclk = es8323_set_dai_sysclk, .digital_mute = es8323_mute, -// .trigger = es8323_trigger, }; static struct snd_soc_dai_driver es8323_dai = { @@ -1042,7 +908,7 @@ static struct snd_soc_dai_driver es8323_dai = { static int es8323_suspend(struct snd_soc_codec *codec, pm_message_t state) { - u16 i; + // u16 i; DBG("Enter::%s----%d\n",__FUNCTION__,__LINE__); #if 0 @@ -1055,34 +921,30 @@ static int es8323_suspend(struct snd_soc_codec *codec, pm_message_t state) snd_soc_write(codec, 0x19, 0x06); snd_soc_write(codec, 0x30, 0x00); snd_soc_write(codec, 0x31, 0x00); - - - snd_soc_write(codec, ES8323_ADCPOWER, 0xFF); - snd_soc_write(codec, ES8323_DACPOWER, 0xc0); - snd_soc_write(codec, ES8323_CHIPPOWER, 0xF3); - snd_soc_write(codec, 0x00, 0x00); - snd_soc_write(codec, 0x01, 0x58); - snd_soc_write(codec, 0x2b, 0x9c); - msleep(50); - gpio_set_value(SPK_CON, 0); - return 0; + snd_soc_write(codec, ES8323_ADCPOWER, 0xFF); + snd_soc_write(codec, ES8323_DACPOWER, 0xc0); + snd_soc_write(codec, ES8323_CHIPPOWER, 0xF3); + snd_soc_write(codec, 0x00, 0x00); + snd_soc_write(codec, 0x01, 0x58); + snd_soc_write(codec, 0x2b, 0x9c); + msleep(50); + gpio_set_value(SPK_CON, 0); + return 0; } static int es8323_resume(struct snd_soc_codec *codec) { - u16 i; - u8 data[2]; - u16 *cache = codec->reg_cache; + // u16 i; + // u8 data[2]; + // u16 *cache = codec->reg_cache; snd_soc_write(codec, 0x2b, 0x80); - snd_soc_write(codec, 0x01, 0x50); - snd_soc_write(codec, 0x00, 0x36); - + snd_soc_write(codec, 0x01, 0x50); + snd_soc_write(codec, 0x00, 0x32); snd_soc_write(codec, ES8323_CHIPPOWER, 0x00); snd_soc_write(codec, ES8323_DACPOWER, 0x0c); snd_soc_write(codec, ES8323_ADCPOWER, 0x59); - - snd_soc_write(codec, 0x31, es8323_DEF_VOL); - snd_soc_write(codec, 0x30, es8323_DEF_VOL); + snd_soc_write(codec, 0x31, es8323_DEF_VOL); + snd_soc_write(codec, 0x30, es8323_DEF_VOL); snd_soc_write(codec, 0x19, 0x02); gpio_set_value(SPK_CON, 1); return 0; @@ -1127,10 +989,11 @@ void spk_timer_callback(unsigned long data ) static int es8323_probe(struct snd_soc_codec *codec) { - struct es8323_priv *es8323 = snd_soc_codec_get_drvdata(codec); + // struct es8323_priv *es8323 = snd_soc_codec_get_drvdata(codec); struct snd_soc_dapm_context *dapm = &codec->dapm; int ret = 0; - u16 reg,i; + unsigned long flags=0; + // u16 reg,i; printk("%s\n", __func__); #if 0 @@ -1148,6 +1011,26 @@ static int es8323_probe(struct snd_soc_codec *codec) } //gpio_set_value(SPK_CON, 1); gpio_direction_output(SPK_CON,0); + + + ret = gpio_request(HP_DET, NULL); + if (ret != 0) { + printk("%s request HP_DET error", __func__); + return ret; + } + gpio_direction_input(HP_DET); + + flags = gpio_get_value(HP_DET) ? IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING; + + HP_IRQ = gpio_to_irq(HP_DET); + if (HP_IRQ){ + ret = request_irq(HP_IRQ, hp_det_irq_handler, flags, "ES8323", NULL); + if(ret == 0){ + printk("%s:register ISR (irq=%d)\n", __FUNCTION__,HP_IRQ); + } + else + printk("request_irq HP_IRQ failed\n"); + } if (codec == NULL) { dev_err(codec->dev, "Codec device not registered\n"); @@ -1177,63 +1060,64 @@ static int es8323_probe(struct snd_soc_codec *codec) #if 1 //snd_soc_write(codec, 0x35 , 0xa0); - //snd_soc_write(codec, 0x36 , 0x08); - snd_soc_write(codec, 0x2B,0x80); - snd_soc_write(codec, 0x08,0x00); //ES8388 salve - snd_soc_write(codec, 0x00,0x36); // - snd_soc_write(codec, 0x01,0x74); - snd_soc_write(codec, 0x01,0x50); //PLAYBACK & RECORD Mode,EnRefr=1 - msleep(1200); - snd_soc_write(codec, 0x04,0xfc); //pdn_ana=0,ibiasgen_pdn=0 - snd_soc_write(codec, 0x03,0x59); //pdn_ana=0,ibiasgen_pdn=0 - snd_soc_write(codec, 0x05,0x00); //pdn_ana=0,ibiasgen_pdn=0 - snd_soc_write(codec, 0x06,0xc3); //pdn_ana=0,ibiasgen_pdn=0 - snd_soc_write(codec, 0x02,0xF0); //START DLL and STM - snd_soc_write(codec, 0x02,0xc0); //START DLL and STM - snd_soc_write(codec, 0x09,0x88); //ADC L/R PGA = +24dB - snd_soc_write(codec, 0x2e, 0x00); - snd_soc_write(codec, 0x2f, 0x00); - //---------------------------------------------------------------------------------------------------------------- - snd_soc_write(codec, 0x0a,0xf0); //ADC INPUT=LIN2/RIN2 - snd_soc_write(codec, 0x0b,0x82); //ADC INPUT=LIN2/RIN2 //82 - //----------------------------------------------------------------------------------------------------------------- - snd_soc_write(codec, 0x0C,0x4c); //I2S-24BIT - snd_soc_write(codec, 0x0d,0x02); //MCLK/LRCK=256 - snd_soc_write(codec, 0x10,0x00); //ADC Left Volume=0db - snd_soc_write(codec, 0x11,0x00); //ADC Right Volume=0db - snd_soc_write(codec, 0x12,0xea); // ALC stereo MAXGAIN: 35.5dB, MINGAIN: +6dB (Record Volume increased!) - snd_soc_write(codec, 0x13,0xc0); - snd_soc_write(codec, 0x14,0x05); - snd_soc_write(codec, 0x15,0x06); - snd_soc_write(codec, 0x16,0x53); - snd_soc_write(codec, 0x17,0x18); //I2S-16BIT - snd_soc_write(codec, 0x18,0x02); - snd_soc_write(codec, 0x1A,0x0A); //DAC VOLUME=0DB - snd_soc_write(codec, 0x1B,0x0A); - /***********************/ - snd_soc_write(codec, 0x1E,0x01); //for 47uF capacitors ,15db Bass@90Hz,Fs=44100 - snd_soc_write(codec, 0x1F,0x84); - snd_soc_write(codec, 0x20,0xED); - snd_soc_write(codec, 0x21,0xAF); - snd_soc_write(codec, 0x22,0x20); - snd_soc_write(codec, 0x23,0x6C); - snd_soc_write(codec, 0x24,0xE9); - snd_soc_write(codec, 0x25,0xBE); - /***********************/ - snd_soc_write(codec, 0x26,0x12); //Left DAC TO Left MIXER - snd_soc_write(codec, 0x27,0xb8); //Left DAC TO Left MIXER - snd_soc_write(codec, 0x28,0x38); - snd_soc_write(codec, 0x29,0x38); - snd_soc_write(codec, 0x2A,0xb8); - snd_soc_write(codec, 0x2e,0x00); - snd_soc_write(codec, 0x2f,0x00); - snd_soc_write(codec, 0x30,0x00); - snd_soc_write(codec, 0x31,0x00); - snd_soc_write(codec, 0x02,0x00); //aa //START DLL and state-machine,START DSM - snd_soc_write(codec, 0x04,0x3c); - snd_soc_write(codec, 0x19,0xe2); //SOFT RAMP RATE=32LRCKS/STEP,Enable ZERO-CROSS CHECK,DAC MUTE - - + //snd_soc_write(codec, 0x36 , 0x08); //for 1.8V VDD +snd_soc_write(codec, 0x02,0xf3); +snd_soc_write(codec, 0x2B,0x80); +snd_soc_write(codec, 0x08,0x00); //ES8388 salve +snd_soc_write(codec, 0x00,0x32); // +snd_soc_write(codec, 0x01,0x72); //PLAYBACK & RECORD Mode,EnRefr=1 +snd_soc_write(codec, 0x03,0x59); //pdn_ana=0,ibiasgen_pdn=0 +snd_soc_write(codec, 0x05,0x00); //pdn_ana=0,ibiasgen_pdn=0 +snd_soc_write(codec, 0x06,0xc3); //pdn_ana=0,ibiasgen_pdn=0 +snd_soc_write(codec, 0x09,0x88); //ADC L/R PGA = +24dB +//---------------------------------------------------------------------------------------------------------------- +snd_soc_write(codec, 0x0a,0xf0); //ADC INPUT=LIN2/RIN2 +snd_soc_write(codec, 0x0b,0x82); //ADC INPUT=LIN2/RIN2 //82 +//----------------------------------------------------------------------------------------------------------------- +snd_soc_write(codec, 0x0C,0x4c); //I2S-24BIT +snd_soc_write(codec, 0x0d,0x02); //MCLK/LRCK=256 +snd_soc_write(codec, 0x10,0x00); //ADC Left Volume=0db +snd_soc_write(codec, 0x11,0x00); //ADC Right Volume=0db +snd_soc_write(codec, 0x12,0xea); // ALC stereo MAXGAIN: 35.5dB, MINGAIN: +6dB (Record Volume increased!) +snd_soc_write(codec, 0x13,0xc0); +snd_soc_write(codec, 0x14,0x05); +snd_soc_write(codec, 0x15,0x06); +snd_soc_write(codec, 0x16,0x53); +snd_soc_write(codec, 0x17,0x18); //I2S-16BIT +snd_soc_write(codec, 0x18,0x02); +snd_soc_write(codec, 0x1A,0x00); //DAC VOLUME=0DB +snd_soc_write(codec, 0x1B,0x00); + /* + snd_soc_write(codec, 0x1E,0x01); //for 47uF capacitors ,15db Bass@90Hz,Fs=44100 + snd_soc_write(codec, 0x1F,0x84); + snd_soc_write(codec, 0x20,0xED); + snd_soc_write(codec, 0x21,0xAF); + snd_soc_write(codec, 0x22,0x20); + snd_soc_write(codec, 0x23,0x6C); + snd_soc_write(codec, 0x24,0xE9); + snd_soc_write(codec, 0x25,0xBE); + */ +snd_soc_write(codec, 0x26,0x12); //Left DAC TO Left IXER +snd_soc_write(codec, 0x27,0xb8); //Left DAC TO Left MIXER +snd_soc_write(codec, 0x28,0x38); +snd_soc_write(codec, 0x29,0x38); +snd_soc_write(codec, 0x2A,0xb8); +snd_soc_write(codec, 0x02,0x00); //aa //START DLL and state-machine,START DSM +snd_soc_write(codec, 0x19,0x02); //SOFT RAMP RATE=32LRCKS/STEP,Enable ZERO-CROSS CHECK,DAC MUTE +snd_soc_write(codec, 0x04,0x0c); //pdn_ana=0,ibiasgen_pdn=0 +msleep(100); +snd_soc_write(codec, 0x2e,0x00); +snd_soc_write(codec, 0x2f,0x00); +snd_soc_write(codec, 0x30,0x08); +snd_soc_write(codec, 0x31,0x08); +msleep(200); +snd_soc_write(codec, 0x30,0x0f); +snd_soc_write(codec, 0x31,0x0f); +msleep(200); +snd_soc_write(codec, 0x30,0x18); +snd_soc_write(codec, 0x31,0x18); +msleep(100); +snd_soc_write(codec, 0x04,0x2c); //pdn_ana=0,ibiasgen_pdn=0 #endif //s8323_set_bias_level(codec, SND_SOC_BIAS_STANDBY); @@ -1258,25 +1142,10 @@ static int es8323_remove(struct snd_soc_codec *codec) void codec_set_spk(bool on) { - struct snd_soc_codec *codec = es8323_codec; - - DBG("Enter::%s----%d--\n",__FUNCTION__,__LINE__); - - if (!on) - //snd_soc_write(codec, ES8323_DACCONTROL3, mute_reg | 0x4); - { - snd_soc_write(codec, ES8323_DACCONTROL3, 0x06);//0xe6); - - } - else - { - - snd_soc_write(codec, ES8323_DACCONTROL3, 0x02);//0xe2); + DBG("Enter::%s----%d--, on = %d\n",__FUNCTION__,__LINE__, on); - - - } - on_off_ext_amp(on); + set_spk = on; + gpio_set_value(SPK_CON, on); //return; } @@ -1293,6 +1162,7 @@ static struct snd_soc_codec_driver soc_codec_dev_es8323 = { //.volatile_register = es8323_volatile_register, //.readable_register = es8323_readable_register, .reg_cache_step = 1, +#if 0 .controls = es8323_snd_controls, .num_controls = ARRAY_SIZE(es8323_snd_controls), .dapm_routes = audio_map, @@ -1303,6 +1173,7 @@ static struct snd_soc_codec_driver soc_codec_dev_es8323 = { //-------------------------------------------------- .read = es8323_read_reg_cache, .write = es8323_write, +#endif }; #if defined(CONFIG_SPI_MASTER) @@ -1444,8 +1315,8 @@ static __devinit int es8323_i2c_probe(struct i2c_client *i2c, i2c_set_clientdata(i2c, es8323); es8323->control_type = SND_SOC_I2C; - reg = ES8323_IFACE; - ret = i2c_master_reg8_recv(i2c,reg, &tmp, 1 ,200 * 1000); + reg = ES8323_DACCONTROL18; + ret = i2c_master_reg8_recv(i2c, reg, &tmp, 1 ,200 * 1000); //ret =i2c_master_reg8_recv(client, 0x00, buf, 2, 200*1000);//i2c_write_bytes(client, &test_data, 1); //Test I2C connection. if (ret < 0){ printk("es8323 probe error\n"); @@ -1453,7 +1324,7 @@ static __devinit int es8323_i2c_probe(struct i2c_client *i2c, return ret; } - printk("es8323 probe ok\n"); + printk("es8323 probe i2c recv ok\n"); ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_es8323, &es8323_dai, 1); @@ -1468,7 +1339,9 @@ static __devinit int es8323_i2c_probe(struct i2c_client *i2c, return -ENOMEM; } es8323_dev = device_create(es8323_class, NULL, MKDEV(0, 1), NULL, "dev"); - device_create_file(es8323_dev, &dev_attr_es8323); + ret = device_create_file(es8323_dev, &dev_attr_es8323); + if (ret < 0) + printk("failed to add dev_attr_es8323 file\n"); return ret; } @@ -1488,41 +1361,21 @@ MODULE_DEVICE_TABLE(i2c, es8323_i2c_id); void es8323_i2c_shutdown(struct i2c_client *client) { - printk("Chenzy-------hkw-------%s\n", __func__); - - gpio_direction_output(SPK_CON,0); - -#if 0 -#if 1 - gpio_direction_output(SPK_CON,0); - //gpio_request(RK30_PIN0_PC7, NULL); - //gpio_direction_output(RK30_PIN0_PC7,0); -#endif + printk("Chenzy-------hkw-------%s\n", __func__); + gpio_direction_output(SPK_CON,0); - on_off_ext_amp(0); - // es8323_set_bias_level(es8323_codec, SND_SOC_BIAS_OFF); - -//#define SPK_CTL RK29_PIN6_PB6 -// #ifdef SPK_CTL -// //gpio_direction_output(SPK_CTL, GPIO_LOW); -// gpio_set_value(SPK_CTL, i); -// DBG("*** %s() SPEAKER set as %d\n", __FUNCTION__, i); -// #endif -//#undef SPK_CTL - u16 i; - snd_soc_write(es8323_codec, ES8323_DACCONTROL3, 0x06);//0xe6); - for(i = 0; i <= 0x1d; i++) - { - snd_soc_write(es8323_codec, ES8323_LOUT2_VOL, 0x1d - i);//0x1c); // - snd_soc_write(es8323_codec, ES8323_ROUT2_VOL, 0x1d - i);//0x1c); // - } - snd_soc_write(es8323_codec, ES8323_ADCPOWER, 0xFF); - snd_soc_write(es8323_codec, ES8323_DACPOWER, 0xFC); + snd_soc_write(es8323_codec, ES8323_CONTROL2, 0x58); + snd_soc_write(es8323_codec, ES8323_CONTROL1, 0x32); snd_soc_write(es8323_codec, ES8323_CHIPPOWER, 0xf3); -#endif - return 0; - - mdelay(100); + snd_soc_write(es8323_codec, ES8323_DACPOWER, 0xc0); + + snd_soc_write(es8323_codec, ES8323_DACCONTROL26, 0x00); + snd_soc_write(es8323_codec, ES8323_DACCONTROL27, 0x00); + + snd_soc_write(es8323_codec, ES8323_CONTROL1, 0x30); + snd_soc_write(es8323_codec, ES8323_CONTROL1, 0x34); + + mdelay(100); } #define I2C_CLK_NAME GPIO0B0_I2S8CHCLK_NAME #define I2C_CLK_GPIO_MODE GPIO0B_GPIO0B0 @@ -1535,7 +1388,7 @@ void es8323_i2c_shutdown(struct i2c_client *client) #define I2C_MGPIO_OUTPUT GPIO_LOW #define I2C_MCLK_CLK_MODE GPIO0B_I2S_8CH_SCLK #define I2C_MCLK_GPIO RK30_PIN0_PB1 -static int es8323_i2c_suspend (struct i2c_client *client) +static int es8323_i2c_suspend (struct i2c_client *client, pm_message_t mesg) { #if 0 rk30_mux_api_set(I2C_CLK_NAME,I2C_CLK_GPIO_MODE); @@ -1615,27 +1468,6 @@ static struct i2c_driver es8323_i2c_driver = { static int __init es8323_modinit(void) { - //if(0 == tcsi_get_value(TCSI_CODEC_ES8323)) - // return; -#if 1 - //extern int get_sound_card_exist() ; - //extern void set_sound_card_exist(int i) ; - //extern int i2c0_prober_verify(u32 dev_addr, u16 reg, u32 reg_addr_len, u32 reg_val_len, u32 id); - //typedef void (*fp_codec_set_spk)(bool on); - //extern void set_codec_set_spk(fp_codec_set_spk fp); - //if(get_sound_card_exist()) { - // printk("%s():Sound card already exist!\n", __FUNCTION__); - // return -ENODEV; - //} - //if(i2c0_prober_verify(0x10, 0x35, 1, 1, 0x0000) != 0) { - // printk("%s(): Ping error with 0x1a\n", __FUNCTION__); - // return -ENODEV; - //} - //else - // printk("%s(): Ping OK with 0x1a\n", __FUNCTION__); - //set_sound_card_exist(0x8323); - //set_codec_set_spk(es8323_codec_set_spk); -#endif return i2c_add_driver(&es8323_i2c_driver); } module_init(es8323_modinit); -- 2.34.1