rk3168_86v: basic function is ok
authorhjc <hjc@rock-chips.com>
Wed, 27 Mar 2013 12:55:56 +0000 (20:55 +0800)
committerhjc <hjc@rock-chips.com>
Wed, 27 Mar 2013 13:23:56 +0000 (21:23 +0800)
arch/arm/configs/rk3168_86v_codec_defconfig
arch/arm/mach-rk30/board-rk3168-86v.c
drivers/input/touchscreen/Kconfig
drivers/input/touchscreen/Makefile
drivers/input/touchscreen/rockchip_gslX680.c [changed mode: 0644->0755]
drivers/input/touchscreen/rockchip_gslX680_rk3168.c [new file with mode: 0755]
drivers/input/touchscreen/rockchip_gslX680_rk3168.h [new file with mode: 0755]
drivers/video/display/screen/Kconfig
drivers/video/display/screen/Makefile
drivers/video/display/screen/lcd_E242868_rk3168_86v.c [new file with mode: 0644]
sound/soc/codecs/es8323.c

index 314ed280d07ad8db492e20fef7c76ed4aff15cb6..b697eea2de4533c452104bf6eef47bacde6d556c 100644 (file)
@@ -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
index c47c2127da936517881640e1652dfe0cafefb1ce..e893551389dca3d71341061932ab4c52ca407358 100755 (executable)
@@ -76,6 +76,9 @@
 #include "board-rk3168-86v-camera.c"
 #include <plat/key.h>
 
+#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];
index b0dceff4bb0588c5c90da1cbaaef2cd92a613f26..ca38400d250fbfd1320a374f6059d0d9091c9c42 100644 (file)
@@ -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"
index dfb8971ecebc984918e8f1e2dd79476812771d82..1af0c9501113671e3f434b0fad96505d86bb3e02 100644 (file)
@@ -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
old mode 100644 (file)
new mode 100755 (executable)
index a94df8b..a758697
 #include <linux/workqueue.h>
 #include <linux/proc_fs.h>
 #include <linux/input/mt.h>
-
+#ifdef CONFIG_MACH_RK3168_86V
+#include <rockchip_gslX680_86v.h>
+#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 (executable)
index 0000000..64cd6bc
--- /dev/null
@@ -0,0 +1,1083 @@
+/*
+ * drivers/input/touchscreen/gslX680.c
+ *
+ * Copyright (c) 2012 Shanghai Basewin
+ *     Guan Yuwei<guanyuwei@basewin.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ */
+
+
+#include <linux/module.h>
+#include <linux/delay.h>
+#include <linux/earlysuspend.h>
+#include <linux/hrtimer.h>
+#include <linux/i2c.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/io.h>
+#include <linux/platform_device.h>
+#include <linux/async.h>
+#include <mach/gpio.h>
+#include <mach/iomux.h>
+#include <linux/irq.h>
+#include <mach/board.h>
+#include <linux/workqueue.h>
+#include <linux/proc_fs.h>
+#include <linux/input/mt.h>
+
+#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 = &reg;
+
+       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 (executable)
index 0000000..82f046f
--- /dev/null
@@ -0,0 +1,5504 @@
+#ifndef _GSLX680_H_\r
+#define _GSLX680_H_\r
+\r
+\r
+#define SCREEN_MAX_X           1024\r
+#define SCREEN_MAX_Y           600\r
+\r
+#define GSL1680E_COMPATIBLE\r
+struct fw_data\r
+{\r
+    u32 offset : 8;\r
+    u32 : 0;\r
+    u32 val;\r
+};\r
+\r
+#ifdef GSL1680E_COMPATIBLE\r
+static const struct fw_data GSL1680E_FW[] = {\r
+//GSL_1680E+1688E+2681B+2682B_V1.3.4_2013.02.28\r
+{0xf0,0x3},\r
+{0x00,0xa5a5ffc0},\r
+{0x04,0x00000000},\r
+{0x08,0xe810c4e1},\r
+{0x0c,0xd3dd7f4d},\r
+{0x10,0xd7c56634},\r
+{0x14,0xe3505a2a},\r
+{0x18,0x514d494f},\r
+{0x1c,0x84a36ccb},\r
+{0x20,0x00000000},\r
+{0x24,0x00000000},\r
+{0x28,0x00000000},\r
+{0x2c,0x00000000},\r
+{0x30,0x00001000},\r
+{0x34,0x00000000},\r
+{0x38,0x00000000},\r
+{0x3c,0x00000000},\r
+{0x40,0x00000001},\r
+{0x44,0x00000000},\r
+{0x48,0x00000000},\r
+{0x4c,0x00000000},\r
+{0x50,0x00000000},\r
+{0x54,0x01020304},\r
+{0x58,0x05060708},\r
+{0x5c,0x090a0b0c},\r
+{0x60,0x0d0e0e0f},\r
+{0x64,0x10111213},\r
+{0x68,0x14151617},\r
+{0x6c,0x18191a1b},\r
+{0x70,0x1b1c1e1f},\r
+{0x74,0x00000000},\r
+{0x78,0x00010000},\r
+{0x7c,0x8c846af3},\r
+{0xf0,0x4},\r
+{0x00,0x00000000},\r
+{0x04,0x00000000},\r
+{0x08,0x00000000},\r
+{0x0c,0x00000000},\r
+{0x10,0x00000000},\r
+{0x14,0x00000000},\r
+{0x18,0x00000000},\r
+{0x1c,0x00000000},\r
+{0x20,0x00000000},\r
+{0x24,0x00000000},\r
+{0x28,0x00000000},\r
+{0x2c,0x00000000},\r
+{0x30,0x00002400},\r
+{0x34,0x00000000},\r
+{0x38,0x00000000},\r
+{0x3c,0x00000000},\r
+{0x40,0x00000000},\r
+{0x44,0x00000002},\r
+{0x48,0x00000001},\r
+{0x4c,0x00004000},\r
+{0x50,0x00000000},\r
+{0x54,0x00010202},\r
+{0x58,0x03040405},\r
+{0x5c,0x06070808},\r
+{0x60,0x090b0b0c},\r
+{0x64,0x0d0e0f10},\r
+{0x68,0x11121415},\r
+{0x6c,0x1617191a},\r
+{0x70,0x1a1c1d1f},\r
+{0x74,0x00000000},\r
+{0x78,0x80808080},\r
+{0x7c,0x8c846af3},\r
+{0xf0,0x5},\r
+{0x00,0xf3b18989},\r
+{0x04,0x00000005},\r
+{0x08,0x000001f4},\r
+{0x0c,0x7d7d807d},\r
+{0x10,0x00000000},\r
+{0x14,0x00000000},\r
+{0x18,0x00000fff},\r
+{0x1c,0x10350007},\r
+{0x20,0x10000000},\r
+{0x24,0x00000000},\r
+{0x28,0x00000000},\r
+{0x2c,0x00000400},\r
+{0x30,0x00808080},\r
+{0x34,0x80808080},\r
+{0x38,0x80808080},\r
+{0x3c,0x80808080},\r
+{0x40,0x80808080},\r
+{0x44,0x80808080},\r
+{0x48,0x80808080},\r
+{0x4c,0x80808080},\r
+{0x50,0x000005dc},\r
+{0x54,0x00010203},\r
+{0x58,0x04050506},\r
+{0x5c,0x07080809},\r
+{0x60,0x0a0b0c0d},\r
+{0x64,0x0d0f1011},\r
+{0x68,0x12131415},\r
+{0x6c,0x1617191a},\r
+{0x70,0x1a1c1e1f},\r
+{0x74,0x00000001},\r
+{0x78,0x0000000f},\r
+{0x7c,0x0000000a},\r
+{0xf0,0x6},\r
+{0x00,0x0000000f},\r
+{0x04,0x00000000},\r
+{0x08,0x0000000a},\r
+{0x0c,0x00000000},\r
+{0x10,0x00000032},\r
+{0x14,0x00000032},\r
+{0x18,0x00000000},\r
+{0x1c,0x00000001},\r
+{0x20,0x00002904},\r
+{0x24,0x00000258},\r
+{0x28,0x00000400},\r
+{0x2c,0xf8010015},\r
+{0x30,0xf8010015},\r
+{0x34,0x00000003},\r
+{0x38,0x00000003},\r
+{0x3c,0x00000fff},\r
+{0x40,0x80000000},\r
+{0x44,0x001c001c},\r
+{0x48,0x00000fff},\r
+{0x4c,0x00000004},\r
+{0x50,0x00020001},\r
+{0x54,0x00000000},\r
+{0x58,0x00001000},\r
+{0x5c,0x12492488},\r
+{0x60,0x00000000},\r
+{0x64,0x00000000},\r
+{0x68,0x00000000},\r
+{0x6c,0x00000000},\r
+{0x70,0x00000000},\r
+{0x74,0x0000014f},\r
+{0x78,0x00000032},\r
+{0x7c,0x00000000},\r
+{0xf0,0x7},\r
+{0x00,0x04010700},\r
+{0x04,0x06030902},\r
+{0x08,0x0805040a},\r
+{0x0c,0x07110610},\r
+{0x10,0x09130812},\r
+{0x14,0x00543216},\r
+{0x18,0x007890ab},\r
+{0x1c,0x00321094},\r
+{0x20,0x005678ab},\r
+{0x24,0xff080010},\r
+{0x28,0xff080120},\r
+{0x2c,0xff080140},\r
+{0x30,0xff080160},\r
+{0x34,0x000000c8},\r
+{0x38,0x000000ad},\r
+{0x3c,0x00000092},\r
+{0x40,0x00000000},\r
+{0x44,0x00000100},\r
+{0x48,0x00000000},\r
+{0x4c,0x00000000},\r
+{0x50,0x00000000},\r
+{0x54,0x00000004},\r
+{0x58,0x00040000},\r
+{0x5c,0x00090005},\r
+{0x60,0x000d000a},\r
+{0x64,0x000e000e},\r
+{0x68,0x00040000},\r
+{0x6c,0x00040000},\r
+{0x70,0x00030000},\r
+{0x74,0x00000000},\r
+{0x78,0x00432105},\r
+{0x7c,0x006789ab},\r
+{0xf0,0x8},\r
+{0x00,0x026f028f},\r
+{0x04,0x02af02cf},\r
+{0x08,0x02ef230f},\r
+{0x0c,0x232f234f},\r
+{0x10,0x21f321f4},\r
+{0x14,0x41f541f6},\r
+{0x18,0x41f741f8},\r
+{0x1c,0x71f9022f},\r
+{0x20,0x024f036f},\r
+{0x24,0x01f001f1},\r
+{0x28,0x01f2020f},\r
+{0x2c,0x01fa0000},\r
+{0x30,0x00000000},\r
+{0x34,0x00000000},\r
+{0x38,0x00000000},\r
+{0x3c,0x000043ef},\r
+{0x40,0x02040608},\r
+{0x44,0x0a000000},\r
+{0x48,0x00000000},\r
+{0x4c,0x01030507},\r
+{0x50,0x09000000},\r
+{0x54,0x00000000},\r
+{0x58,0x00000000},\r
+{0x5c,0x00000008},\r
+{0x60,0x00000000},\r
+{0x64,0x00000000},\r
+{0x68,0x00000000},\r
+{0x6c,0x00000000},\r
+{0x70,0x00000000},\r
+{0x74,0x00000000},\r
+{0x78,0x00000000},\r
+{0x7c,0x0000000a},\r
+{0xf0,0x9},\r
+{0x00,0xff080094},\r
+{0x04,0x00070011},\r
+{0x08,0xff080090},\r
+{0x0c,0x00040000},\r
+{0x10,0xfffffff0},\r
+{0x14,0x00000000},\r
+{0x18,0xfffffff0},\r
+{0x1c,0x00000000},\r
+{0x20,0xfffffff0},\r
+{0x24,0x00000000},\r
+{0x28,0xfffffff0},\r
+{0x2c,0x00000000},\r
+{0x30,0xfffffff0},\r
+{0x34,0x00000000},\r
+{0x38,0xfffffff0},\r
+{0x3c,0x00000000},\r
+{0x40,0xfffffff0},\r
+{0x44,0x00000000},\r
+{0x48,0xfffffff0},\r
+{0x4c,0x00000000},\r
+{0x50,0xfffffff0},\r
+{0x54,0x00000000},\r
+{0x58,0xfffffff0},\r
+{0x5c,0x00000000},\r
+{0x60,0xfffffff0},\r
+{0x64,0x00000000},\r
+{0x68,0xfffffff0},\r
+{0x6c,0x00000000},\r
+{0x70,0xfffffff0},\r
+{0x74,0x00000000},\r
+{0x78,0xfffffff0},\r
+{0x7c,0x00000000},\r
+/*\r
+{0xf0,0xe0},\r
+{0x00,0x006f0032},\r
+{0x04,0x00000057},\r
+{0x08,0x003e005f},\r
+{0x0c,0x007d0011},\r
+{0x10,0x008b0007},\r
+{0x14,0x001c000d},\r
+{0x18,0x001100ae},\r
+{0x1c,0x003c006a},\r
+{0x20,0x00a5001e},\r
+{0x24,0x00230065},\r
+{0x28,0x006a0043},\r
+{0x2c,0x005e0072},\r
+{0x30,0x009c0003},\r
+{0x34,0x000000be},\r
+{0x38,0x00d70022},\r
+{0x3c,0x00470057},\r
+{0x40,0x006401f4},\r
+{0x44,0x00640064},\r
+{0x48,0x01900064},\r
+{0x4c,0x00500190},\r
+{0x50,0x00500050},\r
+{0x54,0x012c0050},\r
+{0x58,0x012c012c},\r
+{0x5c,0x0028012c},\r
+{0x60,0x00640000},\r
+{0x64,0x00640064},\r
+{0x68,0x00000032},\r
+{0x6c,0x00000000},\r
+{0x70,0x00000000},\r
+{0x74,0x00000000},\r
+{0x78,0x00000000},\r
+{0x7c,0x00000000},\r
+{0xf0,0xe1},\r
+{0x00,0x00580022},\r
+{0x04,0x00000054},\r
+{0x08,0x0041004d},\r
+{0x0c,0x008c000a},\r
+{0x10,0x00a60000},\r
+{0x14,0x00150001},\r
+{0x18,0x001200be},\r
+{0x1c,0x002d0064},\r
+{0x20,0x00aa001d},\r
+{0x24,0x002f004d},\r
+{0x28,0x0061005e},\r
+{0x2c,0x0070008c},\r
+{0x30,0x00970000},\r
+{0x34,0x000000d8},\r
+{0x38,0x00bb0012},\r
+{0x3c,0x0047006f},\r
+{0x40,0x00000000},\r
+{0x44,0x00000000},\r
+{0x48,0x00000000},\r
+{0x4c,0x00000000},\r
+{0x50,0x00000000},\r
+{0x54,0x00000000},\r
+{0x58,0x00000000},\r
+{0x5c,0x00000000},\r
+{0x60,0x00000000},\r
+{0x64,0x00000000},\r
+{0x68,0x00000000},\r
+{0x6c,0x00000000},\r
+{0x70,0x00000000},\r
+{0x74,0x00000000},\r
+{0x78,0x00000000},\r
+{0x7c,0x00000000},\r
+*/\r
+{0xf0,0x0},\r
+{0x00,0x01000000},\r
+{0x04,0x01000000},\r
+{0x08,0x01000000},\r
+{0x0c,0x233fc0c0},\r
+{0x10,0xa2146004},\r
+{0x14,0xa4102000},\r
+{0x18,0xe4244000},\r
+{0x1c,0x233fc0c0},\r
+{0x20,0xa2146010},\r
+{0x24,0x2500003f},\r
+{0x28,0xa414a3ff},\r
+{0x2c,0xe4244000},\r
+{0x30,0x01000000},\r
+{0x34,0x821020e0},\r
+{0x38,0x81880001},\r
+{0x3c,0x01000000},\r
+{0x40,0x01000000},\r
+{0x44,0x01000000},\r
+{0x48,0x270010c0},\r
+{0x4c,0xa614e00f},\r
+{0x50,0xe6a00040},\r
+{0x54,0x01000000},\r
+{0x58,0xa410200f},\r
+{0x5c,0xe4a00040},\r
+{0x60,0x01000000},\r
+{0x64,0xa0100000},\r
+{0x68,0xa2100000},\r
+{0x6c,0xa4100000},\r
+{0x70,0xa6100000},\r
+{0x74,0xa8100000},\r
+{0x78,0xaa100000},\r
+{0x7c,0xac100000},\r
+{0xf0,0x1},\r
+{0x00,0xae100000},\r
+{0x04,0x90100000},\r
+{0x08,0x92100000},\r
+{0x0c,0x94100000},\r
+{0x10,0x96100000},\r
+{0x14,0x98100000},\r
+{0x18,0x9a100000},\r
+{0x1c,0x9c100000},\r
+{0x20,0x9e100000},\r
+{0x24,0x84100000},\r
+{0x28,0x86100000},\r
+{0x2c,0x88100000},\r
+{0x30,0x8a100000},\r
+{0x34,0x8c100000},\r
+{0x38,0x8e100000},\r
+{0x3c,0x01000000},\r
+{0x40,0x01000000},\r
+{0x44,0x01000000},\r
+{0x48,0x82100000},\r
+{0x4c,0x81900001},\r
+{0x50,0x82100000},\r
+{0x54,0x81980001},\r
+{0x58,0x81800000},\r
+{0x5c,0x01000000},\r
+{0x60,0x01000000},\r
+{0x64,0x01000000},\r
+{0x68,0xbc102cf8},\r
+{0x6c,0x9c102c78},\r
+{0x70,0x01000000},\r
+{0x74,0x01000000},\r
+{0x78,0x01000000},\r
+{0x7c,0x01000000},\r
+{0xf0,0x2},\r
+{0x00,0x270010c0},\r
+{0x04,0xa614e00f},\r
+{0x08,0xe6a00040},\r
+{0x0c,0x01000000},\r
+{0x10,0x40000451},\r
+{0x14,0x01000000},\r
+{0x18,0x01000000},\r
+{0x1c,0x10bfffff},\r
+{0x20,0x01000000},\r
+{0x24,0x00000000},\r
+{0x28,0x00000000},\r
+{0x2c,0x00000000},\r
+{0x30,0x00000000},\r
+{0x34,0x00000000},\r
+{0x38,0x00000000},\r
+{0x3c,0x00000000},\r
+{0x40,0x00000000},\r
+{0x44,0x00000000},\r
+{0x48,0x00000000},\r
+{0x4c,0x00000000},\r
+{0x50,0x00000000},\r
+{0x54,0x00000000},\r
+{0x58,0x00000000},\r
+{0x5c,0x00000000},\r
+{0x60,0x00000000},\r
+{0x64,0x00000000},\r
+{0x68,0x00000000},\r
+{0x6c,0x00000000},\r
+{0x70,0x00000000},\r
+{0x74,0x00000000},\r
+{0x78,0x00000000},\r
+{0x7c,0x00000000},\r
+{0xf0,0x1a},\r
+{0x00,0x0000000e},\r
+{0x04,0xfffffe65},\r
+{0x08,0x000003fc},\r
+{0x0c,0x00000af6},\r
+{0x10,0x000003d4},\r
+{0x14,0xfffffe64},\r
+{0x18,0x00000008},\r
+{0x1c,0xfffffe66},\r
+{0x20,0x00000425},\r
+{0x24,0x00000af5},\r
+{0x28,0x000003ac},\r
+{0x2c,0xfffffe65},\r
+{0x30,0x00000003},\r
+{0x34,0xfffffe67},\r
+{0x38,0x0000044e},\r
+{0x3c,0x00000af3},\r
+{0x40,0x00000384},\r
+{0x44,0xfffffe65},\r
+{0x48,0xfffffffd},\r
+{0x4c,0xfffffe69},\r
+{0x50,0x00000476},\r
+{0x54,0x00000aef},\r
+{0x58,0x0000035c},\r
+{0x5c,0xfffffe67},\r
+{0x60,0xfffffff7},\r
+{0x64,0xfffffe6c},\r
+{0x68,0x0000049f},\r
+{0x6c,0x00000aea},\r
+{0x70,0x00000335},\r
+{0x74,0xfffffe68},\r
+{0x78,0xfffffff1},\r
+{0x7c,0xfffffe6f},\r
+{0xf0,0x1b},\r
+{0x00,0x000004c9},\r
+{0x04,0x00000ae5},\r
+{0x08,0x0000030e},\r
+{0x0c,0xfffffe6a},\r
+{0x10,0xffffffeb},\r
+{0x14,0xfffffe73},\r
+{0x18,0x000004f2},\r
+{0x1c,0x00000ade},\r
+{0x20,0x000002e7},\r
+{0x24,0xfffffe6d},\r
+{0x28,0xffffffe4},\r
+{0x2c,0xfffffe78},\r
+{0x30,0x0000051b},\r
+{0x34,0x00000ad5},\r
+{0x38,0x000002c1},\r
+{0x3c,0xfffffe70},\r
+{0x40,0xffffffde},\r
+{0x44,0xfffffe7d},\r
+{0x48,0x00000544},\r
+{0x4c,0x00000acc},\r
+{0x50,0x0000029c},\r
+{0x54,0xfffffe74},\r
+{0x58,0xffffffd7},\r
+{0x5c,0xfffffe83},\r
+{0x60,0x0000056d},\r
+{0x64,0x00000ac2},\r
+{0x68,0x00000276},\r
+{0x6c,0xfffffe78},\r
+{0x70,0xffffffd0},\r
+{0x74,0xfffffe89},\r
+{0x78,0x00000597},\r
+{0x7c,0x00000ab6},\r
+{0xf0,0x1c},\r
+{0x00,0x00000251},\r
+{0x04,0xfffffe7c},\r
+{0x08,0xffffffc8},\r
+{0x0c,0xfffffe91},\r
+{0x10,0x000005c0},\r
+{0x14,0x00000aa9},\r
+{0x18,0x0000022d},\r
+{0x1c,0xfffffe81},\r
+{0x20,0xffffffc1},\r
+{0x24,0xfffffe99},\r
+{0x28,0x000005e9},\r
+{0x2c,0x00000a9b},\r
+{0x30,0x00000209},\r
+{0x34,0xfffffe86},\r
+{0x38,0xffffffb9},\r
+{0x3c,0xfffffea1},\r
+{0x40,0x00000611},\r
+{0x44,0x00000a8d},\r
+{0x48,0x000001e5},\r
+{0x4c,0xfffffe8b},\r
+{0x50,0xffffffb2},\r
+{0x54,0xfffffeab},\r
+{0x58,0x0000063a},\r
+{0x5c,0x00000a7d},\r
+{0x60,0x000001c3},\r
+{0x64,0xfffffe91},\r
+{0x68,0xffffffaa},\r
+{0x6c,0xfffffeb5},\r
+{0x70,0x00000663},\r
+{0x74,0x00000a6b},\r
+{0x78,0x000001a0},\r
+{0x7c,0xfffffe97},\r
+{0xf0,0x1d},\r
+{0x00,0xffffffa2},\r
+{0x04,0xfffffebf},\r
+{0x08,0x0000068b},\r
+{0x0c,0x00000a59},\r
+{0x10,0x0000017e},\r
+{0x14,0xfffffe9d},\r
+{0x18,0xffffff9a},\r
+{0x1c,0xfffffecb},\r
+{0x20,0x000006b3},\r
+{0x24,0x00000a46},\r
+{0x28,0x0000015d},\r
+{0x2c,0xfffffea4},\r
+{0x30,0xffffff91},\r
+{0x34,0xfffffed7},\r
+{0x38,0x000006da},\r
+{0x3c,0x00000a32},\r
+{0x40,0x0000013d},\r
+{0x44,0xfffffeab},\r
+{0x48,0xffffff89},\r
+{0x4c,0xfffffee4},\r
+{0x50,0x00000702},\r
+{0x54,0x00000a1d},\r
+{0x58,0x0000011d},\r
+{0x5c,0xfffffeb2},\r
+{0x60,0xffffff80},\r
+{0x64,0xfffffef2},\r
+{0x68,0x00000729},\r
+{0x6c,0x00000a06},\r
+{0x70,0x000000fd},\r
+{0x74,0xfffffeba},\r
+{0x78,0xffffff78},\r
+{0x7c,0xffffff00},\r
+{0xf0,0x1e},\r
+{0x00,0x0000074f},\r
+{0x04,0x000009ef},\r
+{0x08,0x000000df},\r
+{0x0c,0xfffffec1},\r
+{0x10,0xffffff6f},\r
+{0x14,0xffffff10},\r
+{0x18,0x00000776},\r
+{0x1c,0x000009d7},\r
+{0x20,0x000000c1},\r
+{0x24,0xfffffec9},\r
+{0x28,0xffffff66},\r
+{0x2c,0xffffff20},\r
+{0x30,0x0000079b},\r
+{0x34,0x000009be},\r
+{0x38,0x000000a3},\r
+{0x3c,0xfffffed1},\r
+{0x40,0xffffff5e},\r
+{0x44,0xffffff30},\r
+{0x48,0x000007c1},\r
+{0x4c,0x000009a4},\r
+{0x50,0x00000087},\r
+{0x54,0xfffffed9},\r
+{0x58,0xffffff55},\r
+{0x5c,0xffffff42},\r
+{0x60,0x000007e5},\r
+{0x64,0x00000989},\r
+{0x68,0x0000006b},\r
+{0x6c,0xfffffee2},\r
+{0x70,0xffffff4c},\r
+{0x74,0xffffff54},\r
+{0x78,0x0000080a},\r
+{0x7c,0x0000096d},\r
+{0xf0,0x1f},\r
+{0x00,0x0000004f},\r
+{0x04,0xfffffeea},\r
+{0x08,0xffffff43},\r
+{0x0c,0xffffff67},\r
+{0x10,0x0000082d},\r
+{0x14,0x00000951},\r
+{0x18,0x00000035},\r
+{0x1c,0xfffffef3},\r
+{0x20,0xffffff3a},\r
+{0x24,0xffffff7b},\r
+{0x28,0x00000850},\r
+{0x2c,0x00000933},\r
+{0x30,0x0000001b},\r
+{0x34,0xfffffefb},\r
+{0x38,0xffffff31},\r
+{0x3c,0xffffff90},\r
+{0x40,0x00000873},\r
+{0x44,0x00000915},\r
+{0x48,0x00000002},\r
+{0x4c,0xffffff04},\r
+{0x50,0xffffff28},\r
+{0x54,0xffffffa5},\r
+{0x58,0x00000895},\r
+{0x5c,0x000008f6},\r
+{0x60,0xffffffea},\r
+{0x64,0xffffff0d},\r
+{0x68,0xffffff1f},\r
+{0x6c,0xffffffbb},\r
+{0x70,0x000008b6},\r
+{0x74,0x000008d6},\r
+{0x78,0xffffffd2},\r
+{0x7c,0xffffff16},\r
+{0xf0,0x20},\r
+{0x00,0x83580000},\r
+{0x04,0x82086ff0},\r
+{0x08,0x83306004},\r
+{0x0c,0x80a06005},\r
+{0x10,0x02800024},\r
+{0x14,0x01000000},\r
+{0x18,0x80a06006},\r
+{0x1c,0x02800039},\r
+{0x20,0x01000000},\r
+{0x24,0x80a06015},\r
+{0x28,0x02800051},\r
+{0x2c,0x01000000},\r
+{0x30,0x80a0602a},\r
+{0x34,0x02800085},\r
+{0x38,0x01000000},\r
+{0x3c,0x073fc180},\r
+{0x40,0x8610e03c},\r
+{0x44,0x05169680},\r
+{0x48,0x84004002},\r
+{0x4c,0xc420c000},\r
+{0x50,0x073fc000},\r
+{0x54,0x8610e020},\r
+{0x58,0x84102001},\r
+{0x5c,0xc420c000},\r
+{0x60,0x0500000c},\r
+{0x64,0x01000000},\r
+{0x68,0x01000000},\r
+{0x6c,0x8480bfff},\r
+{0x70,0x12bffffe},\r
+{0x74,0x01000000},\r
+{0x78,0x01000000},\r
+{0x7c,0x073fc000},\r
+{0xf0,0x21},\r
+{0x00,0x8610e020},\r
+{0x04,0x84102000},\r
+{0x08,0xc420c000},\r
+{0x0c,0x01000000},\r
+{0x10,0x01000000},\r
+{0x14,0x81c44000},\r
+{0x18,0x81cc8000},\r
+{0x1c,0x01000000},\r
+{0x20,0xa7500000},\r
+{0x24,0xa92ce002},\r
+{0x28,0xa734e001},\r
+{0x2c,0xa614c014},\r
+{0x30,0xa60ce007},\r
+{0x34,0x81900000},\r
+{0x38,0x01000000},\r
+{0x3c,0x01000000},\r
+{0x40,0x81e00000},\r
+{0x44,0xe03ba000},\r
+{0x48,0xe43ba008},\r
+{0x4c,0xe83ba010},\r
+{0x50,0xec3ba018},\r
+{0x54,0xf03ba020},\r
+{0x58,0xf43ba028},\r
+{0x5c,0xf83ba030},\r
+{0x60,0xfc3ba038},\r
+{0x64,0x81e80000},\r
+{0x68,0x8194c000},\r
+{0x6c,0x01000000},\r
+{0x70,0x01000000},\r
+{0x74,0x81c44000},\r
+{0x78,0x81cc8000},\r
+{0x7c,0x01000000},\r
+{0xf0,0x22},\r
+{0x00,0xa7500000},\r
+{0x04,0xa934e002},\r
+{0x08,0xa72ce001},\r
+{0x0c,0xa614c014},\r
+{0x10,0xa60ce007},\r
+{0x14,0x81900000},\r
+{0x18,0x01000000},\r
+{0x1c,0x01000000},\r
+{0x20,0x81e80000},\r
+{0x24,0x81e80000},\r
+{0x28,0xe01ba000},\r
+{0x2c,0xe41ba008},\r
+{0x30,0xe81ba010},\r
+{0x34,0xec1ba018},\r
+{0x38,0xf01ba020},\r
+{0x3c,0xf41ba028},\r
+{0x40,0xf81ba030},\r
+{0x44,0xfc1ba038},\r
+{0x48,0x81e00000},\r
+{0x4c,0x81e00000},\r
+{0x50,0x8194c000},\r
+{0x54,0x01000000},\r
+{0x58,0x01000000},\r
+{0x5c,0x81c44000},\r
+{0x60,0x81cc8000},\r
+{0x64,0x01000000},\r
+{0x68,0x01000000},\r
+{0x6c,0x82102010},\r
+{0x70,0x273fc0c0},\r
+{0x74,0xa614e010},\r
+{0x78,0xc224c000},\r
+{0x7c,0x01000000},\r
+{0xf0,0x23},\r
+{0x00,0x033fc0c0},\r
+{0x04,0x82106004},\r
+{0x08,0xa6102000},\r
+{0x0c,0xe6204000},\r
+{0x10,0x01000000},\r
+{0x14,0x01000000},\r
+{0x18,0x01000000},\r
+{0x1c,0xa6102020},\r
+{0x20,0x83480000},\r
+{0x24,0x82104013},\r
+{0x28,0x81884000},\r
+{0x2c,0x01000000},\r
+{0x30,0x400011a1},\r
+{0x34,0x01000000},\r
+{0x38,0x01000000},\r
+{0x3c,0x01000000},\r
+{0x40,0xa7500000},\r
+{0x44,0xa934e002},\r
+{0x48,0xa72ce001},\r
+{0x4c,0xa614c014},\r
+{0x50,0xa60ce007},\r
+{0x54,0x81900000},\r
+{0x58,0x01000000},\r
+{0x5c,0x81e80000},\r
+{0x60,0xe01ba000},\r
+{0x64,0xe41ba008},\r
+{0x68,0xe81ba010},\r
+{0x6c,0xec1ba018},\r
+{0x70,0xf01ba020},\r
+{0x74,0xf41ba028},\r
+{0x78,0xf81ba030},\r
+{0x7c,0xfc1ba038},\r
+{0xf0,0x24},\r
+{0x00,0x81e00000},\r
+{0x04,0x8194c000},\r
+{0x08,0x01000000},\r
+{0x0c,0xa6102020},\r
+{0x10,0x83480000},\r
+{0x14,0x82284013},\r
+{0x18,0x81884000},\r
+{0x1c,0x01000000},\r
+{0x20,0x033fc0c0},\r
+{0x24,0x82106004},\r
+{0x28,0xa6103fff},\r
+{0x2c,0xe6204000},\r
+{0x30,0x01000000},\r
+{0x34,0x01000000},\r
+{0x38,0x01000000},\r
+{0x3c,0x81c44000},\r
+{0x40,0x81cc8000},\r
+{0x44,0x01000000},\r
+{0x48,0x81c48000},\r
+{0x4c,0x81cca004},\r
+{0x50,0x01000000},\r
+{0x54,0x9de3bf98},\r
+{0x58,0x4000001b},\r
+{0x5c,0x01000000},\r
+{0x60,0x40000012},\r
+{0x64,0x01000000},\r
+{0x68,0x400000ee},\r
+{0x6c,0x01000000},\r
+{0x70,0x40000040},\r
+{0x74,0x01000000},\r
+{0x78,0x400000a4},\r
+{0x7c,0x01000000},\r
+{0xf0,0x25},\r
+{0x00,0x30bffffe},\r
+{0x04,0x80a22000},\r
+{0x08,0x02800006},\r
+{0x0c,0x01000000},\r
+{0x10,0x01000000},\r
+{0x14,0x90823fff},\r
+{0x18,0x12bffffe},\r
+{0x1c,0x01000000},\r
+{0x20,0x81c3e008},\r
+{0x24,0x01000000},\r
+{0x28,0x82102001},\r
+{0x2c,0x81904000},\r
+{0x30,0x01000000},\r
+{0x34,0x01000000},\r
+{0x38,0x01000000},\r
+{0x3c,0x81c3e008},\r
+{0x40,0x01000000},\r
+{0x44,0x03000008},\r
+{0x48,0x82106342},\r
+{0x4c,0xa3804000},\r
+{0x50,0x03000004},\r
+{0x54,0x82106000},\r
+{0x58,0x81984000},\r
+{0x5c,0x01000000},\r
+{0x60,0x01000000},\r
+{0x64,0x01000000},\r
+{0x68,0x81c3e008},\r
+{0x6c,0x01000000},\r
+{0x70,0x98102000},\r
+{0x74,0x832b2002},\r
+{0x78,0xda006480},\r
+{0x7c,0x80a37ff0},\r
+{0xf0,0x26},\r
+{0x00,0x02800006},\r
+{0x04,0x98032002},\r
+{0x08,0xc2006484},\r
+{0x0c,0x80a3201f},\r
+{0x10,0x04bffff9},\r
+{0x14,0xc2234000},\r
+{0x18,0x81c3e008},\r
+{0x1c,0x01000000},\r
+{0x20,0x03004040},\r
+{0x24,0x94106101},\r
+{0x28,0x98102000},\r
+{0x2c,0x832b2002},\r
+{0x30,0xd60063a4},\r
+{0x34,0x9a102000},\r
+{0x38,0x832b6002},\r
+{0x3c,0x9a036001},\r
+{0x40,0x80a36004},\r
+{0x44,0x04bffffd},\r
+{0x48,0xd422c001},\r
+{0x4c,0x98032001},\r
+{0x50,0x80a32003},\r
+{0x54,0x04bffff7},\r
+{0x58,0x832b2002},\r
+{0x5c,0x033fc200},\r
+{0x60,0xda002330},\r
+{0x64,0x82106074},\r
+{0x68,0x81c3e008},\r
+{0x6c,0xda204000},\r
+{0x70,0x9de3bf98},\r
+{0x74,0x40000f98},\r
+{0x78,0x90102000},\r
+{0x7c,0x213fc140},\r
+{0xf0,0x27},\r
+{0x00,0xda00247c},\r
+{0x04,0x98142040},\r
+{0x08,0xea030000},\r
+{0x0c,0xc20022f8},\r
+{0x10,0x9b336001},\r
+{0x14,0x825b4001},\r
+{0x18,0xaa0d7c00},\r
+{0x1c,0xaa154001},\r
+{0x20,0xea230000},\r
+{0x24,0x82142004},\r
+{0x28,0xea004000},\r
+{0x2c,0xaa0d7ff0},\r
+{0x30,0xaa15400d},\r
+{0x34,0xea204000},\r
+{0x38,0x2d3fc200},\r
+{0x3c,0x8215a080},\r
+{0x40,0xea004000},\r
+{0x44,0xaa0d7ff0},\r
+{0x48,0xaa15400d},\r
+{0x4c,0xea204000},\r
+{0x50,0xc200233c},\r
+{0x54,0x9a15a070},\r
+{0x58,0xc2234000},\r
+{0x5c,0x19000016},\r
+{0x60,0x033fc000},\r
+{0x64,0xda002338},\r
+{0x68,0xa21323a8},\r
+{0x6c,0x82106030},\r
+{0x70,0xda204000},\r
+{0x74,0x98132180},\r
+{0x78,0x96142088},\r
+{0x7c,0xd822c000},\r
+{0xf0,0x28},\r
+{0x00,0x9414208c},\r
+{0x04,0x0300003f},\r
+{0x08,0xe2228000},\r
+{0x0c,0x92142058},\r
+{0x10,0x821063ff},\r
+{0x14,0xc2224000},\r
+{0x18,0xc20023f8},\r
+{0x1c,0x9015a00c},\r
+{0x20,0xc2220000},\r
+{0x24,0xc20023fc},\r
+{0x28,0x9e15a008},\r
+{0x2c,0xc223c000},\r
+{0x30,0xa6142080},\r
+{0x34,0xd824c000},\r
+{0x38,0xa8142084},\r
+{0x3c,0xa414205c},\r
+{0x40,0xe2250000},\r
+{0x44,0x7fffffb7},\r
+{0x48,0xc0248000},\r
+{0x4c,0x400001fb},\r
+{0x50,0xa415a030},\r
+{0x54,0x9a15a07c},\r
+{0x58,0xea034000},\r
+{0x5c,0x033ff000},\r
+{0x60,0xd8002374},\r
+{0x64,0xaa2d4001},\r
+{0x68,0xea234000},\r
+{0x6c,0x033fc1c0},\r
+{0x70,0xda002340},\r
+{0x74,0x82106064},\r
+{0x78,0xda204000},\r
+{0x7c,0x0300007f},\r
+{0xf0,0x29},\r
+{0x00,0x92142010},\r
+{0x04,0x821063ff},\r
+{0x08,0x1507ffc0},\r
+{0x0c,0xc2224000},\r
+{0x10,0x9e142030},\r
+{0x14,0x96032001},\r
+{0x18,0xd423c000},\r
+{0x1c,0x972ae010},\r
+{0x20,0xa0142014},\r
+{0x24,0x9602c00c},\r
+{0x28,0xa32b2010},\r
+{0x2c,0x912b2004},\r
+{0x30,0xd4240000},\r
+{0x34,0x80a32000},\r
+{0x38,0x82044008},\r
+{0x3c,0x9602e002},\r
+{0x40,0x9a15a084},\r
+{0x44,0x9815a088},\r
+{0x48,0x02800005},\r
+{0x4c,0x9415a08c},\r
+{0x50,0xc2234000},\r
+{0x54,0xe2230000},\r
+{0x58,0xd6228000},\r
+{0x5c,0xc2002344},\r
+{0x60,0xc2248000},\r
+{0x64,0x033fc0c0},\r
+{0x68,0x82106004},\r
+{0x6c,0x9a103fff},\r
+{0x70,0x7fffff80},\r
+{0x74,0xda204000},\r
+{0x78,0x03200040},\r
+{0x7c,0xc2258000},\r
+{0xf0,0x2a},\r
+{0x00,0x81c7e008},\r
+{0x04,0x81e80000},\r
+{0x08,0x01000000},\r
+{0x0c,0x01000000},\r
+{0x10,0x01000000},\r
+{0x14,0xa7800000},\r
+{0x18,0x01000000},\r
+{0x1c,0x01000000},\r
+{0x20,0x01000000},\r
+{0x24,0x81c3e008},\r
+{0x28,0x01000000},\r
+{0x2c,0x9de3bf98},\r
+{0x30,0xb6102000},\r
+{0x34,0xb0102000},\r
+{0x38,0xb8102000},\r
+{0x3c,0xc2070000},\r
+{0x40,0xb8072004},\r
+{0x44,0x80a724ff},\r
+{0x48,0x08bffffd},\r
+{0x4c,0xb606c001},\r
+{0x50,0x03000016},\r
+{0x54,0x821061e0},\r
+{0x58,0x82087f80},\r
+{0x5c,0xb8102d00},\r
+{0x60,0x80a70001},\r
+{0x64,0x3a80001e},\r
+{0x68,0xfa002180},\r
+{0x6c,0xb4100001},\r
+{0x70,0x9a102001},\r
+{0x74,0x9e100001},\r
+{0x78,0xc2070000},\r
+{0x7c,0xb8072004},\r
+{0xf0,0x2b},\r
+{0x00,0xb21f001a},\r
+{0x04,0xbb37200c},\r
+{0x08,0x808f2fff},\r
+{0x0c,0x02800005},\r
+{0x10,0xb606c001},\r
+{0x14,0x80a7001a},\r
+{0x18,0x1280000e},\r
+{0x1c,0x80a7000f},\r
+{0x20,0x80a00019},\r
+{0x24,0xba677fff},\r
+{0x28,0x832f6002},\r
+{0x2c,0xc2006180},\r
+{0x30,0xb606c001},\r
+{0x34,0xba077fff},\r
+{0x38,0x80a6e000},\r
+{0x3c,0x832b401d},\r
+{0x40,0x12800003},\r
+{0x44,0xb6102000},\r
+{0x48,0xb0160001},\r
+{0x4c,0x80a7000f},\r
+{0x50,0x2abfffeb},\r
+{0x54,0xc2070000},\r
+{0x58,0xfa002180},\r
+{0x5c,0xb816001d},\r
+{0x60,0x821e001d},\r
+{0x64,0x80a70001},\r
+{0x68,0x32800009},\r
+{0x6c,0xba16001d},\r
+{0x70,0x0329697f},\r
+{0x74,0x821063ff},\r
+{0x78,0x80a70001},\r
+{0x7c,0x32800004},\r
+{0xf0,0x2c},\r
+{0x00,0xba16001d},\r
+{0x04,0x3b169696},\r
+{0x08,0xba17625a},\r
+{0x0c,0x033fc180},\r
+{0x10,0x82106030},\r
+{0x14,0xfa204000},\r
+{0x18,0x81c7e008},\r
+{0x1c,0x91e82001},\r
+{0x20,0x033fc180},\r
+{0x24,0xc0204000},\r
+{0x28,0x82102500},\r
+{0x2c,0xc0204000},\r
+{0x30,0x82006004},\r
+{0x34,0x80a0687c},\r
+{0x38,0x28bffffe},\r
+{0x3c,0xc0204000},\r
+{0x40,0x033fc200},\r
+{0x44,0x82106030},\r
+{0x48,0xda004000},\r
+{0x4c,0x82102010},\r
+{0x50,0xc2202574},\r
+{0x54,0x82102001},\r
+{0x58,0xc2202540},\r
+{0x5c,0x8210200f},\r
+{0x60,0xc2202548},\r
+{0x64,0x81c3e008},\r
+{0x68,0xda20257c},\r
+{0x6c,0x9de3bf98},\r
+{0x70,0x82102000},\r
+{0x74,0x80a04019},\r
+{0x78,0x16800015},\r
+{0x7c,0x9e100019},\r
+{0xf0,0x2d},\r
+{0x00,0xb6006001},\r
+{0x04,0x80a6c00f},\r
+{0x08,0x1680000f},\r
+{0x0c,0xba10001b},\r
+{0x10,0xb3286002},\r
+{0x14,0xb52f6002},\r
+{0x18,0xf8060019},\r
+{0x1c,0xc206001a},\r
+{0x20,0x80a70001},\r
+{0x24,0x04800004},\r
+{0x28,0xba076001},\r
+{0x2c,0xc2260019},\r
+{0x30,0xf826001a},\r
+{0x34,0x80a7400f},\r
+{0x38,0x06bffff8},\r
+{0x3c,0xb52f6002},\r
+{0x40,0x80a6c00f},\r
+{0x44,0x06bfffef},\r
+{0x48,0x8210001b},\r
+{0x4c,0x81c7e008},\r
+{0x50,0x81e80000},\r
+{0x54,0x033fc140},\r
+{0x58,0x82106048},\r
+{0x5c,0xda004000},\r
+{0x60,0x03000040},\r
+{0x64,0x808b4001},\r
+{0x68,0x03000016},\r
+{0x6c,0x12800003},\r
+{0x70,0x90106180},\r
+{0x74,0x901063a8},\r
+{0x78,0x81c3e008},\r
+{0x7c,0x01000000},\r
+{0xf0,0x2e},\r
+{0x00,0x9de3bf38},\r
+{0x04,0xa12e2002},\r
+{0x08,0x1b00003f},\r
+{0x0c,0xc20423d8},\r
+{0x10,0x9a1363ff},\r
+{0x14,0xb008400d},\r
+{0x18,0x97306010},\r
+{0x1c,0xc200247c},\r
+{0x20,0x9a22c018},\r
+{0x24,0x825e0001},\r
+{0x28,0x92836001},\r
+{0x2c,0x0280000c},\r
+{0x30,0xb0004019},\r
+{0x34,0x9a100009},\r
+{0x38,0x9807bf98},\r
+{0x3c,0x82060018},\r
+{0x40,0xc2168001},\r
+{0x44,0xc2230000},\r
+{0x48,0xc200247c},\r
+{0x4c,0xb0060001},\r
+{0x50,0x9a837fff},\r
+{0x54,0x12bffffa},\r
+{0x58,0x98032004},\r
+{0x5c,0x7fffffc4},\r
+{0x60,0x9007bf98},\r
+{0x64,0x0300003f},\r
+{0x68,0xda0423e8},\r
+{0x6c,0x821063ff},\r
+{0x70,0xb00b4001},\r
+{0x74,0x97336010},\r
+{0x78,0x80a6000b},\r
+{0x7c,0x92102000},\r
+{0xf0,0x2f},\r
+{0x00,0x1880000b},\r
+{0x04,0x9a100018},\r
+{0x08,0x832e2002},\r
+{0x0c,0x8200401e},\r
+{0x10,0x98007f98},\r
+{0x14,0xc2030000},\r
+{0x18,0x9a036001},\r
+{0x1c,0x92024001},\r
+{0x20,0x80a3400b},\r
+{0x24,0x08bffffc},\r
+{0x28,0x98032004},\r
+{0x2c,0xb022c018},\r
+{0x30,0xb0062001},\r
+{0x34,0x81800000},\r
+{0x38,0x01000000},\r
+{0x3c,0x01000000},\r
+{0x40,0x01000000},\r
+{0x44,0xb0724018},\r
+{0x48,0x81c7e008},\r
+{0x4c,0x81e80000},\r
+{0x50,0x832a2002},\r
+{0x54,0x82004008},\r
+{0x58,0x9b326002},\r
+{0x5c,0x8200400d},\r
+{0x60,0x83286002},\r
+{0x64,0x920a6003},\r
+{0x68,0x932a6003},\r
+{0x6c,0xd00065b0},\r
+{0x70,0x91320009},\r
+{0x74,0x81c3e008},\r
+{0x78,0x900a20ff},\r
+{0x7c,0x972a2002},\r
+{0xf0,0x30},\r
+{0x00,0x99326002},\r
+{0x04,0x9002c008},\r
+{0x08,0x9002000c},\r
+{0x0c,0x920a6003},\r
+{0x10,0x932a6003},\r
+{0x14,0x912a2002},\r
+{0x18,0x821020ff},\r
+{0x1c,0xda0225b0},\r
+{0x20,0x83284009},\r
+{0x24,0x822b4001},\r
+{0x28,0x952a8009},\r
+{0x2c,0x8210400a},\r
+{0x30,0xc22225b0},\r
+{0x34,0xda02e3a4},\r
+{0x38,0x992b2002},\r
+{0x3c,0x81c3e008},\r
+{0x40,0xc223400c},\r
+{0x44,0x9de3bf98},\r
+{0x48,0xda002310},\r
+{0x4c,0x80a36000},\r
+{0x50,0x02800049},\r
+{0x54,0xb0102000},\r
+{0x58,0xc2002594},\r
+{0x5c,0x82006001},\r
+{0x60,0x80a0400d},\r
+{0x64,0x0a800044},\r
+{0x68,0xc2202594},\r
+{0x6c,0xa4102000},\r
+{0x70,0xc20023d4},\r
+{0x74,0x80a48001},\r
+{0x78,0xc0202594},\r
+{0x7c,0xa2102000},\r
+{0xf0,0x31},\r
+{0x00,0x1a800028},\r
+{0x04,0xa72c6002},\r
+{0x08,0xc204e364},\r
+{0x0c,0x80a06000},\r
+{0x10,0x02800020},\r
+{0x14,0xa0102000},\r
+{0x18,0xc20022fc},\r
+{0x1c,0x80a40001},\r
+{0x20,0x1a80001c},\r
+{0x24,0x15000017},\r
+{0x28,0xc200255c},\r
+{0x2c,0xf00c2380},\r
+{0x30,0x9412a1d0},\r
+{0x34,0x90100011},\r
+{0x38,0x80a06000},\r
+{0x3c,0x02800007},\r
+{0x40,0x920e20ff},\r
+{0x44,0x7fffff84},\r
+{0x48,0x01000000},\r
+{0x4c,0x94100008},\r
+{0x50,0x90100011},\r
+{0x54,0x920e20ff},\r
+{0x58,0x7fffff8a},\r
+{0x5c,0xa0042001},\r
+{0x60,0xc204e364},\r
+{0x64,0xda002348},\r
+{0x68,0x98020001},\r
+{0x6c,0x82034001},\r
+{0x70,0x80a20001},\r
+{0x74,0x38bfffe9},\r
+{0x78,0xa404a001},\r
+{0x7c,0x80a3000d},\r
+{0xf0,0x32},\r
+{0x00,0x3abfffe7},\r
+{0x04,0xc20022fc},\r
+{0x08,0x10bfffe4},\r
+{0x0c,0xa404a001},\r
+{0x10,0xa2046001},\r
+{0x14,0xc20023d4},\r
+{0x18,0x10bfffda},\r
+{0x1c,0x80a44001},\r
+{0x20,0xd800258c},\r
+{0x24,0x80a0000c},\r
+{0x28,0x9a603fff},\r
+{0x2c,0x80a00012},\r
+{0x30,0x82603fff},\r
+{0x34,0x808b4001},\r
+{0x38,0x02800007},\r
+{0x3c,0x80a4a000},\r
+{0x40,0xc200255c},\r
+{0x44,0x80a00001},\r
+{0x48,0x82603fff},\r
+{0x4c,0xc220255c},\r
+{0x50,0x80a4a000},\r
+{0x54,0x12800004},\r
+{0x58,0x82032001},\r
+{0x5c,0x10800003},\r
+{0x60,0xc020258c},\r
+{0x64,0xc220258c},\r
+{0x68,0xc200258c},\r
+{0x6c,0x80a06003},\r
+{0x70,0xb0603fff},\r
+{0x74,0x81c7e008},\r
+{0x78,0x81e80000},\r
+{0x7c,0x9de3bf98},\r
+{0xf0,0x33},\r
+{0x00,0xc2002540},\r
+{0x04,0x80a06000},\r
+{0x08,0x0280002a},\r
+{0x0c,0xb0102000},\r
+{0x10,0xda002210},\r
+{0x14,0x80a36000},\r
+{0x18,0x02800026},\r
+{0x1c,0xb4102001},\r
+{0x20,0xde0022f8},\r
+{0x24,0x80a6800f},\r
+{0x28,0x18800018},\r
+{0x2c,0x03000018},\r
+{0x30,0x98106220},\r
+{0x34,0xf20022fc},\r
+{0x38,0xb6102007},\r
+{0x3c,0xb8102001},\r
+{0x40,0x80a70019},\r
+{0x44,0x1880000d},\r
+{0x48,0x832ee003},\r
+{0x4c,0x8200400c},\r
+{0x50,0xba006004},\r
+{0x54,0xc2074000},\r
+{0x58,0xb8072001},\r
+{0x5c,0x80a0400d},\r
+{0x60,0x14800003},\r
+{0x64,0xba076004},\r
+{0x68,0xb0062001},\r
+{0x6c,0x80a70019},\r
+{0x70,0x28bffffa},\r
+{0x74,0xc2074000},\r
+{0x78,0xb406a001},\r
+{0x7c,0x80a6800f},\r
+{0xf0,0x34},\r
+{0x00,0x08bfffef},\r
+{0x04,0xb606e007},\r
+{0x08,0xc21023ce},\r
+{0x0c,0x80a60001},\r
+{0x10,0x24800007},\r
+{0x14,0xc0202598},\r
+{0x18,0xc2002598},\r
+{0x1c,0x82006001},\r
+{0x20,0xc2202598},\r
+{0x24,0x10800003},\r
+{0x28,0xb0102001},\r
+{0x2c,0xb0102000},\r
+{0x30,0x81c7e008},\r
+{0x34,0x81e80000},\r
+{0x38,0x9a102005},\r
+{0x3c,0x8210200b},\r
+{0x40,0x9a234008},\r
+{0x44,0x82204008},\r
+{0x48,0x9b2b6002},\r
+{0x4c,0x80a22005},\r
+{0x50,0x14800007},\r
+{0x54,0x99286002},\r
+{0x58,0x033fc200},\r
+{0x5c,0x8210600c},\r
+{0x60,0xc2004000},\r
+{0x64,0x10800006},\r
+{0x68,0x8330400d},\r
+{0x6c,0x033fc200},\r
+{0x70,0x82106008},\r
+{0x74,0xc2004000},\r
+{0x78,0x8330400c},\r
+{0x7c,0x81c3e008},\r
+{0xf0,0x35},\r
+{0x00,0x9008600f},\r
+{0x04,0x9de3bf98},\r
+{0x08,0xc200247c},\r
+{0x0c,0x83306001},\r
+{0x10,0x80a60001},\r
+{0x14,0x1a800006},\r
+{0x18,0x90100018},\r
+{0x1c,0x7fffffe7},\r
+{0x20,0x01000000},\r
+{0x24,0x10800006},\r
+{0x28,0xb0020008},\r
+{0x2c,0x7fffffe3},\r
+{0x30,0x90260001},\r
+{0x34,0x90020008},\r
+{0x38,0xb0022001},\r
+{0x3c,0x81c7e008},\r
+{0x40,0x81e80000},\r
+{0x44,0x9de3bf98},\r
+{0x48,0xa8102000},\r
+{0x4c,0xc20023d4},\r
+{0x50,0x80a50001},\r
+{0x54,0x1a800057},\r
+{0x58,0xe2002348},\r
+{0x5c,0xa4102000},\r
+{0x60,0xc200247c},\r
+{0x64,0x80a48001},\r
+{0x68,0x3a80004e},\r
+{0x6c,0xa8052001},\r
+{0x70,0x7fffffe5},\r
+{0x74,0x90100012},\r
+{0x78,0x92100008},\r
+{0x7c,0x7fffff35},\r
+{0xf0,0x36},\r
+{0x00,0x90100014},\r
+{0x04,0x80a62000},\r
+{0x08,0x12800004},\r
+{0x0c,0xa0100008},\r
+{0x10,0x10800016},\r
+{0x14,0xa0102000},\r
+{0x18,0x80a62008},\r
+{0x1c,0x18800011},\r
+{0x20,0x80a62007},\r
+{0x24,0x7ffffeec},\r
+{0x28,0x01000000},\r
+{0x2c,0x94100008},\r
+{0x30,0x90100014},\r
+{0x34,0x7ffffef3},\r
+{0x38,0x921ca001},\r
+{0x3c,0x80a20011},\r
+{0x40,0x04800007},\r
+{0x44,0xa6100008},\r
+{0x48,0x9a102008},\r
+{0x4c,0x9a234018},\r
+{0x50,0x82102001},\r
+{0x54,0x8328400d},\r
+{0x58,0xa02c0001},\r
+{0x5c,0x80a62007},\r
+{0x60,0x18800008},\r
+{0x64,0x80a62008},\r
+{0x68,0x9a102007},\r
+{0x6c,0x9a234018},\r
+{0x70,0x82102001},\r
+{0x74,0x8328400d},\r
+{0x78,0x10800022},\r
+{0x7c,0xa0140001},\r
+{0xf0,0x37},\r
+{0x00,0x1280000a},\r
+{0x04,0x821e2009},\r
+{0x08,0x80a420fe},\r
+{0x0c,0x24800002},\r
+{0x10,0xa0042001},\r
+{0x14,0x03000018},\r
+{0x18,0x9b2ca002},\r
+{0x1c,0x82106220},\r
+{0x20,0x10800018},\r
+{0x24,0xe6234001},\r
+{0x28,0x80a00001},\r
+{0x2c,0x9a603fff},\r
+{0x30,0x80a420fe},\r
+{0x34,0x04800003},\r
+{0x38,0x82102001},\r
+{0x3c,0x82102000},\r
+{0x40,0x808b4001},\r
+{0x44,0x0280000f},\r
+{0x48,0x03000018},\r
+{0x4c,0x9b2ca002},\r
+{0x50,0x82106220},\r
+{0x54,0xc2034001},\r
+{0x58,0x80a04011},\r
+{0x5c,0x18800003},\r
+{0x60,0x9a204011},\r
+{0x64,0x9a244001},\r
+{0x68,0x80a4c011},\r
+{0x6c,0x14800003},\r
+{0x70,0x8224c011},\r
+{0x74,0x82244013},\r
+{0x78,0x80a34001},\r
+{0x7c,0xa0642000},\r
+{0xf0,0x38},\r
+{0x00,0x7fffffa1},\r
+{0x04,0x90100012},\r
+{0x08,0x92100008},\r
+{0x0c,0x90100014},\r
+{0x10,0x7ffffefb},\r
+{0x14,0x94100010},\r
+{0x18,0x10bfffb2},\r
+{0x1c,0xa404a001},\r
+{0x20,0xc20023d4},\r
+{0x24,0x80a50001},\r
+{0x28,0x0abfffae},\r
+{0x2c,0xa4102000},\r
+{0x30,0x81c7e008},\r
+{0x34,0x81e80000},\r
+{0x38,0x033fc200},\r
+{0x3c,0x961060a0},\r
+{0x40,0x98102000},\r
+{0x44,0x832b2002},\r
+{0x48,0x9a03000c},\r
+{0x4c,0xda136400},\r
+{0x50,0x98032001},\r
+{0x54,0x80a32016},\r
+{0x58,0x04bffffb},\r
+{0x5c,0xda20400b},\r
+{0x60,0x81c3e008},\r
+{0x64,0x01000000},\r
+{0x68,0x9de3bf98},\r
+{0x6c,0xc2002544},\r
+{0x70,0x82006001},\r
+{0x74,0xc2202544},\r
+{0x78,0x03000017},\r
+{0x7c,0xb41063f8},\r
+{0xf0,0x39},\r
+{0x00,0x9e100018},\r
+{0x04,0x031fffdf},\r
+{0x08,0xb01063ff},\r
+{0x0c,0xba102000},\r
+{0x10,0xb72f6002},\r
+{0x14,0xc2002544},\r
+{0x18,0x80a06009},\r
+{0x1c,0xb2076001},\r
+{0x20,0x12800007},\r
+{0x24,0xb810001b},\r
+{0x28,0xc206c01a},\r
+{0x2c,0x83306001},\r
+{0x30,0x82084018},\r
+{0x34,0xc226c01a},\r
+{0x38,0xc2002544},\r
+{0x3c,0x80a06008},\r
+{0x40,0x08800006},\r
+{0x44,0xc207001a},\r
+{0x48,0xfa03c01c},\r
+{0x4c,0xbb376001},\r
+{0x50,0x10800003},\r
+{0x54,0xba0f4018},\r
+{0x58,0xfa03c01c},\r
+{0x5c,0x8200401d},\r
+{0x60,0xc227001a},\r
+{0x64,0x80a66089},\r
+{0x68,0x08bfffea},\r
+{0x6c,0xba100019},\r
+{0x70,0x81c7e008},\r
+{0x74,0x81e80000},\r
+{0x78,0x9de3bf98},\r
+{0x7c,0x9e102001},\r
+{0xf0,0x3a},\r
+{0x00,0xc20022fc},\r
+{0x04,0x80a3c001},\r
+{0x08,0x1880002a},\r
+{0x0c,0x03000018},\r
+{0x10,0x82106220},\r
+{0x14,0x9a006004},\r
+{0x18,0x19000017},\r
+{0x1c,0xc20022f8},\r
+{0x20,0xb6102001},\r
+{0x24,0x80a6c001},\r
+{0x28,0xb21323f8},\r
+{0x2c,0xb41321d0},\r
+{0x30,0x1880001b},\r
+{0x34,0xc20be37f},\r
+{0x38,0xb0004001},\r
+{0x3c,0xb8036038},\r
+{0x40,0xc2002544},\r
+{0x44,0xb606e001},\r
+{0x48,0x80a06008},\r
+{0x4c,0x08800003},\r
+{0x50,0xfa164018},\r
+{0x54,0xba07401d},\r
+{0x58,0x81800000},\r
+{0x5c,0xc2002548},\r
+{0x60,0x01000000},\r
+{0x64,0x01000000},\r
+{0x68,0x82774001},\r
+{0x6c,0xba100001},\r
+{0x70,0xc2168018},\r
+{0x74,0xba274001},\r
+{0x78,0xfa270000},\r
+{0x7c,0xc200247c},\r
+{0xf0,0x3b},\r
+{0x00,0x82004001},\r
+{0x04,0xfa0022f8},\r
+{0x08,0xb4068001},\r
+{0x0c,0x80a6c01d},\r
+{0x10,0xb2064001},\r
+{0x14,0x08bfffeb},\r
+{0x18,0xb8072038},\r
+{0x1c,0x9e03e001},\r
+{0x20,0xc20022fc},\r
+{0x24,0x80a3c001},\r
+{0x28,0x08bfffdd},\r
+{0x2c,0x9a036004},\r
+{0x30,0x81c7e008},\r
+{0x34,0x81e80000},\r
+{0x38,0xc2002540},\r
+{0x3c,0x80a06000},\r
+{0x40,0x0280000f},\r
+{0x44,0x1b3fc200},\r
+{0x48,0xc2002298},\r
+{0x4c,0x9a136070},\r
+{0x50,0xc2234000},\r
+{0x54,0x03000017},\r
+{0x58,0xc0202540},\r
+{0x5c,0xc0202544},\r
+{0x60,0x981063f8},\r
+{0x64,0x9a102000},\r
+{0x68,0x832b6002},\r
+{0x6c,0x9a036001},\r
+{0x70,0x80a36089},\r
+{0x74,0x08bffffd},\r
+{0x78,0xc020400c},\r
+{0x7c,0x81c3e008},\r
+{0xf0,0x3c},\r
+{0x00,0x01000000},\r
+{0x04,0xc200247c},\r
+{0x08,0xda0022f8},\r
+{0x0c,0x8258400d},\r
+{0x10,0x97306001},\r
+{0x14,0x98102000},\r
+{0x18,0x80a3000b},\r
+{0x1c,0x1680000e},\r
+{0x20,0x1b000017},\r
+{0x24,0x0307ffc7},\r
+{0x28,0x901363f8},\r
+{0x2c,0x921063ff},\r
+{0x30,0x941361d0},\r
+{0x34,0x9b2b2002},\r
+{0x38,0xc2034008},\r
+{0x3c,0x83306003},\r
+{0x40,0x82084009},\r
+{0x44,0x98032001},\r
+{0x48,0x80a3000b},\r
+{0x4c,0x06bffffa},\r
+{0x50,0xc223400a},\r
+{0x54,0x03000018},\r
+{0x58,0x9a106220},\r
+{0x5c,0x98102000},\r
+{0x60,0x832b2002},\r
+{0x64,0x98032001},\r
+{0x68,0x80a322d5},\r
+{0x6c,0x04bffffd},\r
+{0x70,0xc020400d},\r
+{0x74,0x81c3e008},\r
+{0x78,0x01000000},\r
+{0x7c,0x00000000},\r
+{0xf0,0x3d},\r
+{0x00,0x82102020},\r
+{0x04,0x82204009},\r
+{0x08,0x80a06040},\r
+{0x0c,0x04800003},\r
+{0x10,0x9a100008},\r
+{0x14,0x90023fff},\r
+{0x18,0x80a06080},\r
+{0x1c,0x34800002},\r
+{0x20,0x90037ffe},\r
+{0x24,0x80a06000},\r
+{0x28,0x24800002},\r
+{0x2c,0x90036001},\r
+{0x30,0x80a07fc0},\r
+{0x34,0x24800002},\r
+{0x38,0x90036002},\r
+{0x3c,0x81c3e008},\r
+{0x40,0x01000000},\r
+{0x44,0x900221ff},\r
+{0x48,0x833a201f},\r
+{0x4c,0x8330601a},\r
+{0x50,0x82020001},\r
+{0x54,0x82087fc0},\r
+{0x58,0x90220001},\r
+{0x5c,0x81c3e008},\r
+{0x60,0x90022001},\r
+{0x64,0x9de3bf80},\r
+{0x68,0x90102020},\r
+{0x6c,0x7ffffff6},\r
+{0x70,0x90220018},\r
+{0x74,0x82102041},\r
+{0x78,0x82204008},\r
+{0x7c,0x9b2ea003},\r
+{0xf0,0x3e},\r
+{0x00,0x98004001},\r
+{0x04,0x9a23401a},\r
+{0x08,0x98030001},\r
+{0x0c,0x9a03400d},\r
+{0x10,0x9a03401b},\r
+{0x14,0x03000018},\r
+{0x18,0x82106220},\r
+{0x1c,0x9b2b6002},\r
+{0x20,0x9a034001},\r
+{0x24,0xc2002300},\r
+{0x28,0x96020008},\r
+{0x2c,0x9602c008},\r
+{0x30,0xaa006001},\r
+{0x34,0xc2002308},\r
+{0x38,0xa52ae003},\r
+{0x3c,0xa8006001},\r
+{0x40,0xa72b2003},\r
+{0x44,0x96037ff8},\r
+{0x48,0xa0103ffe},\r
+{0x4c,0xb0102000},\r
+{0x50,0x94103ffe},\r
+{0x54,0xa206c010},\r
+{0x58,0x9804ecfc},\r
+{0x5c,0x9e04ace8},\r
+{0x60,0x9202ff90},\r
+{0x64,0x8206800a},\r
+{0x68,0x80a54001},\r
+{0x6c,0x9a603fff},\r
+{0x70,0x80a50011},\r
+{0x74,0x82603fff},\r
+{0x78,0x808b4001},\r
+{0x7c,0x02800003},\r
+{0xf0,0x3f},\r
+{0x00,0x9a102000},\r
+{0x04,0xda024000},\r
+{0x08,0x80a22020},\r
+{0x0c,0x34800003},\r
+{0x10,0xc2030000},\r
+{0x14,0xc203c000},\r
+{0x18,0x825b4001},\r
+{0x1c,0x9402a001},\r
+{0x20,0xb0060001},\r
+{0x24,0x92026038},\r
+{0x28,0x9e03e004},\r
+{0x2c,0x80a2a003},\r
+{0x30,0x04bfffed},\r
+{0x34,0x98033ffc},\r
+{0x38,0x832c2002},\r
+{0x3c,0x8200401e},\r
+{0x40,0xa0042001},\r
+{0x44,0xf0207fe8},\r
+{0x48,0x80a42003},\r
+{0x4c,0x04bfffe0},\r
+{0x50,0x9602e004},\r
+{0x54,0xd207bfe0},\r
+{0x58,0xd407bfe4},\r
+{0x5c,0xd607bfe8},\r
+{0x60,0xd807bfec},\r
+{0x64,0xda07bff0},\r
+{0x68,0xc207bff4},\r
+{0x6c,0x933a6008},\r
+{0x70,0x953aa008},\r
+{0x74,0x973ae008},\r
+{0x78,0x993b2008},\r
+{0x7c,0x9b3b6008},\r
+{0xf0,0x40},\r
+{0x00,0x83386008},\r
+{0x04,0x90102020},\r
+{0x08,0xd227bfe0},\r
+{0x0c,0xd427bfe4},\r
+{0x10,0xd627bfe8},\r
+{0x14,0xd827bfec},\r
+{0x18,0xda27bff0},\r
+{0x1c,0xc227bff4},\r
+{0x20,0x7fffffa9},\r
+{0x24,0x90220019},\r
+{0x28,0x80a22020},\r
+{0x2c,0x14800011},\r
+{0x30,0xb0102000},\r
+{0x34,0x82020008},\r
+{0x38,0x82004008},\r
+{0x3c,0x83286003},\r
+{0x40,0x90006ce8},\r
+{0x44,0x9807bfe0},\r
+{0x48,0x94102005},\r
+{0x4c,0xc2030000},\r
+{0x50,0xda020000},\r
+{0x54,0x8258400d},\r
+{0x58,0xb0060001},\r
+{0x5c,0x98032004},\r
+{0x60,0x9482bfff},\r
+{0x64,0x1cbffffa},\r
+{0x68,0x90022004},\r
+{0x6c,0x30800011},\r
+{0x70,0x82102041},\r
+{0x74,0x90204008},\r
+{0x78,0x82020008},\r
+{0x7c,0x82004008},\r
+{0xf0,0x41},\r
+{0x00,0x83286003},\r
+{0x04,0x90006cfc},\r
+{0x08,0x9807bfe0},\r
+{0x0c,0x94102005},\r
+{0x10,0xc2030000},\r
+{0x14,0xda020000},\r
+{0x18,0x8258400d},\r
+{0x1c,0xb0060001},\r
+{0x20,0x98032004},\r
+{0x24,0x9482bfff},\r
+{0x28,0x1cbffffa},\r
+{0x2c,0x90023ffc},\r
+{0x30,0x81c7e008},\r
+{0x34,0x81e80000},\r
+{0x38,0x9de3bf98},\r
+{0x3c,0x9010001a},\r
+{0x40,0x7fffff70},\r
+{0x44,0x92100018},\r
+{0x48,0xb4100008},\r
+{0x4c,0x9010001b},\r
+{0x50,0x7fffff6c},\r
+{0x54,0x92100019},\r
+{0x58,0x7fffff83},\r
+{0x5c,0x97e80008},\r
+{0x60,0x01000000},\r
+{0x64,0x9de3bf90},\r
+{0x68,0xa8102000},\r
+{0x6c,0xf427a04c},\r
+{0x70,0xaa102000},\r
+{0x74,0xac102000},\r
+{0x78,0xae102010},\r
+{0x7c,0xe827bff4},\r
+{0xf0,0x42},\r
+{0x00,0xb4250017},\r
+{0x04,0x9210001a},\r
+{0x08,0x94100018},\r
+{0x0c,0x96100019},\r
+{0x10,0x7fffffea},\r
+{0x14,0x90100015},\r
+{0x18,0xa6100008},\r
+{0x1c,0xb6254017},\r
+{0x20,0x92100014},\r
+{0x24,0x94100018},\r
+{0x28,0x96100019},\r
+{0x2c,0x7fffffe3},\r
+{0x30,0x9010001b},\r
+{0x34,0xa4100008},\r
+{0x38,0xb8050017},\r
+{0x3c,0x9210001c},\r
+{0x40,0x94100018},\r
+{0x44,0x96100019},\r
+{0x48,0x7fffffdc},\r
+{0x4c,0x90100015},\r
+{0x50,0xa2100008},\r
+{0x54,0xba054017},\r
+{0x58,0x92100014},\r
+{0x5c,0x94100018},\r
+{0x60,0x96100019},\r
+{0x64,0x7fffffd5},\r
+{0x68,0x9010001d},\r
+{0x6c,0xa0100008},\r
+{0x70,0x90100015},\r
+{0x74,0x92100014},\r
+{0x78,0x94100018},\r
+{0x7c,0x7fffffcf},\r
+{0xf0,0x43},\r
+{0x00,0x96100019},\r
+{0x04,0xa624c008},\r
+{0x08,0xa0240008},\r
+{0x0c,0xa4248008},\r
+{0x10,0xa2244008},\r
+{0x14,0x80a4e000},\r
+{0x18,0x04800004},\r
+{0x1c,0x82102000},\r
+{0x20,0x82100013},\r
+{0x24,0xac102001},\r
+{0x28,0x80a48001},\r
+{0x2c,0x04800005},\r
+{0x30,0x80a44001},\r
+{0x34,0x82100012},\r
+{0x38,0xac102003},\r
+{0x3c,0x80a44001},\r
+{0x40,0x04800005},\r
+{0x44,0x80a40001},\r
+{0x48,0x82100011},\r
+{0x4c,0xac102005},\r
+{0x50,0x80a40001},\r
+{0x54,0x04800005},\r
+{0x58,0x80a06000},\r
+{0x5c,0x82100010},\r
+{0x60,0xac102007},\r
+{0x64,0x80a06000},\r
+{0x68,0x14800017},\r
+{0x6c,0x80a5a001},\r
+{0x70,0x80a5e020},\r
+{0x74,0x12800004},\r
+{0x78,0x80a5e010},\r
+{0x7c,0x10800020},\r
+{0xf0,0x44},\r
+{0x00,0xae102010},\r
+{0x04,0x12800004},\r
+{0x08,0x80a5e008},\r
+{0x0c,0x1080001c},\r
+{0x10,0xae102008},\r
+{0x14,0x12800004},\r
+{0x18,0x80a5e004},\r
+{0x1c,0x10800018},\r
+{0x20,0xae102004},\r
+{0x24,0x12800004},\r
+{0x28,0x80a5e002},\r
+{0x2c,0x10800014},\r
+{0x30,0xae102002},\r
+{0x34,0x12800018},\r
+{0x38,0x832e2006},\r
+{0x3c,0x10800010},\r
+{0x40,0xae102001},\r
+{0x44,0x12800004},\r
+{0x48,0x80a5a003},\r
+{0x4c,0x1080000c},\r
+{0x50,0xa810001a},\r
+{0x54,0x12800004},\r
+{0x58,0x80a5a005},\r
+{0x5c,0x10800008},\r
+{0x60,0xaa10001b},\r
+{0x64,0x12800004},\r
+{0x68,0x80a5a007},\r
+{0x6c,0x10800004},\r
+{0x70,0xa810001c},\r
+{0x74,0x22800002},\r
+{0x78,0xaa10001d},\r
+{0x7c,0xc207bff4},\r
+{0xf0,0x45},\r
+{0x00,0x82006001},\r
+{0x04,0x80a0607f},\r
+{0x08,0x04bfff9e},\r
+{0x0c,0xc227bff4},\r
+{0x10,0x832e2006},\r
+{0x14,0xaa054001},\r
+{0x18,0x82380015},\r
+{0x1c,0x8338601f},\r
+{0x20,0xaa0d4001},\r
+{0x24,0x9b2e6006},\r
+{0x28,0xc2002308},\r
+{0x2c,0xa885000d},\r
+{0x30,0x1c800004},\r
+{0x34,0x83286006},\r
+{0x38,0x10800005},\r
+{0x3c,0xa8102000},\r
+{0x40,0x80a50001},\r
+{0x44,0x38800002},\r
+{0x48,0xa8100001},\r
+{0x4c,0x9a0d2fff},\r
+{0x50,0x832d6010},\r
+{0x54,0x8210400d},\r
+{0x58,0xd807a04c},\r
+{0x5c,0x9b2b2002},\r
+{0x60,0xc2236768},\r
+{0x64,0x81c7e008},\r
+{0x68,0x81e80000},\r
+{0x6c,0x9de3bf98},\r
+{0x70,0xfa50245a},\r
+{0x74,0x80a76000},\r
+{0x78,0x0280003d},\r
+{0x7c,0x9e102001},\r
+{0xf0,0x46},\r
+{0x00,0xc20022fc},\r
+{0x04,0x80a3c001},\r
+{0x08,0x18800039},\r
+{0x0c,0x17000018},\r
+{0x10,0x8212e220},\r
+{0x14,0x9810001d},\r
+{0x18,0x9a006004},\r
+{0x1c,0xb6102001},\r
+{0x20,0xf20022f8},\r
+{0x24,0x80a6c019},\r
+{0x28,0xb4102000},\r
+{0x2c,0x1880002b},\r
+{0x30,0x82102000},\r
+{0x34,0xf0502458},\r
+{0x38,0xba036038},\r
+{0x3c,0xf8074000},\r
+{0x40,0xb606e001},\r
+{0x44,0x80a70018},\r
+{0x48,0x06800004},\r
+{0x4c,0xba076038},\r
+{0x50,0xb406801c},\r
+{0x54,0x82006001},\r
+{0x58,0x80a6c019},\r
+{0x5c,0x28bffff9},\r
+{0x60,0xf8074000},\r
+{0x64,0x80a06000},\r
+{0x68,0x2280001d},\r
+{0x6c,0x9e03e001},\r
+{0x70,0x953ea01f},\r
+{0x74,0x8182a000},\r
+{0x78,0x01000000},\r
+{0x7c,0x01000000},\r
+{0xf0,0x47},\r
+{0x00,0x01000000},\r
+{0x04,0x827e8001},\r
+{0x08,0x8258400c},\r
+{0x0c,0xbb38601f},\r
+{0x10,0xbb376016},\r
+{0x14,0x8200401d},\r
+{0x18,0xb6102001},\r
+{0x1c,0xfa0022f8},\r
+{0x20,0x80a6c01d},\r
+{0x24,0x1880000d},\r
+{0x28,0xb538600a},\r
+{0x2c,0x832be002},\r
+{0x30,0xba006038},\r
+{0x34,0xb812e220},\r
+{0x38,0xc207401c},\r
+{0x3c,0x8220401a},\r
+{0x40,0xc227401c},\r
+{0x44,0xb606e001},\r
+{0x48,0xc20022f8},\r
+{0x4c,0x80a6c001},\r
+{0x50,0x08bffffa},\r
+{0x54,0xba076038},\r
+{0x58,0x9e03e001},\r
+{0x5c,0xc20022fc},\r
+{0x60,0x80a3c001},\r
+{0x64,0x08bfffce},\r
+{0x68,0x9a036004},\r
+{0x6c,0x81c7e008},\r
+{0x70,0x81e80000},\r
+{0x74,0x9de3bf48},\r
+{0x78,0x1b00003f},\r
+{0x7c,0xc2002350},\r
+{0xf0,0x48},\r
+{0x00,0x9a1363ff},\r
+{0x04,0xba08400d},\r
+{0x08,0xa4102001},\r
+{0x0c,0xda0022f8},\r
+{0x10,0x80a4800d},\r
+{0x14,0x18800063},\r
+{0x18,0xa3306010},\r
+{0x1c,0xae10200e},\r
+{0x20,0xac10200e},\r
+{0x24,0xaa102000},\r
+{0x28,0xa8102000},\r
+{0x2c,0xa6102000},\r
+{0x30,0x80a46000},\r
+{0x34,0x02800033},\r
+{0x38,0xa0102000},\r
+{0x3c,0x03000018},\r
+{0x40,0x96106220},\r
+{0x44,0x92102000},\r
+{0x48,0x9807bfa8},\r
+{0x4c,0x8204c009},\r
+{0x50,0xda086440},\r
+{0x54,0x8205800d},\r
+{0x58,0x80a36000},\r
+{0x5c,0x02800007},\r
+{0x60,0x83286002},\r
+{0x64,0xc200400b},\r
+{0x68,0xc2230000},\r
+{0x6c,0x92026001},\r
+{0x70,0x10bffff7},\r
+{0x74,0x98032004},\r
+{0x78,0x7ffffc7d},\r
+{0x7c,0x9007bfa8},\r
+{0xf0,0x49},\r
+{0x00,0x80a74011},\r
+{0x04,0x1480000b},\r
+{0x08,0x9210001d},\r
+{0x0c,0x832f6002},\r
+{0x10,0x8200401e},\r
+{0x14,0x9a007fa8},\r
+{0x18,0xc2034000},\r
+{0x1c,0x92026001},\r
+{0x20,0xa0040001},\r
+{0x24,0x80a24011},\r
+{0x28,0x04bffffc},\r
+{0x2c,0x9a036004},\r
+{0x30,0x8224401d},\r
+{0x34,0x82006001},\r
+{0x38,0x9b3c201f},\r
+{0x3c,0x81836000},\r
+{0x40,0x01000000},\r
+{0x44,0x01000000},\r
+{0x48,0x01000000},\r
+{0x4c,0xa0fc0001},\r
+{0x50,0x36800007},\r
+{0x54,0xda0023c4},\r
+{0x58,0xc20023c8},\r
+{0x5c,0x80886020},\r
+{0x60,0x22800026},\r
+{0x64,0xaa056001},\r
+{0x68,0xda0023c4},\r
+{0x6c,0x9a5c000d},\r
+{0x70,0x833b601f},\r
+{0x74,0x83306018},\r
+{0x78,0x9a034001},\r
+{0x7c,0xa13b6008},\r
+{0xf0,0x4a},\r
+{0x00,0x92102000},\r
+{0x04,0x11000018},\r
+{0x08,0x82050009},\r
+{0x0c,0xda086440},\r
+{0x10,0x8205c00d},\r
+{0x14,0x94122220},\r
+{0x18,0x97286002},\r
+{0x1c,0x80a36000},\r
+{0x20,0x02800015},\r
+{0x24,0x92026001},\r
+{0x28,0xc202c00a},\r
+{0x2c,0x98204010},\r
+{0x30,0xda0822b0},\r
+{0x34,0x833b201f},\r
+{0x38,0x80a0000d},\r
+{0x3c,0x8220400c},\r
+{0x40,0x9a402000},\r
+{0x44,0x8330601f},\r
+{0x48,0x808b4001},\r
+{0x4c,0x22bfffef},\r
+{0x50,0xd822c00a},\r
+{0x54,0xda0ca2b0},\r
+{0x58,0x9a5b000d},\r
+{0x5c,0x833b601f},\r
+{0x60,0x83306019},\r
+{0x64,0x9a034001},\r
+{0x68,0x993b6007},\r
+{0x6c,0x10bfffe7},\r
+{0x70,0xd822c00a},\r
+{0x74,0xaa056001},\r
+{0x78,0xa604e00c},\r
+{0x7c,0x80a56001},\r
+{0xf0,0x4b},\r
+{0x00,0x04bfffac},\r
+{0x04,0xa805200c},\r
+{0x08,0xa404a001},\r
+{0x0c,0xc20022f8},\r
+{0x10,0x80a48001},\r
+{0x14,0xac05a00e},\r
+{0x18,0x08bfffa3},\r
+{0x1c,0xae05e00e},\r
+{0x20,0x81c7e008},\r
+{0x24,0x81e80000},\r
+{0x28,0x9de3bf98},\r
+{0x2c,0xc21023b6},\r
+{0x30,0xf81023be},\r
+{0x34,0x96102001},\r
+{0x38,0xfa0022f8},\r
+{0x3c,0x80a2c01d},\r
+{0x40,0xa8004001},\r
+{0x44,0xa407001c},\r
+{0x48,0x18800088},\r
+{0x4c,0xe6002214},\r
+{0x50,0x90102038},\r
+{0x54,0x92102038},\r
+{0x58,0x9810200e},\r
+{0x5c,0x15000018},\r
+{0x60,0xb8102001},\r
+{0x64,0xc20022fc},\r
+{0x68,0x80a70001},\r
+{0x6c,0x38800079},\r
+{0x70,0x9602e001},\r
+{0x74,0x2f000018},\r
+{0x78,0xac12a220},\r
+{0x7c,0xaa12a224},\r
+{0xf0,0x4c},\r
+{0x00,0x8203001c},\r
+{0x04,0xb7286002},\r
+{0x08,0xfa06c016},\r
+{0x0c,0x80a74013},\r
+{0x10,0x2480006b},\r
+{0x14,0xb8072001},\r
+{0x18,0x80a74014},\r
+{0x1c,0x16800014},\r
+{0x20,0x83286002},\r
+{0x24,0x80a74012},\r
+{0x28,0x06800007},\r
+{0x2c,0x8215e21c},\r
+{0x30,0xc206c015},\r
+{0x34,0x80a04012},\r
+{0x38,0x1680000c},\r
+{0x3c,0x8203001c},\r
+{0x40,0x8215e21c},\r
+{0x44,0xc206c001},\r
+{0x48,0x80a74001},\r
+{0x4c,0x2680005c},\r
+{0x50,0xb8072001},\r
+{0x54,0xc206c015},\r
+{0x58,0x80a74001},\r
+{0x5c,0x24800058},\r
+{0x60,0xb8072001},\r
+{0x64,0x8203001c},\r
+{0x68,0x83286002},\r
+{0x6c,0xfa0023c8},\r
+{0x70,0x808f6040},\r
+{0x74,0xf0004016},\r
+{0x78,0x0280000b},\r
+{0x7c,0xa2072001},\r
+{0xf0,0x4d},\r
+{0x00,0xfa0022fc},\r
+{0x04,0x83376001},\r
+{0x08,0x80a70001},\r
+{0x0c,0x28800007},\r
+{0x10,0x9a102000},\r
+{0x14,0x8227401c},\r
+{0x18,0xb8006001},\r
+{0x1c,0x10800003},\r
+{0x20,0x9a102001},\r
+{0x24,0x9a102000},\r
+{0x28,0xfa00221c},\r
+{0x2c,0xc2002220},\r
+{0x30,0xba5f401c},\r
+{0x34,0xba074001},\r
+{0x38,0xba5e001d},\r
+{0x3c,0x833f601f},\r
+{0x40,0x83306016},\r
+{0x44,0xba074001},\r
+{0x48,0xc2002224},\r
+{0x4c,0x8258401c},\r
+{0x50,0xbb3f600a},\r
+{0x54,0xba074001},\r
+{0x58,0xc2002240},\r
+{0x5c,0xb0074001},\r
+{0x60,0xc2002218},\r
+{0x64,0xb6070001},\r
+{0x68,0xa012a220},\r
+{0x6c,0xb92ee002},\r
+{0x70,0xba10001c},\r
+{0x74,0xb2024010},\r
+{0x78,0x9e020010},\r
+{0x7c,0xc20023c8},\r
+{0xf0,0x4e},\r
+{0x00,0x80886040},\r
+{0x04,0xb806401c},\r
+{0x08,0x02800007},\r
+{0x0c,0xb403c01d},\r
+{0x10,0xc20022fc},\r
+{0x14,0x83306001},\r
+{0x18,0x80a6c001},\r
+{0x1c,0x38800027},\r
+{0x20,0xb8100011},\r
+{0x24,0xfa0022fc},\r
+{0x28,0x8227401b},\r
+{0x2c,0x83286002},\r
+{0x30,0x80a6c01d},\r
+{0x34,0x18800020},\r
+{0x38,0x82064001},\r
+{0x3c,0x80a36000},\r
+{0x40,0x32800002},\r
+{0x44,0xb8006004},\r
+{0x48,0xc2070000},\r
+{0x4c,0x82204018},\r
+{0x50,0xc2270000},\r
+{0x54,0xfa002228},\r
+{0x58,0x8226c01d},\r
+{0x5c,0x80a6c01d},\r
+{0x60,0x04800013},\r
+{0x64,0xb85e0001},\r
+{0x68,0x80a36000},\r
+{0x6c,0x22800008},\r
+{0x70,0xc200222c},\r
+{0x74,0xc20022fc},\r
+{0x78,0x8220401b},\r
+{0x7c,0x83286002},\r
+{0xf0,0x4f},\r
+{0x00,0x8203c001},\r
+{0x04,0xb4006004},\r
+{0x08,0xc200222c},\r
+{0x0c,0x825f0001},\r
+{0x10,0xbb38601f},\r
+{0x14,0xbb376018},\r
+{0x18,0x8200401d},\r
+{0x1c,0xfa068000},\r
+{0x20,0x83386008},\r
+{0x24,0xba274001},\r
+{0x28,0xfa268000},\r
+{0x2c,0x10bfffd0},\r
+{0x30,0xb606e001},\r
+{0x34,0xb8100011},\r
+{0x38,0xb8072001},\r
+{0x3c,0xc20022fc},\r
+{0x40,0x80a70001},\r
+{0x44,0x08bfff90},\r
+{0x48,0x8203001c},\r
+{0x4c,0x9602e001},\r
+{0x50,0xc20022f8},\r
+{0x54,0x80a2c001},\r
+{0x58,0x9803200e},\r
+{0x5c,0x92026038},\r
+{0x60,0x08bfff80},\r
+{0x64,0x90022038},\r
+{0x68,0x81c7e008},\r
+{0x6c,0x81e80000},\r
+{0x70,0x9de3bf98},\r
+{0x74,0xc21023b6},\r
+{0x78,0xf81023be},\r
+{0x7c,0x96102001},\r
+{0xf0,0x50},\r
+{0x00,0xfa0022fc},\r
+{0x04,0x80a2c01d},\r
+{0x08,0xa0004001},\r
+{0x0c,0x9207001c},\r
+{0x10,0x1880005e},\r
+{0x14,0xd0002214},\r
+{0x18,0x15000018},\r
+{0x1c,0x9a102001},\r
+{0x20,0xc20022f8},\r
+{0x24,0x80a34001},\r
+{0x28,0x18800053},\r
+{0x2c,0x832ae002},\r
+{0x30,0xb2006038},\r
+{0x34,0x27000018},\r
+{0x38,0xa412a220},\r
+{0x3c,0xa212a258},\r
+{0x40,0xfa064012},\r
+{0x44,0x80a74008},\r
+{0x48,0x24800047},\r
+{0x4c,0x9a036001},\r
+{0x50,0x80a74010},\r
+{0x54,0x36800013},\r
+{0x58,0xfa00221c},\r
+{0x5c,0x80a74009},\r
+{0x60,0x06800007},\r
+{0x64,0x8214e1e8},\r
+{0x68,0xc2064011},\r
+{0x6c,0x80a04009},\r
+{0x70,0x3680000c},\r
+{0x74,0xfa00221c},\r
+{0x78,0x8214e1e8},\r
+{0x7c,0xc2064001},\r
+{0xf0,0x51},\r
+{0x00,0x80a74001},\r
+{0x04,0x26800038},\r
+{0x08,0x9a036001},\r
+{0x0c,0xc2064011},\r
+{0x10,0x80a74001},\r
+{0x14,0x24800034},\r
+{0x18,0x9a036001},\r
+{0x1c,0xfa00221c},\r
+{0x20,0xc2002220},\r
+{0x24,0xba5f400d},\r
+{0x28,0xba074001},\r
+{0x2c,0xf8064012},\r
+{0x30,0xba5f001d},\r
+{0x34,0x833f601f},\r
+{0x38,0x83306016},\r
+{0x3c,0xba074001},\r
+{0x40,0xc2002224},\r
+{0x44,0x8258400d},\r
+{0x48,0xbb3f600a},\r
+{0x4c,0xba074001},\r
+{0x50,0xc2002218},\r
+{0x54,0xb6034001},\r
+{0x58,0xc2002240},\r
+{0x5c,0xb8074001},\r
+{0x60,0xc20022f8},\r
+{0x64,0x80a6c001},\r
+{0x68,0x1880001c},\r
+{0x6c,0x832ee003},\r
+{0x70,0x8220401b},\r
+{0x74,0x82004001},\r
+{0x78,0x8200400b},\r
+{0x7c,0xb5286002},\r
+{0xf0,0x52},\r
+{0x00,0x9812a220},\r
+{0x04,0xc206800c},\r
+{0x08,0x9e20401c},\r
+{0x0c,0xde26800c},\r
+{0x10,0xfa002228},\r
+{0x14,0x8226c01d},\r
+{0x18,0x80a6c01d},\r
+{0x1c,0xb05f0001},\r
+{0x20,0x0480000a},\r
+{0x24,0xb606e001},\r
+{0x28,0xc200222c},\r
+{0x2c,0x825e0001},\r
+{0x30,0xbb38601f},\r
+{0x34,0xbb376018},\r
+{0x38,0x8200401d},\r
+{0x3c,0x83386008},\r
+{0x40,0x8223c001},\r
+{0x44,0xc226800c},\r
+{0x48,0xc20022f8},\r
+{0x4c,0x80a6c001},\r
+{0x50,0x08bfffed},\r
+{0x54,0xb406a038},\r
+{0x58,0x9a036001},\r
+{0x5c,0xb2066038},\r
+{0x60,0x9a036001},\r
+{0x64,0xc20022f8},\r
+{0x68,0x80a34001},\r
+{0x6c,0x08bfffb5},\r
+{0x70,0xb2066038},\r
+{0x74,0x9602e001},\r
+{0x78,0xc20022fc},\r
+{0x7c,0x80a2c001},\r
+{0xf0,0x53},\r
+{0x00,0x08bfffa8},\r
+{0x04,0x9a102001},\r
+{0x08,0x81c7e008},\r
+{0x0c,0x81e80000},\r
+{0x10,0xc2002214},\r
+{0x14,0x80a06000},\r
+{0x18,0x0280000c},\r
+{0x1c,0x01000000},\r
+{0x20,0xc20023c8},\r
+{0x24,0x80886010},\r
+{0x28,0x02800005},\r
+{0x2c,0x01000000},\r
+{0x30,0x03000009},\r
+{0x34,0x81c061a8},\r
+{0x38,0x01000000},\r
+{0x3c,0x03000009},\r
+{0x40,0x81c063f0},\r
+{0x44,0x01000000},\r
+{0x48,0x01000000},\r
+{0x4c,0x81c3e008},\r
+{0x50,0x01000000},\r
+{0x54,0x9de3bf98},\r
+{0x58,0xb0102001},\r
+{0x5c,0xda002200},\r
+{0x60,0x80a6000d},\r
+{0x64,0x1880001d},\r
+{0x68,0xc0202504},\r
+{0x6c,0x03000018},\r
+{0x70,0x98106220},\r
+{0x74,0xde0022fc},\r
+{0x78,0xb2102007},\r
+{0x7c,0xb6102001},\r
+{0xf0,0x54},\r
+{0x00,0x80a6c00f},\r
+{0x04,0x18800011},\r
+{0x08,0x832e6003},\r
+{0x0c,0x8200400c},\r
+{0x10,0xba006004},\r
+{0x14,0xf4002238},\r
+{0x18,0xc2074000},\r
+{0x1c,0xb606e001},\r
+{0x20,0xba076004},\r
+{0x24,0x80a0401a},\r
+{0x28,0x08800005},\r
+{0x2c,0xb820401a},\r
+{0x30,0xc2002504},\r
+{0x34,0x8200401c},\r
+{0x38,0xc2202504},\r
+{0x3c,0x80a6c00f},\r
+{0x40,0x28bffff7},\r
+{0x44,0xc2074000},\r
+{0x48,0xb0062001},\r
+{0x4c,0x80a6000d},\r
+{0x50,0x08bfffeb},\r
+{0x54,0xb2066007},\r
+{0x58,0xfa002504},\r
+{0x5c,0xc200223c},\r
+{0x60,0x80a74001},\r
+{0x64,0x28800004},\r
+{0x68,0xc0202568},\r
+{0x6c,0x82102001},\r
+{0x70,0xc2202568},\r
+{0x74,0x033fc180},\r
+{0x78,0xfa002568},\r
+{0x7c,0x8210602c},\r
+{0xf0,0x55},\r
+{0x00,0xfa204000},\r
+{0x04,0xfa202570},\r
+{0x08,0x81c7e008},\r
+{0x0c,0x81e80000},\r
+{0x10,0x9de3bf70},\r
+{0x14,0x92102001},\r
+{0x18,0xd0002300},\r
+{0x1c,0x80a24008},\r
+{0x20,0x1880001c},\r
+{0x24,0x9e102000},\r
+{0x28,0x03000018},\r
+{0x2c,0xa2106220},\r
+{0x30,0xd4002308},\r
+{0x34,0x98102007},\r
+{0x38,0x96102001},\r
+{0x3c,0x80a2c00a},\r
+{0x40,0x38800011},\r
+{0x44,0x92026001},\r
+{0x48,0x832b2003},\r
+{0x4c,0x82004011},\r
+{0x50,0x82006004},\r
+{0x54,0xda004000},\r
+{0x58,0x80a3400f},\r
+{0x5c,0x04800005},\r
+{0x60,0x82006004},\r
+{0x64,0x9e10000d},\r
+{0x68,0xa0100009},\r
+{0x6c,0xa410000b},\r
+{0x70,0x9602e001},\r
+{0x74,0x80a2c00a},\r
+{0x78,0x28bffff8},\r
+{0x7c,0xda004000},\r
+{0xf0,0x56},\r
+{0x00,0x92026001},\r
+{0x04,0x80a24008},\r
+{0x08,0x08bfffec},\r
+{0x0c,0x98032007},\r
+{0x10,0xa2042001},\r
+{0x14,0x92043fff},\r
+{0x18,0x80a24011},\r
+{0x1c,0x1480002e},\r
+{0x20,0x9e102000},\r
+{0x24,0x832a6003},\r
+{0x28,0x90204009},\r
+{0x2c,0x03000018},\r
+{0x30,0xa6106220},\r
+{0x34,0xa004a001},\r
+{0x38,0x9604bfff},\r
+{0x3c,0x80a2c010},\r
+{0x40,0x14800021},\r
+{0x44,0x82020008},\r
+{0x48,0x8200400b},\r
+{0x4c,0x9b2be002},\r
+{0x50,0x83286002},\r
+{0x54,0x9a03401e},\r
+{0x58,0x94004013},\r
+{0x5c,0x9a037fd0},\r
+{0x60,0x833ae01f},\r
+{0x64,0x8220400b},\r
+{0x68,0x80a26000},\r
+{0x6c,0x0480000f},\r
+{0x70,0x9930601f},\r
+{0x74,0xc2002300},\r
+{0x78,0x80a04009},\r
+{0x7c,0x82603fff},\r
+{0xf0,0x57},\r
+{0x00,0x8088400c},\r
+{0x04,0x2280000a},\r
+{0x08,0xc0234000},\r
+{0x0c,0xc2002308},\r
+{0x10,0x80a2c001},\r
+{0x14,0x38800006},\r
+{0x18,0xc0234000},\r
+{0x1c,0xc2028000},\r
+{0x20,0x10800003},\r
+{0x24,0xc2234000},\r
+{0x28,0xc0234000},\r
+{0x2c,0x9602e001},\r
+{0x30,0x9e03e001},\r
+{0x34,0x9a036004},\r
+{0x38,0x80a2c010},\r
+{0x3c,0x04bfffe9},\r
+{0x40,0x9402a004},\r
+{0x44,0x92026001},\r
+{0x48,0x80a24011},\r
+{0x4c,0x04bfffdb},\r
+{0x50,0x90022007},\r
+{0x54,0x9007bfd0},\r
+{0x58,0x7ffffaa5},\r
+{0x5c,0x92102009},\r
+{0x60,0xda07bfec},\r
+{0x64,0xc207bfe8},\r
+{0x68,0x8200400d},\r
+{0x6c,0xda07bff0},\r
+{0x70,0x8200400d},\r
+{0x74,0x9b30601f},\r
+{0x78,0x8200400d},\r
+{0x7c,0xd6082347},\r
+{0xf0,0x58},\r
+{0x00,0x9602e001},\r
+{0x04,0xda00256c},\r
+{0x08,0xd808257f},\r
+{0x0c,0x9a5b400b},\r
+{0x10,0x98032001},\r
+{0x14,0x81800000},\r
+{0x18,0x01000000},\r
+{0x1c,0x01000000},\r
+{0x20,0x01000000},\r
+{0x24,0x9a73400c},\r
+{0x28,0x83386001},\r
+{0x2c,0xc2202590},\r
+{0x30,0xda20256c},\r
+{0x34,0x96102000},\r
+{0x38,0x94102c18},\r
+{0x3c,0x992ae002},\r
+{0x40,0xc20323b4},\r
+{0x44,0x80a06000},\r
+{0x48,0x12800009},\r
+{0x4c,0x80a2e002},\r
+{0x50,0xc2002520},\r
+{0x54,0x14800004},\r
+{0x58,0x9a200001},\r
+{0x5c,0x10800014},\r
+{0x60,0xc2232520},\r
+{0x64,0x10800012},\r
+{0x68,0xda232520},\r
+{0x6c,0xda1323b4},\r
+{0x70,0xc2002590},\r
+{0x74,0x8258400d},\r
+{0x78,0x9b38601f},\r
+{0x7c,0x9b336018},\r
+{0xf0,0x59},\r
+{0x00,0x8200400d},\r
+{0x04,0xda1323b6},\r
+{0x08,0x83386008},\r
+{0x0c,0x8200400d},\r
+{0x10,0xda00256c},\r
+{0x14,0x8258400d},\r
+{0x18,0x83306007},\r
+{0x1c,0x80a06c18},\r
+{0x20,0x04800003},\r
+{0x24,0xc2232520},\r
+{0x28,0xd4232520},\r
+{0x2c,0x9602e001},\r
+{0x30,0x80a2e003},\r
+{0x34,0x04bfffe3},\r
+{0x38,0x992ae002},\r
+{0x3c,0xda102472},\r
+{0x40,0xc2002288},\r
+{0x44,0x80a36000},\r
+{0x48,0x02800004},\r
+{0x4c,0xc220251c},\r
+{0x50,0x10800005},\r
+{0x54,0xda202530},\r
+{0x58,0x0300001f},\r
+{0x5c,0x821063ff},\r
+{0x60,0xc2202530},\r
+{0x64,0x81c7e008},\r
+{0x68,0x81e80000},\r
+{0x6c,0x9de3bf80},\r
+{0x70,0x832e6003},\r
+{0x74,0x82204019},\r
+{0x78,0x82004001},\r
+{0x7c,0x82004018},\r
+{0xf0,0x5a},\r
+{0x00,0x3b000018},\r
+{0x04,0x83286002},\r
+{0x08,0xc020254c},\r
+{0x0c,0xba176220},\r
+{0x10,0xea00401d},\r
+{0x14,0x9e100019},\r
+{0x18,0xb2100018},\r
+{0x1c,0xc2002528},\r
+{0x20,0x80a54001},\r
+{0x24,0x9810001a},\r
+{0x28,0x068000c9},\r
+{0x2c,0xb0102000},\r
+{0x30,0xa006401a},\r
+{0x34,0xa403c01a},\r
+{0x38,0x8207bfe0},\r
+{0x3c,0xb2102004},\r
+{0x40,0xc0204000},\r
+{0x44,0xb2867fff},\r
+{0x48,0x1cbffffe},\r
+{0x4c,0x82006004},\r
+{0x50,0x9e23c00c},\r
+{0x54,0x80a3c012},\r
+{0x58,0x14800061},\r
+{0x5c,0xb92be003},\r
+{0x60,0xba03c00f},\r
+{0x64,0x82048012},\r
+{0x68,0xb827000f},\r
+{0x6c,0xba07400f},\r
+{0x70,0x82004012},\r
+{0x74,0xba274001},\r
+{0x78,0x9607001c},\r
+{0x7c,0x92274010},\r
+{0xf0,0x5b},\r
+{0x00,0x9410000b},\r
+{0x04,0x2d000018},\r
+{0x08,0x8203000c},\r
+{0x0c,0xb2240001},\r
+{0x10,0x80a64010},\r
+{0x14,0x1480004c},\r
+{0x18,0xbb3be01f},\r
+{0x1c,0x82028019},\r
+{0x20,0xba27400f},\r
+{0x24,0x83286002},\r
+{0x28,0xb815a220},\r
+{0x2c,0xb6064009},\r
+{0x30,0x9a00401c},\r
+{0x34,0xa937601f},\r
+{0x38,0xb406e008},\r
+{0x3c,0x80a32001},\r
+{0x40,0x0280000c},\r
+{0x44,0x80a6600e},\r
+{0x48,0x18800003},\r
+{0x4c,0xba102001},\r
+{0x50,0xba102000},\r
+{0x54,0x80a3e019},\r
+{0x58,0x18800003},\r
+{0x5c,0x82102001},\r
+{0x60,0x82102000},\r
+{0x64,0x80974001},\r
+{0x68,0x32800033},\r
+{0x6c,0xb2066001},\r
+{0x70,0xc2034000},\r
+{0x74,0x80a04015},\r
+{0x78,0x14800003},\r
+{0x7c,0xba102001},\r
+{0xf0,0x5c},\r
+{0x00,0xba102000},\r
+{0x04,0x833e601f},\r
+{0x08,0x82204019},\r
+{0x0c,0x8330601f},\r
+{0x10,0x808f4001},\r
+{0x14,0x0280000c},\r
+{0x18,0x80a32001},\r
+{0x1c,0xc2002308},\r
+{0x20,0x80a04019},\r
+{0x24,0x82603fff},\r
+{0x28,0x80884014},\r
+{0x2c,0x02800006},\r
+{0x30,0x80a32001},\r
+{0x34,0xc2002300},\r
+{0x38,0x80a3c001},\r
+{0x3c,0x08800083},\r
+{0x40,0x80a32001},\r
+{0x44,0x3280001c},\r
+{0x48,0xb2066001},\r
+{0x4c,0x8202c019},\r
+{0x50,0xa3286002},\r
+{0x54,0x912b001a},\r
+{0x58,0xb6102000},\r
+{0x5c,0xa615a220},\r
+{0x60,0xb92ee002},\r
+{0x64,0xc2072520},\r
+{0x68,0xfa044013},\r
+{0x6c,0x80a74001},\r
+{0x70,0x0480000c},\r
+{0x74,0x8207bff8},\r
+{0x78,0x80a6e003},\r
+{0x7c,0x14800006},\r
+{0xf0,0x5d},\r
+{0x00,0xb0070001},\r
+{0x04,0xc2063fe8},\r
+{0x08,0x82104008},\r
+{0x0c,0x10800005},\r
+{0x10,0xc2263fe8},\r
+{0x14,0xc2063fe8},\r
+{0x18,0x82006001},\r
+{0x1c,0xc2263fe8},\r
+{0x20,0xb606e001},\r
+{0x24,0x80a6e004},\r
+{0x28,0x08bfffef},\r
+{0x2c,0xb92ee002},\r
+{0x30,0xb2066001},\r
+{0x34,0x9a036004},\r
+{0x38,0x80a64010},\r
+{0x3c,0x04bfffc0},\r
+{0x40,0xb406a001},\r
+{0x44,0x9e03e001},\r
+{0x48,0x92026003},\r
+{0x4c,0x9402a00e},\r
+{0x50,0x80a3c012},\r
+{0x54,0x04bfffad},\r
+{0x58,0x9602e00e},\r
+{0x5c,0xfa102470},\r
+{0x60,0xc207bff0},\r
+{0x64,0x80a0401d},\r
+{0x68,0x14800003},\r
+{0x6c,0xba102001},\r
+{0x70,0xba102000},\r
+{0x74,0x821b2002},\r
+{0x78,0x80a00001},\r
+{0x7c,0x82603fff},\r
+{0xf0,0x5e},\r
+{0x00,0x80974001},\r
+{0x04,0x12800052},\r
+{0x08,0xb0103fff},\r
+{0x0c,0xc207bfe0},\r
+{0x10,0x80886010},\r
+{0x14,0x0280000a},\r
+{0x18,0xfa07bfe4},\r
+{0x1c,0xc207bfec},\r
+{0x20,0x80886082},\r
+{0x24,0x02800007},\r
+{0x28,0x808f6082},\r
+{0x2c,0x80886028},\r
+{0x30,0x12800047},\r
+{0x34,0xb0102003},\r
+{0x38,0xfa07bfe4},\r
+{0x3c,0x808f6082},\r
+{0x40,0x02800007},\r
+{0x44,0x808f6028},\r
+{0x48,0xc207bfec},\r
+{0x4c,0x80886028},\r
+{0x50,0x3280003f},\r
+{0x54,0xb0102002},\r
+{0x58,0x808f6028},\r
+{0x5c,0x02800008},\r
+{0x60,0xf807bfe8},\r
+{0x64,0xc207bfec},\r
+{0x68,0x80886082},\r
+{0x6c,0x02800005},\r
+{0x70,0x820f200a},\r
+{0x74,0x10800036},\r
+{0x78,0xb0102002},\r
+{0x7c,0x820f200a},\r
+{0xf0,0x5f},\r
+{0x00,0x8218600a},\r
+{0x04,0x80a00001},\r
+{0x08,0xb2043fff},\r
+{0x0c,0xba603fff},\r
+{0x10,0x821e6001},\r
+{0x14,0x80a00001},\r
+{0x18,0xb6402000},\r
+{0x1c,0x808f401b},\r
+{0x20,0x02800005},\r
+{0x24,0x9e04bfff},\r
+{0x28,0x80a3e001},\r
+{0x2c,0x32800028},\r
+{0x30,0xb0102001},\r
+{0x34,0x820f2022},\r
+{0x38,0x80a06022},\r
+{0x3c,0x1280000d},\r
+{0x40,0x820f2088},\r
+{0x44,0xc2002308},\r
+{0x48,0x821e4001},\r
+{0x4c,0x80a00001},\r
+{0x50,0xba402000},\r
+{0x54,0x821be001},\r
+{0x58,0x80a00001},\r
+{0x5c,0x82402000},\r
+{0x60,0x808f4001},\r
+{0x64,0x3280001a},\r
+{0x68,0xb0102001},\r
+{0x6c,0x820f2088},\r
+{0x70,0x82186088},\r
+{0x74,0x80a00001},\r
+{0x78,0x82603fff},\r
+{0x7c,0x8088401b},\r
+{0xf0,0x60},\r
+{0x00,0x02800007},\r
+{0x04,0x820f20a0},\r
+{0x08,0xc2002300},\r
+{0x0c,0x80a3c001},\r
+{0x10,0x3280000f},\r
+{0x14,0xb0102001},\r
+{0x18,0x820f20a0},\r
+{0x1c,0x80a060a0},\r
+{0x20,0x1280000b},\r
+{0x24,0xb0102000},\r
+{0x28,0xc2002308},\r
+{0x2c,0x80a64001},\r
+{0x30,0x02800007},\r
+{0x34,0x01000000},\r
+{0x38,0xc2002300},\r
+{0x3c,0x80a3c001},\r
+{0x40,0x12800003},\r
+{0x44,0xb0102001},\r
+{0x48,0xb0102000},\r
+{0x4c,0x81c7e008},\r
+{0x50,0x81e80000},\r
+{0x54,0x9de3bf98},\r
+{0x58,0x832e2003},\r
+{0x5c,0x82204018},\r
+{0x60,0xb2100018},\r
+{0x64,0xbb286003},\r
+{0x68,0x31000018},\r
+{0x6c,0x82162224},\r
+{0x70,0xb6102002},\r
+{0x74,0xf40022fc},\r
+{0x78,0xf8074001},\r
+{0x7c,0x80a6c01a},\r
+{0xf0,0x61},\r
+{0x00,0x1880000f},\r
+{0x04,0x9e102001},\r
+{0x08,0x82162220},\r
+{0x0c,0x82074001},\r
+{0x10,0x82006008},\r
+{0x14,0xfa004000},\r
+{0x18,0x80a7401c},\r
+{0x1c,0x16800004},\r
+{0x20,0x82006004},\r
+{0x24,0xb810001d},\r
+{0x28,0x9e10001b},\r
+{0x2c,0xb606e001},\r
+{0x30,0x80a6c01a},\r
+{0x34,0x28bffff9},\r
+{0x38,0xfa004000},\r
+{0x3c,0x80a72000},\r
+{0x40,0x16800017},\r
+{0x44,0xb0102000},\r
+{0x48,0x832e6003},\r
+{0x4c,0x82204019},\r
+{0x50,0x82004001},\r
+{0x54,0x39000018},\r
+{0x58,0x8200400f},\r
+{0x5c,0x83286002},\r
+{0x60,0xba17221c},\r
+{0x64,0xb6172220},\r
+{0x68,0xfa00401d},\r
+{0x6c,0xf600401b},\r
+{0x70,0xb8172224},\r
+{0x74,0xc200401c},\r
+{0x78,0xba07401b},\r
+{0x7c,0xba074001},\r
+{0xf0,0x62},\r
+{0x00,0xc200220c},\r
+{0x04,0xba20001d},\r
+{0x08,0xba5f4001},\r
+{0x0c,0x833f601f},\r
+{0x10,0x83306018},\r
+{0x14,0xba074001},\r
+{0x18,0xb13f6008},\r
+{0x1c,0x81c7e008},\r
+{0x20,0x81e80000},\r
+{0x24,0x9de3bee8},\r
+{0x28,0xa0102000},\r
+{0x2c,0xc20022f8},\r
+{0x30,0x80a40001},\r
+{0x34,0x1a80000a},\r
+{0x38,0xa2042001},\r
+{0x3c,0x8207bff8},\r
+{0x40,0xa12c2002},\r
+{0x44,0xa0040001},\r
+{0x48,0x7fffffc3},\r
+{0x4c,0x90100011},\r
+{0x50,0xd0243fa0},\r
+{0x54,0x10bffff6},\r
+{0x58,0xa0100011},\r
+{0x5c,0xc0202514},\r
+{0x60,0xb607bff8},\r
+{0x64,0x8207bf48},\r
+{0x68,0xa2102013},\r
+{0x6c,0xc0204000},\r
+{0x70,0xa2847fff},\r
+{0x74,0x1cbffffe},\r
+{0x78,0x82006004},\r
+{0x7c,0xa2102000},\r
+{0xf0,0x63},\r
+{0x00,0x832c6002},\r
+{0x04,0xa2046001},\r
+{0x08,0x80a46009},\r
+{0x0c,0x04bffffd},\r
+{0x10,0xc0206768},\r
+{0x14,0xa0102001},\r
+{0x18,0xc20022f8},\r
+{0x1c,0x80a40001},\r
+{0x20,0x18800086},\r
+{0x24,0xb810201c},\r
+{0x28,0xba10200e},\r
+{0x2c,0xae10200e},\r
+{0x30,0xa2102001},\r
+{0x34,0xc20022fc},\r
+{0x38,0x80a44001},\r
+{0x3c,0x18800078},\r
+{0x40,0x03000044},\r
+{0x44,0xac040001},\r
+{0x48,0x9b2f2002},\r
+{0x4c,0x992f6002},\r
+{0x50,0x972de002},\r
+{0x54,0x03000050},\r
+{0x58,0xaa040001},\r
+{0x5c,0xa8036004},\r
+{0x60,0xa6032008},\r
+{0x64,0xa402e004},\r
+{0x68,0xc2002308},\r
+{0x6c,0x80a44001},\r
+{0x70,0x3880002f},\r
+{0x74,0xc2002304},\r
+{0x78,0xc2002300},\r
+{0x7c,0x80a40001},\r
+{0xf0,0x64},\r
+{0x00,0x38800041},\r
+{0x04,0xc200237c},\r
+{0x08,0x90100011},\r
+{0x0c,0x92100010},\r
+{0x10,0x7ffffeb7},\r
+{0x14,0x94102001},\r
+{0x18,0x80a22000},\r
+{0x1c,0x02800057},\r
+{0x20,0x1b000040},\r
+{0x24,0x1b000018},\r
+{0x28,0x8213621c},\r
+{0x2c,0x96136220},\r
+{0x30,0xd8048001},\r
+{0x34,0xd604800b},\r
+{0x38,0x9a136224},\r
+{0x3c,0x832c2002},\r
+{0x40,0x9803000b},\r
+{0x44,0xda04800d},\r
+{0x48,0x8200401b},\r
+{0x4c,0x9803000d},\r
+{0x50,0xc2007f9c},\r
+{0x54,0x80a30001},\r
+{0x58,0x06800048},\r
+{0x5c,0x1b000040},\r
+{0x60,0x80a22000},\r
+{0x64,0x3680000d},\r
+{0x68,0xc2002514},\r
+{0x6c,0x90100011},\r
+{0x70,0x92100010},\r
+{0x74,0x7ffffe9e},\r
+{0x78,0x94102002},\r
+{0x7c,0x80a22000},\r
+{0xf0,0x65},\r
+{0x00,0x0280003e},\r
+{0x04,0x1b000040},\r
+{0x08,0xc2002514},\r
+{0x0c,0x9b286002},\r
+{0x10,0x10800034},\r
+{0x14,0xea236768},\r
+{0x18,0x9b2c6010},\r
+{0x1c,0x9a034010},\r
+{0x20,0x99286002},\r
+{0x24,0x1080002f},\r
+{0x28,0xda232768},\r
+{0x2c,0x80a06000},\r
+{0x30,0x02800007},\r
+{0x34,0x19000018},\r
+{0x38,0xc2002300},\r
+{0x3c,0x80a40001},\r
+{0x40,0x0880002e},\r
+{0x44,0x1b000040},\r
+{0x48,0x19000018},\r
+{0x4c,0x82132220},\r
+{0x50,0xda04c001},\r
+{0x54,0xc200251c},\r
+{0x58,0x80a34001},\r
+{0x5c,0x24800027},\r
+{0x60,0x1b000040},\r
+{0x64,0x821321e8},\r
+{0x68,0xc204c001},\r
+{0x6c,0x80a0400d},\r
+{0x70,0x36800022},\r
+{0x74,0x1b000040},\r
+{0x78,0x82132258},\r
+{0x7c,0x10800013},\r
+{0xf0,0x66},\r
+{0x00,0xc204c001},\r
+{0x04,0x80a06000},\r
+{0x08,0x1280001c},\r
+{0x0c,0x1b000040},\r
+{0x10,0x19000018},\r
+{0x14,0x82132220},\r
+{0x18,0xda050001},\r
+{0x1c,0xc200251c},\r
+{0x20,0x80a34001},\r
+{0x24,0x24800015},\r
+{0x28,0x1b000040},\r
+{0x2c,0x8213221c},\r
+{0x30,0xc2050001},\r
+{0x34,0x80a0400d},\r
+{0x38,0x36800010},\r
+{0x3c,0x1b000040},\r
+{0x40,0x82132224},\r
+{0x44,0xc2050001},\r
+{0x48,0x80a34001},\r
+{0x4c,0x0680000b},\r
+{0x50,0x1b000040},\r
+{0x54,0xc2002514},\r
+{0x58,0x9b286002},\r
+{0x5c,0xec236768},\r
+{0x60,0x82006001},\r
+{0x64,0xc2202514},\r
+{0x68,0xc2002514},\r
+{0x6c,0x80a06009},\r
+{0x70,0x18800012},\r
+{0x74,0x1b000040},\r
+{0x78,0xa2046001},\r
+{0x7c,0xc20022fc},\r
+{0xf0,0x67},\r
+{0x00,0xac05800d},\r
+{0x04,0x80a44001},\r
+{0x08,0xa404a004},\r
+{0x0c,0xa604e004},\r
+{0x10,0xa8052004},\r
+{0x14,0x08bfff95},\r
+{0x18,0xaa05400d},\r
+{0x1c,0xa0042001},\r
+{0x20,0xc20022f8},\r
+{0x24,0x80a40001},\r
+{0x28,0xae05e00e},\r
+{0x2c,0xba07600e},\r
+{0x30,0x08bfff80},\r
+{0x34,0xb807200e},\r
+{0x38,0x81c7e008},\r
+{0x3c,0x81e80000},\r
+{0x40,0x80a22000},\r
+{0x44,0x2280001d},\r
+{0x48,0xc2002558},\r
+{0x4c,0xd4002208},\r
+{0x50,0x80a2a000},\r
+{0x54,0x0280002f},\r
+{0x58,0x01000000},\r
+{0x5c,0xc2002514},\r
+{0x60,0x80a06000},\r
+{0x64,0x12800007},\r
+{0x68,0xc2002558},\r
+{0x6c,0x80a06000},\r
+{0x70,0x02800028},\r
+{0x74,0x82007fff},\r
+{0x78,0x10800026},\r
+{0x7c,0xc2202558},\r
+{0xf0,0x68},\r
+{0x00,0x80a06000},\r
+{0x04,0x32800023},\r
+{0x08,0xd4202558},\r
+{0x0c,0x17200040},\r
+{0x10,0x193fc200},\r
+{0x14,0x8212e001},\r
+{0x18,0xc2230000},\r
+{0x1c,0xc200233c},\r
+{0x20,0x83306002},\r
+{0x24,0x9a132070},\r
+{0x28,0xc2234000},\r
+{0x2c,0xd6230000},\r
+{0x30,0x10800018},\r
+{0x34,0xd4202558},\r
+{0x38,0x80a06000},\r
+{0x3c,0x32800007},\r
+{0x40,0xc2002514},\r
+{0x44,0xc2002208},\r
+{0x48,0x80a06000},\r
+{0x4c,0x1280000e},\r
+{0x50,0x033fc200},\r
+{0x54,0xc2002514},\r
+{0x58,0x80a06001},\r
+{0x5c,0x08800006},\r
+{0x60,0xd800233c},\r
+{0x64,0x82007fff},\r
+{0x68,0xda002204},\r
+{0x6c,0x8258400d},\r
+{0x70,0x98030001},\r
+{0x74,0x033fc200},\r
+{0x78,0x82106070},\r
+{0x7c,0x10800005},\r
+{0xf0,0x69},\r
+{0x00,0xd8204000},\r
+{0x04,0xda002234},\r
+{0x08,0x82106070},\r
+{0x0c,0xda204000},\r
+{0x10,0x81c3e008},\r
+{0x14,0x01000000},\r
+{0x18,0x82220009},\r
+{0x1c,0x9a58400a},\r
+{0x20,0x833b601f},\r
+{0x24,0x80a20009},\r
+{0x28,0x83306019},\r
+{0x2c,0x04800004},\r
+{0x30,0x90102000},\r
+{0x34,0x82034001},\r
+{0x38,0x91386007},\r
+{0x3c,0x81c3e008},\r
+{0x40,0x01000000},\r
+{0x44,0x9de3bf98},\r
+{0x48,0xc2002308},\r
+{0x4c,0x82006001},\r
+{0x50,0xe60022fc},\r
+{0x54,0x80a4c001},\r
+{0x58,0x2a800019},\r
+{0x5c,0xe80022f8},\r
+{0x60,0x15000018},\r
+{0x64,0xa8102001},\r
+{0x68,0xc20022f8},\r
+{0x6c,0x80a50001},\r
+{0x70,0x1880000c},\r
+{0x74,0x832ce002},\r
+{0x78,0x9a006038},\r
+{0x7c,0x9612a224},\r
+{0xf0,0x6a},\r
+{0x00,0x9812a220},\r
+{0x04,0xc203400c},\r
+{0x08,0xc223400b},\r
+{0x0c,0xa8052001},\r
+{0x10,0xc20022f8},\r
+{0x14,0x80a50001},\r
+{0x18,0x08bffffb},\r
+{0x1c,0x9a036038},\r
+{0x20,0xc2002308},\r
+{0x24,0xa604ffff},\r
+{0x28,0x82006001},\r
+{0x2c,0x80a4c001},\r
+{0x30,0x1abfffee},\r
+{0x34,0xa8102001},\r
+{0x38,0xe80022f8},\r
+{0x3c,0x80a52000},\r
+{0x40,0x0280002a},\r
+{0x44,0x832d2003},\r
+{0x48,0xaa204014},\r
+{0x4c,0x27000018},\r
+{0x50,0xa52d6003},\r
+{0x54,0x8214e228},\r
+{0x58,0xa214e224},\r
+{0x5c,0xd2048001},\r
+{0x60,0xd408228c},\r
+{0x64,0x7fffffcd},\r
+{0x68,0xd0048011},\r
+{0x6c,0xac14e220},\r
+{0x70,0xd0248016},\r
+{0x74,0xc2002308},\r
+{0x78,0xa0054015},\r
+{0x7c,0xa0040001},\r
+{0xf0,0x6b},\r
+{0x00,0xa12c2002},\r
+{0x04,0x8214e21c},\r
+{0x08,0xd2040001},\r
+{0x0c,0xd408228d},\r
+{0x10,0x7fffffc2},\r
+{0x14,0xd0040016},\r
+{0x18,0xd0240011},\r
+{0x1c,0xc2002300},\r
+{0x20,0x80a50001},\r
+{0x24,0x2880000f},\r
+{0x28,0xa8853fff},\r
+{0x2c,0xa214e258},\r
+{0x30,0x98100016},\r
+{0x34,0x9a100012},\r
+{0x38,0xa6102000},\r
+{0x3c,0xc203400c},\r
+{0x40,0xc2234011},\r
+{0x44,0xc2002308},\r
+{0x48,0xa604e001},\r
+{0x4c,0x82006001},\r
+{0x50,0x80a4c001},\r
+{0x54,0x08bffffa},\r
+{0x58,0x9a036004},\r
+{0x5c,0xa8853fff},\r
+{0x60,0x12bfffdb},\r
+{0x64,0xaa057ff9},\r
+{0x68,0xa6102001},\r
+{0x6c,0xc2002308},\r
+{0x70,0x80a4c001},\r
+{0x74,0x18800019},\r
+{0x78,0x23000018},\r
+{0x7c,0xa12ce002},\r
+{0xf0,0x6c},\r
+{0x00,0x82146290},\r
+{0x04,0xa4146258},\r
+{0x08,0xd2040001},\r
+{0x0c,0xd408228e},\r
+{0x10,0x7fffffa2},\r
+{0x14,0xd0040012},\r
+{0x18,0x9a146220},\r
+{0x1c,0xd024000d},\r
+{0x20,0xc2002300},\r
+{0x24,0xa1286003},\r
+{0x28,0xa0240001},\r
+{0x2c,0xa0040010},\r
+{0x30,0xa0040013},\r
+{0x34,0xa12c2002},\r
+{0x38,0xa21461e8},\r
+{0x3c,0xd004000d},\r
+{0x40,0xd2040011},\r
+{0x44,0x7fffff95},\r
+{0x48,0xd408228f},\r
+{0x4c,0xd0240012},\r
+{0x50,0x10bfffe7},\r
+{0x54,0xa604e001},\r
+{0x58,0x17000018},\r
+{0x5c,0x9012e224},\r
+{0x60,0x9212e258},\r
+{0x64,0xda024000},\r
+{0x68,0xc2020000},\r
+{0x6c,0x8200400d},\r
+{0x70,0x9412e220},\r
+{0x74,0x83386001},\r
+{0x78,0xc2228000},\r
+{0x7c,0xd8002308},\r
+{0xf0,0x6d},\r
+{0x00,0x992b2002},\r
+{0x04,0x9612e25c},\r
+{0x08,0xda03000b},\r
+{0x0c,0xc203000a},\r
+{0x10,0x8200400d},\r
+{0x14,0x83386001},\r
+{0x18,0xc2230008},\r
+{0x1c,0xc2002300},\r
+{0x20,0x9b286003},\r
+{0x24,0x9a234001},\r
+{0x28,0x9b2b6003},\r
+{0x2c,0xd803400a},\r
+{0x30,0xc203400b},\r
+{0x34,0x8200400c},\r
+{0x38,0x83386001},\r
+{0x3c,0xc2234009},\r
+{0x40,0xda002300},\r
+{0x44,0x832b6003},\r
+{0x48,0x8220400d},\r
+{0x4c,0xda002308},\r
+{0x50,0x82004001},\r
+{0x54,0x8200400d},\r
+{0x58,0x83286002},\r
+{0x5c,0xda004009},\r
+{0x60,0xd8004008},\r
+{0x64,0x9a03400c},\r
+{0x68,0x9b3b6001},\r
+{0x6c,0xda20400b},\r
+{0x70,0x81c7e008},\r
+{0x74,0x81e80000},\r
+{0x78,0x80a2200d},\r
+{0x7c,0x82402000},\r
+{0xf0,0x6e},\r
+{0x00,0x80a26018},\r
+{0x04,0x90402000},\r
+{0x08,0x81c3e008},\r
+{0x0c,0x90084008},\r
+{0x10,0x9de3bf98},\r
+{0x14,0xa026001b},\r
+{0x18,0xae06001b},\r
+{0x1c,0xf427a04c},\r
+{0x20,0x03000007},\r
+{0x24,0xba1063fe},\r
+{0x28,0x80a40017},\r
+{0x2c,0xb8102000},\r
+{0x30,0xaa102000},\r
+{0x34,0xac102000},\r
+{0x38,0x1480001f},\r
+{0x3c,0xb4100010},\r
+{0x40,0x832c2003},\r
+{0x44,0x82204010},\r
+{0x48,0xa6004001},\r
+{0x4c,0xa226401b},\r
+{0x50,0xa806401b},\r
+{0x54,0x80a44014},\r
+{0x58,0x34800014},\r
+{0x5c,0xa0042001},\r
+{0x60,0x82044013},\r
+{0x64,0xa5286002},\r
+{0x68,0x90100011},\r
+{0x6c,0x7fffffe3},\r
+{0x70,0x92100010},\r
+{0x74,0x80a22000},\r
+{0x78,0x02800008},\r
+{0x7c,0xa2046001},\r
+{0xf0,0x6f},\r
+{0x00,0x03000018},\r
+{0x04,0x82106220},\r
+{0x08,0xc2048001},\r
+{0x0c,0x80a0401d},\r
+{0x10,0x26800002},\r
+{0x14,0xba100001},\r
+{0x18,0x80a44014},\r
+{0x1c,0x04bffff3},\r
+{0x20,0xa404a004},\r
+{0x24,0xa0042001},\r
+{0x28,0x80a40017},\r
+{0x2c,0x04bfffe8},\r
+{0x30,0xa604e00e},\r
+{0x34,0xc2002250},\r
+{0x38,0x80a74001},\r
+{0x3c,0x26800002},\r
+{0x40,0xba100001},\r
+{0x44,0xb006001b},\r
+{0x48,0x80a68018},\r
+{0x4c,0x14800029},\r
+{0x50,0xa010001a},\r
+{0x54,0x832ea003},\r
+{0x58,0x8220401a},\r
+{0x5c,0xa6004001},\r
+{0x60,0xa226401b},\r
+{0x64,0xa806401b},\r
+{0x68,0x80a44014},\r
+{0x6c,0x1480001a},\r
+{0x70,0x82044013},\r
+{0x74,0xa5286002},\r
+{0x78,0x90100011},\r
+{0x7c,0x7fffffbf},\r
+{0xf0,0x70},\r
+{0x00,0x92100010},\r
+{0x04,0x80a22000},\r
+{0x08,0x22800010},\r
+{0x0c,0xa2046001},\r
+{0x10,0x03000018},\r
+{0x14,0x82106220},\r
+{0x18,0xc2048001},\r
+{0x1c,0x8220401d},\r
+{0x20,0x9a046001},\r
+{0x24,0x98042001},\r
+{0x28,0x9658400d},\r
+{0x2c,0x80a06000},\r
+{0x30,0x04800005},\r
+{0x34,0x9a58400c},\r
+{0x38,0xaa05400d},\r
+{0x3c,0xac05800b},\r
+{0x40,0xb8070001},\r
+{0x44,0xa2046001},\r
+{0x48,0x80a44014},\r
+{0x4c,0x04bfffeb},\r
+{0x50,0xa404a004},\r
+{0x54,0xa0042001},\r
+{0x58,0x80a40018},\r
+{0x5c,0x04bfffe1},\r
+{0x60,0xa604e00e},\r
+{0x64,0x80a72000},\r
+{0x68,0x14800006},\r
+{0x6c,0x9b2d6006},\r
+{0x70,0xd807a04c},\r
+{0x74,0x832b2002},\r
+{0x78,0x1080001d},\r
+{0x7c,0xc0206768},\r
+{0xf0,0x71},\r
+{0x00,0x833b601f},\r
+{0x04,0x81806000},\r
+{0x08,0x01000000},\r
+{0x0c,0x01000000},\r
+{0x10,0x01000000},\r
+{0x14,0x9a7b401c},\r
+{0x18,0x832da006},\r
+{0x1c,0x9938601f},\r
+{0x20,0x81832000},\r
+{0x24,0x01000000},\r
+{0x28,0x01000000},\r
+{0x2c,0x01000000},\r
+{0x30,0x8278401c},\r
+{0x34,0xaa037fa0},\r
+{0x38,0x80a56000},\r
+{0x3c,0x14800003},\r
+{0x40,0xac007fa0},\r
+{0x44,0xaa102001},\r
+{0x48,0x80a5a000},\r
+{0x4c,0x24800002},\r
+{0x50,0xac102001},\r
+{0x54,0x9a0dafff},\r
+{0x58,0x832d6010},\r
+{0x5c,0x8210400d},\r
+{0x60,0xd807a04c},\r
+{0x64,0x9b2b2002},\r
+{0x68,0xc2236768},\r
+{0x6c,0x81c7e008},\r
+{0x70,0x81e80000},\r
+{0x74,0x9de3bf98},\r
+{0x78,0x03000018},\r
+{0x7c,0xb6106254},\r
+{0xf0,0x72},\r
+{0x00,0xb810625c},\r
+{0x04,0x96106258},\r
+{0x08,0xc2002274},\r
+{0x0c,0x80a06000},\r
+{0x10,0x832e2003},\r
+{0x14,0x82204018},\r
+{0x18,0x82004001},\r
+{0x1c,0x82004019},\r
+{0x20,0xb12e2006},\r
+{0x24,0xbb2e6006},\r
+{0x28,0xb5286002},\r
+{0x2c,0xb0063fe0},\r
+{0x30,0x9a066001},\r
+{0x34,0x98066002},\r
+{0x38,0x9f2e2010},\r
+{0x3c,0x02800020},\r
+{0x40,0x82077fe0},\r
+{0x44,0xfa06801b},\r
+{0x48,0xf806801c},\r
+{0x4c,0xf406800b},\r
+{0x50,0x8207401a},\r
+{0x54,0xb610001d},\r
+{0x58,0x80a7401c},\r
+{0x5c,0x04800003},\r
+{0x60,0xb000401c},\r
+{0x64,0xb610001c},\r
+{0x68,0x8227401b},\r
+{0x6c,0xba26801b},\r
+{0x70,0xba5f400d},\r
+{0x74,0x82584019},\r
+{0x78,0x8200401d},\r
+{0x7c,0xb827001b},\r
+{0xf0,0x73},\r
+{0x00,0xb85f000c},\r
+{0x04,0xba06c01b},\r
+{0x08,0x8200401c},\r
+{0x0c,0xba07401b},\r
+{0x10,0xba26001d},\r
+{0x14,0x83286006},\r
+{0x18,0x9b38601f},\r
+{0x1c,0x81836000},\r
+{0x20,0x01000000},\r
+{0x24,0x01000000},\r
+{0x28,0x01000000},\r
+{0x2c,0x8278401d},\r
+{0x30,0x82807fa0},\r
+{0x34,0x2c800002},\r
+{0x38,0x82102000},\r
+{0x3c,0xb003c001},\r
+{0x40,0xb0263000},\r
+{0x44,0x81c7e008},\r
+{0x48,0x81e80000},\r
+{0x4c,0x9de3bf98},\r
+{0x50,0xa2102000},\r
+{0x54,0xc2002514},\r
+{0x58,0x80a44001},\r
+{0x5c,0x1a800029},\r
+{0x60,0xa12c6002},\r
+{0x64,0xda042768},\r
+{0x68,0x93336010},\r
+{0x6c,0x8333600c},\r
+{0x70,0x900b6fff},\r
+{0x74,0x80886001},\r
+{0x78,0x02800006},\r
+{0x7c,0x920a6fff},\r
+{0xf0,0x74},\r
+{0x00,0x7fffffbd},\r
+{0x04,0xa2046001},\r
+{0x08,0x1080001a},\r
+{0x0c,0xd0242768},\r
+{0x10,0x80a36000},\r
+{0x14,0x22800017},\r
+{0x18,0xa2046001},\r
+{0x1c,0x93336010},\r
+{0x20,0xc200246c},\r
+{0x24,0x98100009},\r
+{0x28,0x9f33600e},\r
+{0x2c,0x80a06000},\r
+{0x30,0x900b6fff},\r
+{0x34,0x920a6fff},\r
+{0x38,0x0280000c},\r
+{0x3c,0x94100011},\r
+{0x40,0x808be001},\r
+{0x44,0x12800005},\r
+{0x48,0x96102002},\r
+{0x4c,0x920b2fff},\r
+{0x50,0x94100011},\r
+{0x54,0x96102001},\r
+{0x58,0x7fffff2e},\r
+{0x5c,0xa2046001},\r
+{0x60,0x10800005},\r
+{0x64,0xc2002514},\r
+{0x68,0x7ffff99f},\r
+{0x6c,0xa2046001},\r
+{0x70,0xc2002514},\r
+{0x74,0x80a44001},\r
+{0x78,0x0abfffdb},\r
+{0x7c,0xa12c6002},\r
+{0xf0,0x75},\r
+{0x00,0x81c7e008},\r
+{0x04,0x81e80000},\r
+{0x08,0x9de3bf98},\r
+{0x0c,0x9e102000},\r
+{0x10,0x832be002},\r
+{0x14,0xfa006768},\r
+{0x18,0x80a76000},\r
+{0x1c,0x2280002e},\r
+{0x20,0x9e03e001},\r
+{0x24,0x83376010},\r
+{0x28,0xba0f6fff},\r
+{0x2c,0x82086fff},\r
+{0x30,0xb403e001},\r
+{0x34,0x98076020},\r
+{0x38,0x96006020},\r
+{0x3c,0x80a6a009},\r
+{0x40,0x9a007fe0},\r
+{0x44,0xba077fe0},\r
+{0x48,0x18800022},\r
+{0x4c,0x832ea002},\r
+{0x50,0xf8006768},\r
+{0x54,0x80a72000},\r
+{0x58,0x2280001c},\r
+{0x5c,0xb406a001},\r
+{0x60,0xb7372010},\r
+{0x64,0xb60eefff},\r
+{0x68,0xb20f2fff},\r
+{0x6c,0x80a6c00d},\r
+{0x70,0x14800003},\r
+{0x74,0xb0102001},\r
+{0x78,0xb0102000},\r
+{0x7c,0x80a6c00b},\r
+{0xf0,0x76},\r
+{0x00,0x06800003},\r
+{0x04,0xb8102001},\r
+{0x08,0xb8102000},\r
+{0x0c,0x808e001c},\r
+{0x10,0x2280000e},\r
+{0x14,0xb406a001},\r
+{0x18,0x80a6401d},\r
+{0x1c,0x14800003},\r
+{0x20,0xb6102001},\r
+{0x24,0xb6102000},\r
+{0x28,0x80a6400c},\r
+{0x2c,0x06800003},\r
+{0x30,0xb8102001},\r
+{0x34,0xb8102000},\r
+{0x38,0x808ec01c},\r
+{0x3c,0x32800002},\r
+{0x40,0xc0206768},\r
+{0x44,0xb406a001},\r
+{0x48,0x10bfffe0},\r
+{0x4c,0x80a6a009},\r
+{0x50,0x9e03e001},\r
+{0x54,0x80a3e009},\r
+{0x58,0x08bfffcf},\r
+{0x5c,0x832be002},\r
+{0x60,0x81c7e008},\r
+{0x64,0x81e80000},\r
+{0x68,0xc2002510},\r
+{0x6c,0x82006001},\r
+{0x70,0x80a06008},\r
+{0x74,0x08800003},\r
+{0x78,0xc2202510},\r
+{0x7c,0xc0202510},\r
+{0xf0,0x77},\r
+{0x00,0xd8002510},\r
+{0x04,0x96102000},\r
+{0x08,0x832b2002},\r
+{0x0c,0x8200400c},\r
+{0x10,0x83286003},\r
+{0x14,0x82006600},\r
+{0x18,0x9b2ae002},\r
+{0x1c,0x80a32000},\r
+{0x20,0xc2236790},\r
+{0x24,0x12800003},\r
+{0x28,0x98033fff},\r
+{0x2c,0x98102008},\r
+{0x30,0x9602e001},\r
+{0x34,0x80a2e008},\r
+{0x38,0x04bffff5},\r
+{0x3c,0x832b2002},\r
+{0x40,0x0303ffc7},\r
+{0x44,0x921063ff},\r
+{0x48,0x98102000},\r
+{0x4c,0x96102000},\r
+{0x50,0x9b2ae002},\r
+{0x54,0xc2036768},\r
+{0x58,0x82084009},\r
+{0x5c,0x9602e001},\r
+{0x60,0x952b2002},\r
+{0x64,0x80a06000},\r
+{0x68,0x02800004},\r
+{0x6c,0xc2236768},\r
+{0x70,0x98032001},\r
+{0x74,0xc222a768},\r
+{0x78,0x80a2e009},\r
+{0x7c,0x24bffff6},\r
+{0xf0,0x78},\r
+{0x00,0x9b2ae002},\r
+{0x04,0x9610000c},\r
+{0x08,0x80a32009},\r
+{0x0c,0x14800007},\r
+{0x10,0xd8202514},\r
+{0x14,0x832ae002},\r
+{0x18,0x9602e001},\r
+{0x1c,0x80a2e009},\r
+{0x20,0x04bffffd},\r
+{0x24,0xc0206768},\r
+{0x28,0x81c3e008},\r
+{0x2c,0x01000000},\r
+{0x30,0x9de3bf98},\r
+{0x34,0xc20022f4},\r
+{0x38,0x80a06000},\r
+{0x3c,0x02800049},\r
+{0x40,0xb0102000},\r
+{0x44,0xc2002514},\r
+{0x48,0x80a60001},\r
+{0x4c,0x1a800045},\r
+{0x50,0x033c003f},\r
+{0x54,0x9e1063ff},\r
+{0x58,0xb52e2002},\r
+{0x5c,0xfa06a768},\r
+{0x60,0x8337600c},\r
+{0x64,0x80886001},\r
+{0x68,0x3280003a},\r
+{0x6c,0xb0062001},\r
+{0x70,0xb9376010},\r
+{0x74,0xb80f2fff},\r
+{0x78,0x80a7201f},\r
+{0x7c,0x2880001a},\r
+{0xf0,0x79},\r
+{0x00,0xfa06a768},\r
+{0x04,0xc2002300},\r
+{0x08,0x83286006},\r
+{0x0c,0x82007fe0},\r
+{0x10,0x80a70001},\r
+{0x14,0x38800014},\r
+{0x18,0xfa06a768},\r
+{0x1c,0x808f2020},\r
+{0x20,0x02800008},\r
+{0x24,0xb60f3fe0},\r
+{0x28,0x8238001c},\r
+{0x2c,0x8208601f},\r
+{0x30,0xc20862d4},\r
+{0x34,0x8226c001},\r
+{0x38,0x10800005},\r
+{0x3c,0x8200601f},\r
+{0x40,0x820f201f},\r
+{0x44,0xc20862d4},\r
+{0x48,0x8206c001},\r
+{0x4c,0x82086fff},\r
+{0x50,0x83286010},\r
+{0x54,0xba0f400f},\r
+{0x58,0xba174001},\r
+{0x5c,0xfa26a768},\r
+{0x60,0xfa06a768},\r
+{0x64,0xb80f6fff},\r
+{0x68,0x80a7201f},\r
+{0x6c,0x28800019},\r
+{0x70,0xb0062001},\r
+{0x74,0xc2002308},\r
+{0x78,0x83286006},\r
+{0x7c,0x82007fe0},\r
+{0xf0,0x7a},\r
+{0x00,0x80a70001},\r
+{0x04,0x38800013},\r
+{0x08,0xb0062001},\r
+{0x0c,0x808f6020},\r
+{0x10,0xb60f6fe0},\r
+{0x14,0x02800008},\r
+{0x18,0xb20f7000},\r
+{0x1c,0x8238001c},\r
+{0x20,0x8208601f},\r
+{0x24,0xc2086254},\r
+{0x28,0x8226c001},\r
+{0x2c,0x10800005},\r
+{0x30,0x8200601f},\r
+{0x34,0x820f601f},\r
+{0x38,0xc2086254},\r
+{0x3c,0x8206c001},\r
+{0x40,0x82086fff},\r
+{0x44,0x82164001},\r
+{0x48,0xc226a768},\r
+{0x4c,0xb0062001},\r
+{0x50,0xc2002514},\r
+{0x54,0x80a60001},\r
+{0x58,0x0abfffc1},\r
+{0x5c,0xb52e2002},\r
+{0x60,0x81c7e008},\r
+{0x64,0x81e80000},\r
+{0x68,0x912a2002},\r
+{0x6c,0xc2002794},\r
+{0x70,0xda004008},\r
+{0x74,0x033c003c},\r
+{0x78,0x822b4001},\r
+{0x7c,0x98102790},\r
+{0xf0,0x7b},\r
+{0x00,0xda030000},\r
+{0x04,0xc2234008},\r
+{0x08,0xd8030000},\r
+{0x0c,0xda030008},\r
+{0x10,0x03000020},\r
+{0x14,0x822b4001},\r
+{0x18,0x81c3e008},\r
+{0x1c,0xc2230008},\r
+{0x20,0x912a2002},\r
+{0x24,0xc2002790},\r
+{0x28,0xc0204008},\r
+{0x2c,0xc2002794},\r
+{0x30,0xc2104008},\r
+{0x34,0xda002798},\r
+{0x38,0xda134008},\r
+{0x3c,0x82086fff},\r
+{0x40,0x94004001},\r
+{0x44,0x9a0b6fff},\r
+{0x48,0x80a2800d},\r
+{0x4c,0x18800003},\r
+{0x50,0x9422800d},\r
+{0x54,0x94102000},\r
+{0x58,0xd6002790},\r
+{0x5c,0x9a0aafff},\r
+{0x60,0xd802c008},\r
+{0x64,0x0303ffc0},\r
+{0x68,0x9b2b6010},\r
+{0x6c,0x822b0001},\r
+{0x70,0x8210400d},\r
+{0x74,0xc222c008},\r
+{0x78,0xc2002794},\r
+{0x7c,0xc2004008},\r
+{0xf0,0x7c},\r
+{0x00,0xda002798},\r
+{0x04,0xda034008},\r
+{0x08,0x82086fff},\r
+{0x0c,0x94004001},\r
+{0x10,0x9a0b6fff},\r
+{0x14,0x80a2800d},\r
+{0x18,0x18800003},\r
+{0x1c,0x9422800d},\r
+{0x20,0x94102000},\r
+{0x24,0xd8002790},\r
+{0x28,0xc2030008},\r
+{0x2c,0x9a0aafff},\r
+{0x30,0x82087000},\r
+{0x34,0x8210400d},\r
+{0x38,0xc2230008},\r
+{0x3c,0xd8002790},\r
+{0x40,0xc2030008},\r
+{0x44,0x1b000020},\r
+{0x48,0x8210400d},\r
+{0x4c,0x81c3e008},\r
+{0x50,0xc2230008},\r
+{0x54,0x912a2002},\r
+{0x58,0xc2002790},\r
+{0x5c,0xc0204008},\r
+{0x60,0xc2002794},\r
+{0x64,0xda104008},\r
+{0x68,0xc200279c},\r
+{0x6c,0xd6104008},\r
+{0x70,0xc2002798},\r
+{0x74,0x9a0b6fff},\r
+{0x78,0xd8104008},\r
+{0x7c,0x832b6002},\r
+{0xf0,0x7d},\r
+{0x00,0x8200400d},\r
+{0x04,0x960aefff},\r
+{0x08,0x980b2fff},\r
+{0x0c,0x8200400b},\r
+{0x10,0x992b2002},\r
+{0x14,0x80a0400c},\r
+{0x18,0x18800003},\r
+{0x1c,0x8220400c},\r
+{0x20,0x82102000},\r
+{0x24,0xd6002790},\r
+{0x28,0x9b306001},\r
+{0x2c,0xd802c008},\r
+{0x30,0x9a0b6fff},\r
+{0x34,0x0303ffc0},\r
+{0x38,0x822b0001},\r
+{0x3c,0x9b2b6010},\r
+{0x40,0x8210400d},\r
+{0x44,0xc222c008},\r
+{0x48,0xc2002794},\r
+{0x4c,0xda004008},\r
+{0x50,0xc200279c},\r
+{0x54,0xd6004008},\r
+{0x58,0xc2002798},\r
+{0x5c,0x9a0b6fff},\r
+{0x60,0xd8004008},\r
+{0x64,0x832b6002},\r
+{0x68,0x8200400d},\r
+{0x6c,0x960aefff},\r
+{0x70,0x980b2fff},\r
+{0x74,0x8200400b},\r
+{0x78,0x992b2002},\r
+{0x7c,0x80a0400c},\r
+{0xf0,0x7e},\r
+{0x00,0x18800003},\r
+{0x04,0x8220400c},\r
+{0x08,0x82102000},\r
+{0x0c,0xd8002790},\r
+{0x10,0x9b306001},\r
+{0x14,0xc2030008},\r
+{0x18,0x9a0b6fff},\r
+{0x1c,0x82087000},\r
+{0x20,0x8210400d},\r
+{0x24,0xc2230008},\r
+{0x28,0xd8002790},\r
+{0x2c,0xc2030008},\r
+{0x30,0x1b000020},\r
+{0x34,0x8210400d},\r
+{0x38,0x81c3e008},\r
+{0x3c,0xc2230008},\r
+{0x40,0x9de3bf98},\r
+{0x44,0xa2102000},\r
+{0x48,0xa12c6002},\r
+{0x4c,0xc2002794},\r
+{0x50,0xc2004010},\r
+{0x54,0x80a06000},\r
+{0x58,0x0280001f},\r
+{0x5c,0x0303ffc3},\r
+{0x60,0xc2002798},\r
+{0x64,0xc2004010},\r
+{0x68,0x80a06000},\r
+{0x6c,0x0280000c},\r
+{0x70,0x01000000},\r
+{0x74,0x8330600d},\r
+{0x78,0x80886001},\r
+{0x7c,0x12800008},\r
+{0xf0,0x7f},\r
+{0x00,0x01000000},\r
+{0x04,0xc200279c},\r
+{0x08,0xda004010},\r
+{0x0c,0x8333600d},\r
+{0x10,0x80886001},\r
+{0x14,0x02800006},\r
+{0x18,0x80a36000},\r
+{0x1c,0x7fffff73},\r
+{0x20,0x90100011},\r
+{0x24,0x10800010},\r
+{0x28,0xc2002794},\r
+{0x2c,0x02800006},\r
+{0x30,0x01000000},\r
+{0x34,0x7fffffa8},\r
+{0x38,0x90100011},\r
+{0x3c,0x1080000a},\r
+{0x40,0xc2002794},\r
+{0x44,0x7fffff77},\r
+{0x48,0x90100011},\r
+{0x4c,0x10800006},\r
+{0x50,0xc2002794},\r
+{0x54,0x821063ff},\r
+{0x58,0xda002790},\r
+{0x5c,0xc2234010},\r
+{0x60,0xc2002794},\r
+{0x64,0xc2004010},\r
+{0x68,0x8330600c},\r
+{0x6c,0x80886001},\r
+{0x70,0x02800007},\r
+{0x74,0xa2046001},\r
+{0x78,0xc2002790},\r
+{0x7c,0xda004010},\r
+{0xf0,0x80},\r
+{0x00,0x19000004},\r
+{0x04,0x9a13400c},\r
+{0x08,0xda204010},\r
+{0x0c,0x80a46009},\r
+{0x10,0x04bfffcf},\r
+{0x14,0xa12c6002},\r
+{0x18,0x81c7e008},\r
+{0x1c,0x81e80000},\r
+{0x20,0xd6020000},\r
+{0x24,0xd8024000},\r
+{0x28,0x9132e010},\r
+{0x2c,0x95332010},\r
+{0x30,0x900a2fff},\r
+{0x34,0x940aafff},\r
+{0x38,0x03000007},\r
+{0x3c,0x9a22000a},\r
+{0x40,0x821063ff},\r
+{0x44,0x940b0001},\r
+{0x48,0x900ac001},\r
+{0x4c,0x9022000a},\r
+{0x50,0x9a5b400d},\r
+{0x54,0x905a0008},\r
+{0x58,0x81c3e008},\r
+{0x5c,0x90034008},\r
+{0x60,0x031fffff},\r
+{0x64,0x9002200c},\r
+{0x68,0x821063ff},\r
+{0x6c,0x9a102063},\r
+{0x70,0xc2220000},\r
+{0x74,0x9a837fff},\r
+{0x78,0x1cbffffe},\r
+{0x7c,0x90022004},\r
+{0xf0,0x81},\r
+{0x00,0x81c3e008},\r
+{0x04,0x01000000},\r
+{0x08,0x031fffff},\r
+{0x0c,0x821063ff},\r
+{0x10,0xc2222008},\r
+{0x14,0x92102000},\r
+{0x18,0x96100008},\r
+{0x1c,0x94102000},\r
+{0x20,0x9a02e00c},\r
+{0x24,0xd8034000},\r
+{0x28,0xc2022008},\r
+{0x2c,0x80a30001},\r
+{0x30,0x16800005},\r
+{0x34,0x9a036004},\r
+{0x38,0xd8222008},\r
+{0x3c,0xd4220000},\r
+{0x40,0xd2222004},\r
+{0x44,0x9402a001},\r
+{0x48,0x80a2a009},\r
+{0x4c,0x24bffff7},\r
+{0x50,0xd8034000},\r
+{0x54,0x92026001},\r
+{0x58,0x80a26009},\r
+{0x5c,0x04bffff0},\r
+{0x60,0x9602e028},\r
+{0x64,0xda022008},\r
+{0x68,0x03200000},\r
+{0x6c,0x8238400d},\r
+{0x70,0x80a00001},\r
+{0x74,0x81c3e008},\r
+{0x78,0x90402000},\r
+{0x7c,0xc2022004},\r
+{0xf0,0x82},\r
+{0x00,0x9b286002},\r
+{0x04,0x9a034001},\r
+{0x08,0x031fffff},\r
+{0x0c,0x9b2b6003},\r
+{0x10,0x9a034008},\r
+{0x14,0x981063ff},\r
+{0x18,0x9a03600c},\r
+{0x1c,0x82102009},\r
+{0x20,0xd8234000},\r
+{0x24,0x82807fff},\r
+{0x28,0x1cbffffe},\r
+{0x2c,0x9a036004},\r
+{0x30,0xc2020000},\r
+{0x34,0x83286002},\r
+{0x38,0x82004008},\r
+{0x3c,0x8200600c},\r
+{0x40,0x9a102009},\r
+{0x44,0xd8204000},\r
+{0x48,0x9a837fff},\r
+{0x4c,0x1cbffffe},\r
+{0x50,0x82006028},\r
+{0x54,0x81c3e008},\r
+{0x58,0x01000000},\r
+{0x5c,0x98100008},\r
+{0x60,0x90102008},\r
+{0x64,0x9a102100},\r
+{0x68,0x832b4008},\r
+{0x6c,0x80a30001},\r
+{0x70,0x14800006},\r
+{0x74,0x01000000},\r
+{0x78,0x90023fff},\r
+{0x7c,0x80a22000},\r
+{0xf0,0x83},\r
+{0x00,0x14bffffb},\r
+{0x04,0x832b4008},\r
+{0x08,0x81c3e008},\r
+{0x0c,0x01000000},\r
+{0x10,0x9de3bdd0},\r
+{0x14,0xae07be58},\r
+{0x18,0x7fffffb2},\r
+{0x1c,0x90100017},\r
+{0x20,0xa6102000},\r
+{0x24,0xa12ce002},\r
+{0x28,0xd2002790},\r
+{0x2c,0xc2024010},\r
+{0x30,0x8330600f},\r
+{0x34,0x80886001},\r
+{0x38,0x2280000f},\r
+{0x3c,0xd000245c},\r
+{0x40,0xc2002794},\r
+{0x44,0x90004010},\r
+{0x48,0xc2004010},\r
+{0x4c,0x8330600d},\r
+{0x50,0x80886001},\r
+{0x54,0x02800004},\r
+{0x58,0x92024010},\r
+{0x5c,0x10800006},\r
+{0x60,0xd000245c},\r
+{0x64,0x7fffff8f},\r
+{0x68,0x01000000},\r
+{0x6c,0x7fffffdc},\r
+{0x70,0x01000000},\r
+{0x74,0xc2002358},\r
+{0x78,0x9807bff8},\r
+{0x7c,0x825a0001},\r
+{0xf0,0x84},\r
+{0x00,0x9a04000c},\r
+{0x04,0xa604e001},\r
+{0x08,0x80a4e009},\r
+{0x0c,0x04bfffe6},\r
+{0x10,0xc2237e38},\r
+{0x14,0xac10000c},\r
+{0x18,0xa6102000},\r
+{0x1c,0xa8102000},\r
+{0x20,0xea002790},\r
+{0x24,0x0303ffc3},\r
+{0x28,0xda054014},\r
+{0x2c,0x821063ff},\r
+{0x30,0x80a34001},\r
+{0x34,0x22800014},\r
+{0x38,0xa604e001},\r
+{0x3c,0xa2102000},\r
+{0x40,0xc2002514},\r
+{0x44,0x80a44001},\r
+{0x48,0x3a80000f},\r
+{0x4c,0xa604e001},\r
+{0x50,0xa005be6c},\r
+{0x54,0xa4102768},\r
+{0x58,0x90100012},\r
+{0x5c,0x7fffff71},\r
+{0x60,0x92054014},\r
+{0x64,0xd0240000},\r
+{0x68,0xa2046001},\r
+{0x6c,0xc2002514},\r
+{0x70,0x80a44001},\r
+{0x74,0xa404a004},\r
+{0x78,0x0abffff8},\r
+{0x7c,0xa0042028},\r
+{0xf0,0x85},\r
+{0x00,0xa604e001},\r
+{0x04,0xa8052004},\r
+{0x08,0x80a4e009},\r
+{0x0c,0x04bfffe5},\r
+{0x10,0xac05a004},\r
+{0x14,0xa2102000},\r
+{0x18,0xc2002514},\r
+{0x1c,0x80a44001},\r
+{0x20,0x1a80002d},\r
+{0x24,0x01000000},\r
+{0x28,0x7fffff78},\r
+{0x2c,0x90100017},\r
+{0x30,0x80a22000},\r
+{0x34,0xa0046001},\r
+{0x38,0x02800027},\r
+{0x3c,0x90100017},\r
+{0x40,0xd807be58},\r
+{0x44,0x832b2002},\r
+{0x48,0x8200401e},\r
+{0x4c,0xc2007e30},\r
+{0x50,0xda002230},\r
+{0x54,0x9a034001},\r
+{0x58,0xc2002548},\r
+{0x5c,0x9a5b4001},\r
+{0x60,0xc2002334},\r
+{0x64,0x82006001},\r
+{0x68,0x81800000},\r
+{0x6c,0x01000000},\r
+{0x70,0x01000000},\r
+{0x74,0x01000000},\r
+{0x78,0x9a734001},\r
+{0x7c,0xc207be60},\r
+{0xf0,0x86},\r
+{0x00,0x80a0400d},\r
+{0x04,0x98032001},\r
+{0x08,0xc207be5c},\r
+{0x0c,0x992b201c},\r
+{0x10,0x0a800007},\r
+{0x14,0x95286002},\r
+{0x18,0xc202a768},\r
+{0x1c,0x1b3c0000},\r
+{0x20,0x8210400d},\r
+{0x24,0x10800008},\r
+{0x28,0xc222a768},\r
+{0x2c,0xda02a768},\r
+{0x30,0x033c0000},\r
+{0x34,0x822b4001},\r
+{0x38,0x8210400c},\r
+{0x3c,0x7fffff70},\r
+{0x40,0xc222a768},\r
+{0x44,0xc2002514},\r
+{0x48,0x80a40001},\r
+{0x4c,0x0abfffd7},\r
+{0x50,0xa2100010},\r
+{0x54,0x81c7e008},\r
+{0x58,0x81e80000},\r
+{0x5c,0x92102000},\r
+{0x60,0xc2002514},\r
+{0x64,0x80a24001},\r
+{0x68,0x1a800037},\r
+{0x6c,0x0303ffff},\r
+{0x70,0x901063ff},\r
+{0x74,0x952a6002},\r
+{0x78,0xc202a768},\r
+{0x7c,0x8330601c},\r
+{0xf0,0x87},\r
+{0x00,0x80a00001},\r
+{0x04,0x9a603fff},\r
+{0x08,0x8218600f},\r
+{0x0c,0x80a00001},\r
+{0x10,0x82603fff},\r
+{0x14,0x80934001},\r
+{0x18,0x22800027},\r
+{0x1c,0x92026001},\r
+{0x20,0x9a102001},\r
+{0x24,0x96102000},\r
+{0x28,0x992ae002},\r
+{0x2c,0xc2032768},\r
+{0x30,0x8330601c},\r
+{0x34,0x80a0400d},\r
+{0x38,0x02800013},\r
+{0x3c,0x80a2e00a},\r
+{0x40,0xc2002794},\r
+{0x44,0xc200400c},\r
+{0x48,0x8330601c},\r
+{0x4c,0x80a0400d},\r
+{0x50,0x0280000d},\r
+{0x54,0x80a2e00a},\r
+{0x58,0xc2002798},\r
+{0x5c,0xc200400c},\r
+{0x60,0x8330601c},\r
+{0x64,0x80a0400d},\r
+{0x68,0x02800007},\r
+{0x6c,0x80a2e00a},\r
+{0x70,0x9602e001},\r
+{0x74,0x80a2e009},\r
+{0x78,0x08bfffed},\r
+{0x7c,0x992ae002},\r
+{0xf0,0x88},\r
+{0x00,0x80a2e00a},\r
+{0x04,0x22800007},\r
+{0x08,0xc202a768},\r
+{0x0c,0x9a036001},\r
+{0x10,0x80a3600a},\r
+{0x14,0x08bfffe5},\r
+{0x18,0x96102000},\r
+{0x1c,0xc202a768},\r
+{0x20,0x9b2b601c},\r
+{0x24,0x82084008},\r
+{0x28,0x8210400d},\r
+{0x2c,0xc222a768},\r
+{0x30,0x92026001},\r
+{0x34,0xc2002514},\r
+{0x38,0x80a24001},\r
+{0x3c,0x0abfffcf},\r
+{0x40,0x952a6002},\r
+{0x44,0x81c3e008},\r
+{0x48,0x01000000},\r
+{0x4c,0x98102000},\r
+{0x50,0x9b2b2002},\r
+{0x54,0x98032001},\r
+{0x58,0xc2002790},\r
+{0x5c,0x80a32009},\r
+{0x60,0x08bffffc},\r
+{0x64,0xc020400d},\r
+{0x68,0x98102000},\r
+{0x6c,0xc2002514},\r
+{0x70,0x80a30001},\r
+{0x74,0x1a800012},\r
+{0x78,0x033fffc7},\r
+{0x7c,0x941063ff},\r
+{0xf0,0x89},\r
+{0x00,0x832b2002},\r
+{0x04,0xda006768},\r
+{0x08,0x8333601c},\r
+{0x0c,0x82007fff},\r
+{0x10,0x98032001},\r
+{0x14,0x80a06009},\r
+{0x18,0x97286002},\r
+{0x1c,0x18800004},\r
+{0x20,0x9a0b400a},\r
+{0x24,0xc2002790},\r
+{0x28,0xda20400b},\r
+{0x2c,0xc2002514},\r
+{0x30,0x80a30001},\r
+{0x34,0x0abffff4},\r
+{0x38,0x832b2002},\r
+{0x3c,0x81c3e008},\r
+{0x40,0x01000000},\r
+{0x44,0x9de3bf98},\r
+{0x48,0x92102000},\r
+{0x4c,0x94026001},\r
+{0x50,0x80a2a009},\r
+{0x54,0x18800068},\r
+{0x58,0x9610000a},\r
+{0x5c,0x033c003f},\r
+{0x60,0x901063ff},\r
+{0x64,0xf6002790},\r
+{0x68,0xb32ae002},\r
+{0x6c,0xfa06c019},\r
+{0x70,0x80a76000},\r
+{0x74,0x2280005c},\r
+{0x78,0x9602e001},\r
+{0x7c,0xb52a6002},\r
+{0xf0,0x8a},\r
+{0x00,0xc206c01a},\r
+{0x04,0x80a06000},\r
+{0x08,0x22800057},\r
+{0x0c,0x9602e001},\r
+{0x10,0xda002794},\r
+{0x14,0xf0034019},\r
+{0x18,0x80a62000},\r
+{0x1c,0x22800052},\r
+{0x20,0x9602e001},\r
+{0x24,0xf803401a},\r
+{0x28,0x80a72000},\r
+{0x2c,0x2280004e},\r
+{0x30,0x9602e001},\r
+{0x34,0x83306010},\r
+{0x38,0xbb376010},\r
+{0x3c,0x98086fff},\r
+{0x40,0x9e0f6fff},\r
+{0x44,0x80a3000f},\r
+{0x48,0x16800009},\r
+{0x4c,0xbb372010},\r
+{0x50,0x83362010},\r
+{0x54,0xba0f6fff},\r
+{0x58,0x82086fff},\r
+{0x5c,0x80a74001},\r
+{0x60,0x3480000d},\r
+{0x64,0xc206c01a},\r
+{0x68,0x80a3000f},\r
+{0x6c,0x2480003e},\r
+{0x70,0x9602e001},\r
+{0x74,0xbb372010},\r
+{0x78,0x83362010},\r
+{0x7c,0xba0f6fff},\r
+{0xf0,0x8b},\r
+{0x00,0x82086fff},\r
+{0x04,0x80a74001},\r
+{0x08,0x36800037},\r
+{0x0c,0x9602e001},\r
+{0x10,0xc206c01a},\r
+{0x14,0xfa06c019},\r
+{0x18,0xb0086fff},\r
+{0x1c,0xb80f6fff},\r
+{0x20,0x80a6001c},\r
+{0x24,0x1680000a},\r
+{0x28,0x01000000},\r
+{0x2c,0xfa034019},\r
+{0x30,0xc203401a},\r
+{0x34,0x82086fff},\r
+{0x38,0xba0f6fff},\r
+{0x3c,0x80a0401d},\r
+{0x40,0x3480000e},\r
+{0x44,0xfa16c01a},\r
+{0x48,0x80a6001c},\r
+{0x4c,0x24800026},\r
+{0x50,0x9602e001},\r
+{0x54,0xc2002794},\r
+{0x58,0xfa004019},\r
+{0x5c,0xc200401a},\r
+{0x60,0x82086fff},\r
+{0x64,0xba0f6fff},\r
+{0x68,0x80a0401d},\r
+{0x6c,0x3680001e},\r
+{0x70,0x9602e001},\r
+{0x74,0xfa16c01a},\r
+{0x78,0xf806c019},\r
+{0x7c,0xba0f6fff},\r
+{0xf0,0x8c},\r
+{0x00,0xbb2f6010},\r
+{0x04,0x820f0008},\r
+{0x08,0x8210401d},\r
+{0x0c,0xc226c019},\r
+{0x10,0xf6002790},\r
+{0x14,0xc206c01a},\r
+{0x18,0x3b03ffc0},\r
+{0x1c,0xb80f001d},\r
+{0x20,0x82084008},\r
+{0x24,0x8210401c},\r
+{0x28,0xc226c01a},\r
+{0x2c,0xf8002790},\r
+{0x30,0xf6070019},\r
+{0x34,0xfa07001a},\r
+{0x38,0xba0f6fff},\r
+{0x3c,0x820ef000},\r
+{0x40,0x8210401d},\r
+{0x44,0xc2270019},\r
+{0x48,0xfa002790},\r
+{0x4c,0xc207401a},\r
+{0x50,0x82087000},\r
+{0x54,0xb60eefff},\r
+{0x58,0x8210401b},\r
+{0x5c,0xc227401a},\r
+{0x60,0x9602e001},\r
+{0x64,0x80a2e009},\r
+{0x68,0x28bfffa0},\r
+{0x6c,0xf6002790},\r
+{0x70,0x80a2a009},\r
+{0x74,0x08bfff96},\r
+{0x78,0x9210000a},\r
+{0x7c,0x81c7e008},\r
+{0xf0,0x8d},\r
+{0x00,0x81e80000},\r
+{0x04,0x9de3bf98},\r
+{0x08,0xa6102000},\r
+{0x0c,0xda002244},\r
+{0x10,0x80a36000},\r
+{0x14,0x02800033},\r
+{0x18,0xa12ce002},\r
+{0x1c,0xe4002790},\r
+{0x20,0xc2048010},\r
+{0x24,0x80a06000},\r
+{0x28,0x22800004},\r
+{0x2c,0xc204282c},\r
+{0x30,0x1080002c},\r
+{0x34,0xc024282c},\r
+{0x38,0x80a06000},\r
+{0x3c,0x2280000b},\r
+{0x40,0xc2002518},\r
+{0x44,0xc2002794},\r
+{0x48,0xc2004010},\r
+{0x4c,0x1b000008},\r
+{0x50,0x8210400d},\r
+{0x54,0xc2248010},\r
+{0x58,0xc204282c},\r
+{0x5c,0x82007fff},\r
+{0x60,0x10800020},\r
+{0x64,0xc224282c},\r
+{0x68,0x80a0400d},\r
+{0x6c,0x2a80001e},\r
+{0x70,0xa604e001},\r
+{0x74,0xe2002794},\r
+{0x78,0xc2044010},\r
+{0x7c,0x80a06000},\r
+{0xf0,0x8e},\r
+{0x00,0x22800019},\r
+{0x04,0xa604e001},\r
+{0x08,0x8330600d},\r
+{0x0c,0x80886001},\r
+{0x10,0x32800015},\r
+{0x14,0xa604e001},\r
+{0x18,0xd2002798},\r
+{0x1c,0xc2024010},\r
+{0x20,0x80a06000},\r
+{0x24,0x22800010},\r
+{0x28,0xa604e001},\r
+{0x2c,0x92024010},\r
+{0x30,0x7ffffe3c},\r
+{0x34,0x90044010},\r
+{0x38,0xc200224c},\r
+{0x3c,0x80a20001},\r
+{0x40,0x38800009},\r
+{0x44,0xa604e001},\r
+{0x48,0xc2002248},\r
+{0x4c,0xc224282c},\r
+{0x50,0xc2044010},\r
+{0x54,0x1b000008},\r
+{0x58,0x8210400d},\r
+{0x5c,0xc2248010},\r
+{0x60,0xa604e001},\r
+{0x64,0x80a4e009},\r
+{0x68,0x24bfffca},\r
+{0x6c,0xda002244},\r
+{0x70,0x81c7e008},\r
+{0x74,0x81e80000},\r
+{0x78,0x9de3bf98},\r
+{0x7c,0xc2002514},\r
+{0xf0,0x8f},\r
+{0x00,0x80a06000},\r
+{0x04,0x22800006},\r
+{0x08,0xc2002200},\r
+{0x0c,0xc2002314},\r
+{0x10,0x82200001},\r
+{0x14,0x10800062},\r
+{0x18,0xc2202538},\r
+{0x1c,0x80a06000},\r
+{0x20,0x1280005f},\r
+{0x24,0x01000000},\r
+{0x28,0xfa002314},\r
+{0x2c,0x80a76000},\r
+{0x30,0x0280005b},\r
+{0x34,0x01000000},\r
+{0x38,0xc2002538},\r
+{0x3c,0x82006001},\r
+{0x40,0x80a0401d},\r
+{0x44,0x06800056},\r
+{0x48,0xc2202538},\r
+{0x4c,0x9e102001},\r
+{0x50,0xc20022fc},\r
+{0x54,0x80a3c001},\r
+{0x58,0x18800051},\r
+{0x5c,0xc0202538},\r
+{0x60,0x13000017},\r
+{0x64,0x9a102001},\r
+{0x68,0xc20022f8},\r
+{0x6c,0x80a34001},\r
+{0x70,0x18800046},\r
+{0x74,0xf20be37f},\r
+{0x78,0x0300003f},\r
+{0x7c,0x941063ff},\r
+{0xf0,0x90},\r
+{0x00,0x21000017},\r
+{0x04,0x961263f8},\r
+{0x08,0x901261d0},\r
+{0x0c,0x98102001},\r
+{0x10,0xf8002548},\r
+{0x14,0x80a72008},\r
+{0x18,0xf400234c},\r
+{0x1c,0x08800005},\r
+{0x20,0x82064019},\r
+{0x24,0xc210400b},\r
+{0x28,0x10800003},\r
+{0x2c,0xb6004001},\r
+{0x30,0xf610400b},\r
+{0x34,0xb0064019},\r
+{0x38,0x81800000},\r
+{0x3c,0x01000000},\r
+{0x40,0x01000000},\r
+{0x44,0x01000000},\r
+{0x48,0xba76c01c},\r
+{0x4c,0xc2160008},\r
+{0x50,0xb6a74001},\r
+{0x54,0x22800027},\r
+{0x58,0xc200247c},\r
+{0x5c,0x80a6e000},\r
+{0x60,0x04800007},\r
+{0x64,0x832b001a},\r
+{0x68,0x80a6c001},\r
+{0x6c,0x3480000c},\r
+{0x70,0xb73ec01a},\r
+{0x74,0x1080000a},\r
+{0x78,0xb6102001},\r
+{0x7c,0x36800009},\r
+{0xf0,0x91},\r
+{0x00,0xb41421d0},\r
+{0x04,0x832b001a},\r
+{0x08,0x82200001},\r
+{0x0c,0x80a6c001},\r
+{0x10,0x36800003},\r
+{0x14,0xb6103fff},\r
+{0x18,0xb73ec01a},\r
+{0x1c,0xb41421d0},\r
+{0x20,0xc216001a},\r
+{0x24,0xb606c001},\r
+{0x28,0x808e6001},\r
+{0x2c,0x0280000a},\r
+{0x30,0x83366001},\r
+{0x34,0xb9286002},\r
+{0x38,0xc207001a},\r
+{0x3c,0x3b3fffc0},\r
+{0x40,0x8208401d},\r
+{0x44,0xba0ec00a},\r
+{0x48,0x8200401d},\r
+{0x4c,0x10800008},\r
+{0x50,0xc227001a},\r
+{0x54,0x83286002},\r
+{0x58,0xfa00401a},\r
+{0x5c,0xb92ee010},\r
+{0x60,0xba0f400a},\r
+{0x64,0xb807001d},\r
+{0x68,0xf820401a},\r
+{0x6c,0xc200247c},\r
+{0x70,0xb2064001},\r
+{0x74,0x9a036001},\r
+{0x78,0xc20022f8},\r
+{0x7c,0x80a34001},\r
+{0xf0,0x92},\r
+{0x00,0x28bfffc5},\r
+{0x04,0xf8002548},\r
+{0x08,0x9e03e001},\r
+{0x0c,0xc20022fc},\r
+{0x10,0x80a3c001},\r
+{0x14,0x08bfffb5},\r
+{0x18,0x9a102001},\r
+{0x1c,0x81c7e008},\r
+{0x20,0x81e80000},\r
+{0x24,0xc0202514},\r
+{0x28,0x9a102000},\r
+{0x2c,0x832b6002},\r
+{0x30,0xc2020001},\r
+{0x34,0x80a06000},\r
+{0x38,0x02800005},\r
+{0x3c,0x9a036001},\r
+{0x40,0xc2002514},\r
+{0x44,0x82006001},\r
+{0x48,0xc2202514},\r
+{0x4c,0x80a36009},\r
+{0x50,0x04bffff8},\r
+{0x54,0x832b6002},\r
+{0x58,0x81c3e008},\r
+{0x5c,0x01000000},\r
+{0x60,0x9de3bf98},\r
+{0x64,0xa8102000},\r
+{0x68,0xa0102000},\r
+{0x6c,0xc200235c},\r
+{0x70,0x80a06000},\r
+{0x74,0x32800004},\r
+{0x78,0xc0242768},\r
+{0x7c,0x1080005d},\r
+{0xf0,0x93},\r
+{0x00,0xc2002790},\r
+{0x04,0xc2002790},\r
+{0x08,0xc2004010},\r
+{0x0c,0x80a06000},\r
+{0x10,0x02800019},\r
+{0x14,0xda042854},\r
+{0x18,0x03300000},\r
+{0x1c,0x808b4001},\r
+{0x20,0x32800010},\r
+{0x24,0xc2002790},\r
+{0x28,0xda002514},\r
+{0x2c,0x80a36000},\r
+{0x30,0x22800053},\r
+{0x34,0xa8052001},\r
+{0x38,0x8203400d},\r
+{0x3c,0x8200400d},\r
+{0x40,0x82007ffd},\r
+{0x44,0xda00235c},\r
+{0x48,0x9b334001},\r
+{0x4c,0x9a0b6007},\r
+{0x50,0x03200000},\r
+{0x54,0x9a134001},\r
+{0x58,0xda242854},\r
+{0x5c,0xc2002790},\r
+{0x60,0xc2004010},\r
+{0x64,0x80a06000},\r
+{0x68,0x32800007},\r
+{0x6c,0xc2042854},\r
+{0x70,0xda042854},\r
+{0x74,0x03200000},\r
+{0x78,0x822b4001},\r
+{0x7c,0xc2242854},\r
+{0xf0,0x94},\r
+{0x00,0xc2042854},\r
+{0x04,0x1b300000},\r
+{0x08,0x9a08400d},\r
+{0x0c,0x19200000},\r
+{0x10,0x80a3400c},\r
+{0x14,0x12800019},\r
+{0x18,0xa40860ff},\r
+{0x1c,0x98102000},\r
+{0x20,0x832b2002},\r
+{0x24,0xc2006790},\r
+{0x28,0xc2004010},\r
+{0x2c,0x80a06000},\r
+{0x30,0x0280000b},\r
+{0x34,0x9b30600d},\r
+{0x38,0x808b6001},\r
+{0x3c,0x12800009},\r
+{0x40,0x80a30012},\r
+{0x44,0x98032001},\r
+{0x48,0x80a30012},\r
+{0x4c,0x24bffff6},\r
+{0x50,0x832b2002},\r
+{0x54,0x10800006},\r
+{0x58,0xc2042854},\r
+{0x5c,0x80a30012},\r
+{0x60,0x24800027},\r
+{0x64,0xa8052001},\r
+{0x68,0xc2042854},\r
+{0x6c,0x1b100000},\r
+{0x70,0x8210400d},\r
+{0x74,0xc2242854},\r
+{0x78,0xa32ca002},\r
+{0x7c,0xd0046790},\r
+{0xf0,0x95},\r
+{0x00,0xc2020010},\r
+{0x04,0x80a06000},\r
+{0x08,0x12800006},\r
+{0x0c,0x03100000},\r
+{0x10,0xda042854},\r
+{0x14,0x822b4001},\r
+{0x18,0x10800018},\r
+{0x1c,0xc2242854},\r
+{0x20,0xe6042854},\r
+{0x24,0x8334e01e},\r
+{0x28,0x80886001},\r
+{0x2c,0x22800014},\r
+{0x30,0xa8052001},\r
+{0x34,0x80a4a000},\r
+{0x38,0x2280000e},\r
+{0x3c,0xc2046790},\r
+{0x40,0xd204678c},\r
+{0x44,0x90020010},\r
+{0x48,0x7ffffd56},\r
+{0x4c,0x92024010},\r
+{0x50,0x80a22008},\r
+{0x54,0x34800007},\r
+{0x58,0xc2046790},\r
+{0x5c,0x820cfff0},\r
+{0x60,0x9a04bfff},\r
+{0x64,0x8210400d},\r
+{0x68,0xc2242854},\r
+{0x6c,0xc2046790},\r
+{0x70,0xc2004010},\r
+{0x74,0xc2242768},\r
+{0x78,0xa8052001},\r
+{0x7c,0x80a52009},\r
+{0xf0,0x96},\r
+{0x00,0x04bfff9b},\r
+{0x04,0xa0042004},\r
+{0x08,0x81c7e008},\r
+{0x0c,0x81e80000},\r
+{0x10,0x8332a01f},\r
+{0x14,0x8200400a},\r
+{0x18,0x83386001},\r
+{0x1c,0x80a24001},\r
+{0x20,0x26800015},\r
+{0x24,0x90102000},\r
+{0x28,0x9a024001},\r
+{0x2c,0x80a36008},\r
+{0x30,0x24800004},\r
+{0x34,0x92224001},\r
+{0x38,0x1080000f},\r
+{0x3c,0x90102000},\r
+{0x40,0x80a2400d},\r
+{0x44,0x1480000b},\r
+{0x48,0x912a2002},\r
+{0x4c,0x832a6002},\r
+{0x50,0xc2006790},\r
+{0x54,0xc2004008},\r
+{0x58,0x80a06000},\r
+{0x5c,0x02bffff7},\r
+{0x60,0x92026001},\r
+{0x64,0x80a2400d},\r
+{0x68,0x04bffffa},\r
+{0x6c,0x832a6002},\r
+{0x70,0x90102001},\r
+{0x74,0x81c3e008},\r
+{0x78,0x01000000},\r
+{0x7c,0x9de3bf98},\r
+{0xf0,0x97},\r
+{0x00,0x92100019},\r
+{0x04,0x90100018},\r
+{0x08,0x7fffffe2},\r
+{0x0c,0x9410001a},\r
+{0x10,0xa4100018},\r
+{0x14,0x80a22000},\r
+{0x18,0x12800028},\r
+{0x1c,0x92100019},\r
+{0x20,0xa33ea01f},\r
+{0x24,0x8334601f},\r
+{0x28,0x82068001},\r
+{0x2c,0x83386001},\r
+{0x30,0x80a64001},\r
+{0x34,0x2680000e},\r
+{0x38,0x8334601f},\r
+{0x3c,0x82264001},\r
+{0x40,0x83286002},\r
+{0x44,0xda006790},\r
+{0x48,0x832e2002},\r
+{0x4c,0xc2034001},\r
+{0x50,0x80a06000},\r
+{0x54,0x02800019},\r
+{0x58,0x92103fff},\r
+{0x5c,0x10800004},\r
+{0x60,0x8334601f},\r
+{0x64,0x10800015},\r
+{0x68,0x92100018},\r
+{0x6c,0x82068001},\r
+{0x70,0x83386001},\r
+{0x74,0xa0102001},\r
+{0x78,0x80a40001},\r
+{0x7c,0x1480000e},\r
+{0xf0,0x98},\r
+{0x00,0x90100012},\r
+{0x04,0xb0064010},\r
+{0x08,0x92100018},\r
+{0x0c,0x7fffffc1},\r
+{0x10,0x9410001a},\r
+{0x14,0x8334601f},\r
+{0x18,0x82068001},\r
+{0x1c,0xa0042001},\r
+{0x20,0x80a22000},\r
+{0x24,0x12bffff0},\r
+{0x28,0x83386001},\r
+{0x2c,0x10bffff4},\r
+{0x30,0x80a40001},\r
+{0x34,0x92103fff},\r
+{0x38,0x81c7e008},\r
+{0x3c,0x91e80009},\r
+{0x40,0x9de3bf98},\r
+{0x44,0xa32e2002},\r
+{0x48,0xc20467b4},\r
+{0x4c,0x80a06000},\r
+{0x50,0x0280001c},\r
+{0x54,0xb0102001},\r
+{0x58,0x8336a01f},\r
+{0x5c,0x82068001},\r
+{0x60,0xb5386001},\r
+{0x64,0xa026401a},\r
+{0x68,0xb2066001},\r
+{0x6c,0xc20ea35f},\r
+{0x70,0xb4584001},\r
+{0x74,0x80a40019},\r
+{0x78,0x14800011},\r
+{0x7c,0xb0102000},\r
+{0xf0,0x99},\r
+{0x00,0x832c2002},\r
+{0x04,0xd0006790},\r
+{0x08,0x90020011},\r
+{0x0c,0x7ffffce5},\r
+{0x10,0x920467b4},\r
+{0x14,0x80a2001a},\r
+{0x18,0x04800003},\r
+{0x1c,0xa0042001},\r
+{0x20,0xb0062001},\r
+{0x24,0x80a40019},\r
+{0x28,0x04bffff7},\r
+{0x2c,0x832c2002},\r
+{0x30,0x80a62001},\r
+{0x34,0x14800003},\r
+{0x38,0xb0102001},\r
+{0x3c,0xb0102000},\r
+{0x40,0x81c7e008},\r
+{0x44,0x81e80000},\r
+{0x48,0x9de3bf48},\r
+{0x4c,0xc2082360},\r
+{0x50,0x80a06000},\r
+{0x54,0x0280007c},\r
+{0x58,0xba102000},\r
+{0x5c,0xa6102000},\r
+{0x60,0xda04e854},\r
+{0x64,0x8333601e},\r
+{0x68,0x80886001},\r
+{0x6c,0x22800073},\r
+{0x70,0xba076001},\r
+{0x74,0x83336008},\r
+{0x78,0x820860ff},\r
+{0x7c,0x80a06002},\r
+{0xf0,0x9a},\r
+{0x00,0x0480000c},\r
+{0x04,0xa4102003},\r
+{0x08,0x82006002},\r
+{0x0c,0xa4106001},\r
+{0x10,0x80a4a009},\r
+{0x14,0x04800005},\r
+{0x18,0x80a4a002},\r
+{0x1c,0x10800005},\r
+{0x20,0xa4102009},\r
+{0x24,0x80a4a002},\r
+{0x28,0x0480005d},\r
+{0x2c,0x1b3fffc0},\r
+{0x30,0x94100012},\r
+{0x34,0xd20ce857},\r
+{0x38,0x7fffff91},\r
+{0x3c,0x9010001d},\r
+{0x40,0xa2100008},\r
+{0x44,0x94100012},\r
+{0x48,0x92946000},\r
+{0x4c,0x04800051},\r
+{0x50,0x9010001d},\r
+{0x54,0x7fffffbb},\r
+{0x58,0x01000000},\r
+{0x5c,0x80a22000},\r
+{0x60,0x32bffff1},\r
+{0x64,0xa404bffe},\r
+{0x68,0xad3ca01f},\r
+{0x6c,0x8335a01f},\r
+{0x70,0x82048001},\r
+{0x74,0x83386001},\r
+{0x78,0x9a044001},\r
+{0x7c,0xa0244001},\r
+{0xf0,0x9b},\r
+{0x00,0x80a4000d},\r
+{0x04,0x1480000f},\r
+{0x08,0x9610000d},\r
+{0x0c,0x9807bff8},\r
+{0x10,0x832c2002},\r
+{0x14,0xda006790},\r
+{0x18,0xc2134013},\r
+{0x1c,0x82086fff},\r
+{0x20,0xc2233fd8},\r
+{0x24,0xc2034013},\r
+{0x28,0x82086fff},\r
+{0x2c,0xc2233fb0},\r
+{0x30,0xa0042001},\r
+{0x34,0x80a4000b},\r
+{0x38,0x04bffff6},\r
+{0x3c,0x98032004},\r
+{0x40,0x92100012},\r
+{0x44,0x7ffff22a},\r
+{0x48,0x9007bfd0},\r
+{0x4c,0x9007bfa8},\r
+{0x50,0x7ffff227},\r
+{0x54,0x92100012},\r
+{0x58,0x9935a01f},\r
+{0x5c,0x9804800c},\r
+{0x60,0x993b2001},\r
+{0x64,0x8207bff8},\r
+{0x68,0x952b2002},\r
+{0x6c,0x94028001},\r
+{0x70,0xda02bfd8},\r
+{0x74,0xd604e768},\r
+{0x78,0x9a0b6fff},\r
+{0x7c,0x0303ffc0},\r
+{0xf0,0x9c},\r
+{0x00,0x9b2b6010},\r
+{0x04,0x822ac001},\r
+{0x08,0x8210400d},\r
+{0x0c,0xc224e768},\r
+{0x10,0xda02bfb0},\r
+{0x14,0x9a0b6fff},\r
+{0x18,0x82087000},\r
+{0x1c,0x8210400d},\r
+{0x20,0xc224e768},\r
+{0x24,0x832c6002},\r
+{0x28,0xda006790},\r
+{0x2c,0x8204400c},\r
+{0x30,0xa024400c},\r
+{0x34,0x80a40001},\r
+{0x38,0x031fffff},\r
+{0x3c,0xea034013},\r
+{0x40,0xae1063ff},\r
+{0x44,0x14800011},\r
+{0x48,0x832c2002},\r
+{0x4c,0xe8006790},\r
+{0x50,0x90050013},\r
+{0x54,0x7ffffc73},\r
+{0x58,0x9204e768},\r
+{0x5c,0x8335a01f},\r
+{0x60,0x82048001},\r
+{0x64,0x83386001},\r
+{0x68,0xa0042001},\r
+{0x6c,0x80a20017},\r
+{0x70,0x16800004},\r
+{0x74,0x82044001},\r
+{0x78,0xae100008},\r
+{0x7c,0xea050013},\r
+{0xf0,0x9d},\r
+{0x00,0x10bffff1},\r
+{0x04,0x80a40001},\r
+{0x08,0x10800004},\r
+{0x0c,0xea24e768},\r
+{0x10,0x10bfffa5},\r
+{0x14,0xa404bffe},\r
+{0x18,0x1b3fffc0},\r
+{0x1c,0xc204e854},\r
+{0x20,0x9a1360ff},\r
+{0x24,0x8208400d},\r
+{0x28,0x9b2ca008},\r
+{0x2c,0x8210400d},\r
+{0x30,0xc224e854},\r
+{0x34,0xba076001},\r
+{0x38,0x80a76009},\r
+{0x3c,0x04bfff89},\r
+{0x40,0xa604e004},\r
+{0x44,0x81c7e008},\r
+{0x48,0x81e80000},\r
+{0x4c,0x9de3bf98},\r
+{0x50,0xa6102000},\r
+{0x54,0xa12ce002},\r
+{0x58,0xda042768},\r
+{0x5c,0x80a36000},\r
+{0x60,0x12800008},\r
+{0x64,0x82102001},\r
+{0x68,0xc02427b4},\r
+{0x6c,0xda002550},\r
+{0x70,0x83284013},\r
+{0x74,0x822b4001},\r
+{0x78,0x1080001c},\r
+{0x7c,0xc2202550},\r
+{0xf0,0x9e},\r
+{0x00,0xe80427b4},\r
+{0x04,0x80a52000},\r
+{0x08,0x12800004},\r
+{0x0c,0xa5284013},\r
+{0x10,0x10800016},\r
+{0x14,0xda2427b4},\r
+{0x18,0xe2002550},\r
+{0x1c,0x808c4012},\r
+{0x20,0x32800011},\r
+{0x24,0xc2042768},\r
+{0x28,0x8333600c},\r
+{0x2c,0x80886001},\r
+{0x30,0x3280000d},\r
+{0x34,0xc2042768},\r
+{0x38,0x90042768},\r
+{0x3c,0x7ffffc39},\r
+{0x40,0x920427b4},\r
+{0x44,0xc2002354},\r
+{0x48,0x80a20001},\r
+{0x4c,0x1a800004},\r
+{0x50,0x82144012},\r
+{0x54,0x10800005},\r
+{0x58,0xe8242768},\r
+{0x5c,0xc2202550},\r
+{0x60,0xc2042768},\r
+{0x64,0xc22427b4},\r
+{0x68,0xa604e001},\r
+{0x6c,0x80a4e009},\r
+{0x70,0x08bfffda},\r
+{0x74,0xa12ce002},\r
+{0x78,0x81c7e008},\r
+{0x7c,0x81e80000},\r
+{0xf0,0x9f},\r
+{0x00,0x9de3bf98},\r
+{0x04,0xc2060000},\r
+{0x08,0xbb30600c},\r
+{0x0c,0xb9306010},\r
+{0x10,0xb80f2fff},\r
+{0x14,0xb08f6001},\r
+{0x18,0xb6086fff},\r
+{0x1c,0x12800014},\r
+{0x20,0x9f30601c},\r
+{0x24,0xc250229e},\r
+{0x28,0xfa5022a2},\r
+{0x2c,0x8226c001},\r
+{0x30,0xba27001d},\r
+{0x34,0xf850229c},\r
+{0x38,0xf65022a0},\r
+{0x3c,0x8258401c},\r
+{0x40,0xba5f401b},\r
+{0x44,0x82006800},\r
+{0x48,0xba076800},\r
+{0x4c,0xb938601f},\r
+{0x50,0xb73f601f},\r
+{0x54,0xb9372014},\r
+{0x58,0xb736e014},\r
+{0x5c,0x8200401c},\r
+{0x60,0xba07401b},\r
+{0x64,0xb738600c},\r
+{0x68,0xb93f600c},\r
+{0x6c,0xf4002324},\r
+{0x70,0xf2002328},\r
+{0x74,0xfa002308},\r
+{0x78,0xc2002300},\r
+{0x7c,0xb65ec01a},\r
+{0xf0,0xa0},\r
+{0x00,0xbb2f6006},\r
+{0x04,0xb85f0019},\r
+{0x08,0x83286006},\r
+{0x0c,0x9b3ee01f},\r
+{0x10,0x81836000},\r
+{0x14,0x01000000},\r
+{0x18,0x01000000},\r
+{0x1c,0x01000000},\r
+{0x20,0xb67ec01d},\r
+{0x24,0x9b3f201f},\r
+{0x28,0x81836000},\r
+{0x2c,0x01000000},\r
+{0x30,0x01000000},\r
+{0x34,0x01000000},\r
+{0x38,0xb87f0001},\r
+{0x3c,0x80a62000},\r
+{0x40,0x32800031},\r
+{0x44,0x3b03ffc0},\r
+{0x48,0xc20022a4},\r
+{0x4c,0x80a06000},\r
+{0x50,0x0280000a},\r
+{0x54,0x80a6e000},\r
+{0x58,0xc25022a6},\r
+{0x5c,0x80a6c001},\r
+{0x60,0x14800031},\r
+{0x64,0xb0102000},\r
+{0x68,0xc25022a4},\r
+{0x6c,0x80a6c001},\r
+{0x70,0x0680002d},\r
+{0x74,0x80a6e000},\r
+{0x78,0x24800002},\r
+{0x7c,0xb6102001},\r
+{0xf0,0xa1},\r
+{0x00,0x80a6c01a},\r
+{0x04,0x3a800002},\r
+{0x08,0xb606bfff},\r
+{0x0c,0xc20022a8},\r
+{0x10,0x80a06000},\r
+{0x14,0x0280000a},\r
+{0x18,0x80a72000},\r
+{0x1c,0xc25022aa},\r
+{0x20,0x80a70001},\r
+{0x24,0x14800020},\r
+{0x28,0xb0102000},\r
+{0x2c,0xc25022a8},\r
+{0x30,0x80a70001},\r
+{0x34,0x0680001c},\r
+{0x38,0x80a72000},\r
+{0x3c,0x24800002},\r
+{0x40,0xb8102001},\r
+{0x44,0x80a70019},\r
+{0x48,0x3a800002},\r
+{0x4c,0xb8067fff},\r
+{0x50,0xc20023c8},\r
+{0x54,0x80886002},\r
+{0x58,0x32800002},\r
+{0x5c,0xb626801b},\r
+{0x60,0x80886004},\r
+{0x64,0x32800002},\r
+{0x68,0xb826401c},\r
+{0x6c,0x80886008},\r
+{0x70,0x02800005},\r
+{0x74,0x3b03ffc0},\r
+{0x78,0xb61ec01c},\r
+{0x7c,0xb81f001b},\r
+{0xf0,0xa2},\r
+{0x00,0xb61ec01c},\r
+{0x04,0x832ee010},\r
+{0x08,0x8208401d},\r
+{0x0c,0xbb2be01c},\r
+{0x10,0xba074001},\r
+{0x14,0x0300003f},\r
+{0x18,0x821063ff},\r
+{0x1c,0x820f0001},\r
+{0x20,0xb0074001},\r
+{0x24,0x81c7e008},\r
+{0x28,0x81e80000},\r
+{0x2c,0x9de3bf98},\r
+{0x30,0xda002514},\r
+{0x34,0xc2002284},\r
+{0x38,0x80a34001},\r
+{0x3c,0x0880000a},\r
+{0x40,0xa0102000},\r
+{0x44,0xc20023c8},\r
+{0x48,0x80886001},\r
+{0x4c,0x02800007},\r
+{0x50,0xa2102000},\r
+{0x54,0x033fc180},\r
+{0x58,0xc0204000},\r
+{0x5c,0x1080001c},\r
+{0x60,0xc0202514},\r
+{0x64,0xa2102000},\r
+{0x68,0x912c6002},\r
+{0x6c,0xc2022768},\r
+{0x70,0x9b30601c},\r
+{0x74,0x80a36000},\r
+{0x78,0x0280000f},\r
+{0x7c,0xa2046001},\r
+{0xf0,0xa3},\r
+{0x00,0xc2002284},\r
+{0x04,0x80a34001},\r
+{0x08,0x1880000b},\r
+{0x0c,0x90022768},\r
+{0x10,0x7fffff7c},\r
+{0x14,0x01000000},\r
+{0x18,0x80a22000},\r
+{0x1c,0x02800007},\r
+{0x20,0x80a46009},\r
+{0x24,0xa0042001},\r
+{0x28,0x9b2c2002},\r
+{0x2c,0x033fc180},\r
+{0x30,0xd0234001},\r
+{0x34,0x80a46009},\r
+{0x38,0x28bfffed},\r
+{0x3c,0x912c6002},\r
+{0x40,0x033fc180},\r
+{0x44,0xe0204000},\r
+{0x48,0xe0202514},\r
+{0x4c,0x81c7e008},\r
+{0x50,0x81e80000},\r
+{0x54,0x9de3bf98},\r
+{0x58,0xd0002320},\r
+{0x5c,0x80a22000},\r
+{0x60,0x0280004b},\r
+{0x64,0x01000000},\r
+{0x68,0xc200231c},\r
+{0x6c,0x80a06000},\r
+{0x70,0x22800016},\r
+{0x74,0xd800231c},\r
+{0x78,0x82063fff},\r
+{0x7c,0x80a06001},\r
+{0xf0,0xa4},\r
+{0x00,0x38800012},\r
+{0x04,0xd800231c},\r
+{0x08,0xc2002318},\r
+{0x0c,0x80a06000},\r
+{0x10,0x12800008},\r
+{0x14,0x213fc000},\r
+{0x18,0xa0142020},\r
+{0x1c,0x82102001},\r
+{0x20,0x7ffff019},\r
+{0x24,0xc2240000},\r
+{0x28,0x10800007},\r
+{0x2c,0xc0240000},\r
+{0x30,0xa0142020},\r
+{0x34,0x7ffff014},\r
+{0x38,0xc0240000},\r
+{0x3c,0x82102001},\r
+{0x40,0xc2240000},\r
+{0x44,0xd800231c},\r
+{0x48,0x80a0000c},\r
+{0x4c,0x82603fff},\r
+{0x50,0x9a1e2001},\r
+{0x54,0x80a0000d},\r
+{0x58,0x9a603fff},\r
+{0x5c,0x8088400d},\r
+{0x60,0x0280000d},\r
+{0x64,0x80a0000c},\r
+{0x68,0xc2002318},\r
+{0x6c,0x80a06000},\r
+{0x70,0x12800006},\r
+{0x74,0x033fc000},\r
+{0x78,0x9a102001},\r
+{0x7c,0x82106020},\r
+{0xf0,0xa5},\r
+{0x00,0x10800004},\r
+{0x04,0xda204000},\r
+{0x08,0x82106020},\r
+{0x0c,0xc0204000},\r
+{0x10,0x80a0000c},\r
+{0x14,0x82603fff},\r
+{0x18,0x9a1e2002},\r
+{0x1c,0x80a0000d},\r
+{0x20,0x9a603fff},\r
+{0x24,0x8088400d},\r
+{0x28,0x0280000d},\r
+{0x2c,0x80a62000},\r
+{0x30,0xc2002318},\r
+{0x34,0x80a06000},\r
+{0x38,0x12800005},\r
+{0x3c,0x033fc000},\r
+{0x40,0x82106020},\r
+{0x44,0x10800005},\r
+{0x48,0xc0204000},\r
+{0x4c,0x9a102001},\r
+{0x50,0x82106020},\r
+{0x54,0xda204000},\r
+{0x58,0x80a62000},\r
+{0x5c,0x1280000c},\r
+{0x60,0x01000000},\r
+{0x64,0xc2002318},\r
+{0x68,0x80a06000},\r
+{0x6c,0x12800005},\r
+{0x70,0x033fc000},\r
+{0x74,0x82106020},\r
+{0x78,0x10800005},\r
+{0x7c,0xc0204000},\r
+{0xf0,0xa6},\r
+{0x00,0x9a102001},\r
+{0x04,0x82106020},\r
+{0x08,0xda204000},\r
+{0x0c,0x81c7e008},\r
+{0x10,0x81e80000},\r
+{0x14,0x9de3bf98},\r
+{0x18,0xc2002514},\r
+{0x1c,0x80a06000},\r
+{0x20,0x12800007},\r
+{0x24,0x90102001},\r
+{0x28,0xda002568},\r
+{0x2c,0xc2002570},\r
+{0x30,0x80a34001},\r
+{0x34,0x22800006},\r
+{0x38,0xc2002514},\r
+{0x3c,0x82102001},\r
+{0x40,0x7fffffa5},\r
+{0x44,0xc220250c},\r
+{0x48,0xc2002514},\r
+{0x4c,0x80a06000},\r
+{0x50,0x1280000c},\r
+{0x54,0x01000000},\r
+{0x58,0xc200250c},\r
+{0x5c,0x80a06000},\r
+{0x60,0x02800008},\r
+{0x64,0x9a007fff},\r
+{0x68,0xb0102002},\r
+{0x6c,0x80a36000},\r
+{0x70,0x12800004},\r
+{0x74,0xda20250c},\r
+{0x78,0x7fffff97},\r
+{0x7c,0x81e80000},\r
+{0xf0,0xa7},\r
+{0x00,0x01000000},\r
+{0x04,0x81c7e008},\r
+{0x08,0x81e80000},\r
+{0x0c,0x01000000},\r
+{0x10,0x27001040},\r
+{0x14,0xa614e00f},\r
+{0x18,0xe6a00040},\r
+{0x1c,0x01000000},\r
+{0x20,0x81c3e008},\r
+{0x24,0x01000000},\r
+{0x28,0x9de3bf98},\r
+{0x2c,0xc2002508},\r
+{0x30,0x80a06000},\r
+{0x34,0x0280000e},\r
+{0x38,0x1b3fc180},\r
+{0x3c,0x82102001},\r
+{0x40,0x9a13603c},\r
+{0x44,0xc2234000},\r
+{0x48,0xc2002508},\r
+{0x4c,0x80a06000},\r
+{0x50,0x02800005},\r
+{0x54,0x033fc180},\r
+{0x58,0x7fffffed},\r
+{0x5c,0x01000000},\r
+{0x60,0x30bffffa},\r
+{0x64,0x8210603c},\r
+{0x68,0xc0204000},\r
+{0x6c,0x81c7e008},\r
+{0x70,0x81e80000},\r
+{0x74,0x9de3bf98},\r
+{0x78,0xda002500},\r
+{0x7c,0xc20022d0},\r
+{0xf0,0xa8},\r
+{0x00,0x80a34001},\r
+{0x04,0x18800025},\r
+{0x08,0xa4102000},\r
+{0x0c,0xd2002790},\r
+{0x10,0x832ca002},\r
+{0x14,0xe2024001},\r
+{0x18,0x80a46000},\r
+{0x1c,0x12800004},\r
+{0x20,0xa12ca003},\r
+{0x24,0x10800019},\r
+{0x28,0xc02427dc},\r
+{0x2c,0x92024001},\r
+{0x30,0xc20427dc},\r
+{0x34,0x80a06000},\r
+{0x38,0x02800008},\r
+{0x3c,0x900427dc},\r
+{0x40,0x7ffffaf8},\r
+{0x44,0x01000000},\r
+{0x48,0xc20022ac},\r
+{0x4c,0x80a20001},\r
+{0x50,0x28800005},\r
+{0x54,0xc20427e0},\r
+{0x58,0xe22427dc},\r
+{0x5c,0x1080000b},\r
+{0x60,0xc02427e0},\r
+{0x64,0x82006001},\r
+{0x68,0xc22427e0},\r
+{0x6c,0xda002378},\r
+{0x70,0x80a0400d},\r
+{0x74,0x28800006},\r
+{0x78,0xa404a001},\r
+{0x7c,0x7ffff069},\r
+{0xf0,0xa9},\r
+{0x00,0x01000000},\r
+{0x04,0x30800005},\r
+{0x08,0xa404a001},\r
+{0x0c,0x80a4a009},\r
+{0x10,0x24bfffe0},\r
+{0x14,0xd2002790},\r
+{0x18,0x81c7e008},\r
+{0x1c,0x81e80000},\r
+{0x20,0x9de3bf98},\r
+{0x24,0x7ffff54c},\r
+{0x28,0x01000000},\r
+{0x2c,0x7ffff390},\r
+{0x30,0x01000000},\r
+{0x34,0x7ffff3d0},\r
+{0x38,0x01000000},\r
+{0x3c,0x7ffff535},\r
+{0x40,0x01000000},\r
+{0x44,0x7ffff800},\r
+{0x48,0x01000000},\r
+{0x4c,0x7ffff571},\r
+{0x50,0x01000000},\r
+{0x54,0x7ffff714},\r
+{0x58,0x01000000},\r
+{0x5c,0x7ffff7b9},\r
+{0x60,0x90102001},\r
+{0x64,0x7ffff93a},\r
+{0x68,0x01000000},\r
+{0x6c,0x7ffffca3},\r
+{0x70,0x01000000},\r
+{0x74,0x7ffff9cf},\r
+{0x78,0x01000000},\r
+{0x7c,0x7ffff963},\r
+{0xf0,0xaa},\r
+{0x00,0x01000000},\r
+{0x04,0x7ffffd08},\r
+{0x08,0x90102768},\r
+{0x0c,0x7ffff997},\r
+{0x10,0x01000000},\r
+{0x14,0x7ffffa8b},\r
+{0x18,0x01000000},\r
+{0x1c,0x7ffffb1d},\r
+{0x20,0x01000000},\r
+{0x24,0x7ffffb8e},\r
+{0x28,0x01000000},\r
+{0x2c,0x7ffffbc8},\r
+{0x30,0x01000000},\r
+{0x34,0x7ffffbe4},\r
+{0x38,0x01000000},\r
+{0x3c,0x7ffffc52},\r
+{0x40,0x01000000},\r
+{0x44,0x7ffffcf8},\r
+{0x48,0xd0002790},\r
+{0x4c,0xc2002514},\r
+{0x50,0x7ffffd04},\r
+{0x54,0xc2202518},\r
+{0x58,0x7ffffddc},\r
+{0x5c,0x01000000},\r
+{0x60,0x7ffffe5b},\r
+{0x64,0x01000000},\r
+{0x68,0x7fffffa3},\r
+{0x6c,0x01000000},\r
+{0x70,0x7ffffeef},\r
+{0x74,0x01000000},\r
+{0x78,0x7fffff67},\r
+{0x7c,0x01000000},\r
+{0xf0,0xab},\r
+{0x00,0x7fffff8a},\r
+{0x04,0x81e80000},\r
+{0x08,0x01000000},\r
+{0x0c,0x9de3bf98},\r
+{0x10,0xc200253c},\r
+{0x14,0x80a06000},\r
+{0x18,0x12800048},\r
+{0x1c,0xb0102000},\r
+{0x20,0xd6002460},\r
+{0x24,0x82102080},\r
+{0x28,0x80a2e000},\r
+{0x2c,0x02800043},\r
+{0x30,0xc220256c},\r
+{0x34,0x10800005},\r
+{0x38,0xb0102001},\r
+{0x3c,0xc220256c},\r
+{0x40,0x1080003e},\r
+{0x44,0xf00e2468},\r
+{0x48,0xd80022fc},\r
+{0x4c,0x80a6000c},\r
+{0x50,0x1880002d},\r
+{0x54,0x9a102000},\r
+{0x58,0xd40022f8},\r
+{0x5c,0x33000018},\r
+{0x60,0xb6102001},\r
+{0x64,0x80a6c00a},\r
+{0x68,0x18800020},\r
+{0x6c,0xb4102000},\r
+{0x70,0x832e2002},\r
+{0x74,0xb8006038},\r
+{0x78,0xa0166220},\r
+{0x7c,0x901661e8},\r
+{0xf0,0xac},\r
+{0x00,0x92166258},\r
+{0x04,0xde0022f8},\r
+{0x08,0xfa070010},\r
+{0x0c,0x80a7400b},\r
+{0x10,0x26800013},\r
+{0x14,0xb606e001},\r
+{0x18,0x80a6e001},\r
+{0x1c,0x22800007},\r
+{0x20,0xc20022f8},\r
+{0x24,0xc2070008},\r
+{0x28,0x80a74001},\r
+{0x2c,0x2480000c},\r
+{0x30,0xb606e001},\r
+{0x34,0xc20022f8},\r
+{0x38,0x80a6c001},\r
+{0x3c,0x22800007},\r
+{0x40,0xb406a001},\r
+{0x44,0xc2070009},\r
+{0x48,0x80a74001},\r
+{0x4c,0x26800004},\r
+{0x50,0xb606e001},\r
+{0x54,0xb406a001},\r
+{0x58,0xb606e001},\r
+{0x5c,0x80a6c00f},\r
+{0x60,0x08bfffea},\r
+{0x64,0xb8072038},\r
+{0x68,0x80a6800d},\r
+{0x6c,0x34800002},\r
+{0x70,0x9a10001a},\r
+{0x74,0xb0062001},\r
+{0x78,0x80a6000c},\r
+{0x7c,0x28bfffda},\r
+{0xf0,0xad},\r
+{0x00,0xb6102001},\r
+{0x04,0xb0102000},\r
+{0x08,0xc20e2464},\r
+{0x0c,0x80a06000},\r
+{0x10,0x22800006},\r
+{0x14,0xb0062001},\r
+{0x18,0x80a34001},\r
+{0x1c,0x34bfffc8},\r
+{0x20,0xc20e2278},\r
+{0x24,0xb0062001},\r
+{0x28,0x80a62003},\r
+{0x2c,0x24bffff8},\r
+{0x30,0xc20e2464},\r
+{0x34,0xb0102000},\r
+{0x38,0x81c7e008},\r
+{0x3c,0x81e80000},\r
+{0x40,0x9de3bf98},\r
+{0x44,0xc2002574},\r
+{0x48,0x80a06000},\r
+{0x4c,0x02800021},\r
+{0x50,0x90100018},\r
+{0x54,0x82007fff},\r
+{0x58,0x7ffff164},\r
+{0x5c,0xc2202574},\r
+{0x60,0xc2002574},\r
+{0x64,0x80a06000},\r
+{0x68,0x3280001b},\r
+{0x6c,0xc2002578},\r
+{0x70,0xc200253c},\r
+{0x74,0xda002334},\r
+{0x78,0x8200400d},\r
+{0x7c,0x82006001},\r
+{0xf0,0xae},\r
+{0x00,0xc2202548},\r
+{0x04,0xc2002564},\r
+{0x08,0x80a06000},\r
+{0x0c,0x1280000f},\r
+{0x10,0x01000000},\r
+{0x14,0x7ffff1bc},\r
+{0x18,0x01000000},\r
+{0x1c,0x033fc200},\r
+{0x20,0xda002334},\r
+{0x24,0xd800232c},\r
+{0x28,0x82106074},\r
+{0x2c,0xd8204000},\r
+{0x30,0x96102001},\r
+{0x34,0x9a036001},\r
+{0x38,0xda202574},\r
+{0x3c,0xd6202540},\r
+{0x40,0x10800004},\r
+{0x44,0xd6202564},\r
+{0x48,0x7ffff16c},\r
+{0x4c,0x01000000},\r
+{0x50,0xc2002578},\r
+{0x54,0x80a06000},\r
+{0x58,0x12800014},\r
+{0x5c,0x01000000},\r
+{0x60,0xc2002574},\r
+{0x64,0x80a06000},\r
+{0x68,0x12800010},\r
+{0x6c,0x01000000},\r
+{0x70,0x7fffff87},\r
+{0x74,0x01000000},\r
+{0x78,0x80a22000},\r
+{0x7c,0x1280000a},\r
+{0xf0,0xaf},\r
+{0x00,0xd020253c},\r
+{0x04,0xc2002334},\r
+{0x08,0x9a102001},\r
+{0x0c,0x82006001},\r
+{0x10,0xc2202574},\r
+{0x14,0xda202578},\r
+{0x18,0xda202540},\r
+{0x1c,0x7ffff709},\r
+{0x20,0x91e82000},\r
+{0x24,0xd0202574},\r
+{0x28,0x81c7e008},\r
+{0x2c,0x81e80000},\r
+{0x30,0x9de3bf98},\r
+{0x34,0x033fc200},\r
+{0x38,0x82106030},\r
+{0x3c,0xda004000},\r
+{0x40,0xc200257c},\r
+{0x44,0x80a34001},\r
+{0x48,0x12800017},\r
+{0x4c,0x01000000},\r
+{0x50,0x7ffff01d},\r
+{0x54,0x01000000},\r
+{0x58,0x80a22000},\r
+{0x5c,0x32800008},\r
+{0x60,0xc2002514},\r
+{0x64,0x7ffff066},\r
+{0x68,0xb0102000},\r
+{0x6c,0x80a22000},\r
+{0x70,0x0280000f},\r
+{0x74,0x01000000},\r
+{0x78,0xc2002514},\r
+{0x7c,0x80a06000},\r
+{0xf0,0xb0},\r
+{0x00,0x12800006},\r
+{0x04,0x90102002},\r
+{0x08,0xc200250c},\r
+{0x0c,0x80a06000},\r
+{0x10,0x02800005},\r
+{0x14,0x01000000},\r
+{0x18,0x033fc180},\r
+{0x1c,0x7ffffe6e},\r
+{0x20,0xc0204000},\r
+{0x24,0x7fffef7f},\r
+{0x28,0xb0102001},\r
+{0x2c,0x81c7e008},\r
+{0x30,0x81e80000},\r
+{0x34,0x9de3bf98},\r
+{0x38,0x7ffffed5},\r
+{0x3c,0x01000000},\r
+{0x40,0xe0002500},\r
+{0x44,0x80a42015},\r
+{0x48,0x08800016},\r
+{0x4c,0x80a42000},\r
+{0x50,0x7ffff15a},\r
+{0x54,0x01000000},\r
+{0x58,0x033fc140},\r
+{0x5c,0x82106048},\r
+{0x60,0xda004000},\r
+{0x64,0x03000040},\r
+{0x68,0x11000016},\r
+{0x6c,0x808b4001},\r
+{0x70,0x12800004},\r
+{0x74,0x90122180},\r
+{0x78,0x11000016},\r
+{0x7c,0x901223a8},\r
+{0xf0,0xb1},\r
+{0x00,0x7fffff90},\r
+{0x04,0x01000000},\r
+{0x08,0x7fffffca},\r
+{0x0c,0x01000000},\r
+{0x10,0x80a22000},\r
+{0x14,0x2280001d},\r
+{0x18,0xc2002500},\r
+{0x1c,0x3080002f},\r
+{0x20,0x1280000f},\r
+{0x24,0x80a42014},\r
+{0x28,0x7fffef21},\r
+{0x2c,0x01000000},\r
+{0x30,0x80a22000},\r
+{0x34,0x32800003},\r
+{0x38,0x90102002},\r
+{0x3c,0x90102001},\r
+{0x40,0x7ffffe45},\r
+{0x44,0x01000000},\r
+{0x48,0x7fffef56},\r
+{0x4c,0x01000000},\r
+{0x50,0x7fffee94},\r
+{0x54,0x01000000},\r
+{0x58,0x30800009},\r
+{0x5c,0x3880000b},\r
+{0x60,0xc2002500},\r
+{0x64,0x808c2001},\r
+{0x68,0x32800008},\r
+{0x6c,0xc2002500},\r
+{0x70,0x90043ff8},\r
+{0x74,0x7ffff074},\r
+{0x78,0x91322001},\r
+{0x7c,0x7ffff0cf},\r
+{0xf0,0xb2},\r
+{0x00,0x01000000},\r
+{0x04,0xc2002500},\r
+{0x08,0x80a40001},\r
+{0x0c,0x3280000d},\r
+{0x10,0xc2002578},\r
+{0x14,0x031fffff},\r
+{0x18,0x821063f0},\r
+{0x1c,0x80a40001},\r
+{0x20,0x38800003},\r
+{0x24,0x21040000},\r
+{0x28,0xa0042001},\r
+{0x2c,0x033fc180},\r
+{0x30,0x82106034},\r
+{0x34,0xe0204000},\r
+{0x38,0xe0202500},\r
+{0x3c,0xc2002578},\r
+{0x40,0x80a06000},\r
+{0x44,0x02800005},\r
+{0x48,0x01000000},\r
+{0x4c,0x7ffffed5},\r
+{0x50,0x01000000},\r
+{0x54,0xc0202578},\r
+{0x58,0x81c7e008},\r
+{0x5c,0x81e80000},\r
+{0x60,0x81c3e008},\r
+{0x64,0x01000000},\r
+{0x68,0x01000000},\r
+{0x6c,0x01000000},\r
+{0x70,0x01000000},\r
+{0x74,0x01000000},\r
+{0x78,0x01000000},\r
+{0x7c,0x01000000},\r
+{0xf0,0xb3},\r
+{0x00,0x00001682},\r
+{0x04,0x00000000},\r
+{0x08,0x46656220},\r
+{0x0c,0x20352032},\r
+{0x10,0x30313300},\r
+{0x14,0x00000000},\r
+{0x18,0x31353a34},\r
+{0x1c,0x383a3334},\r
+{0x20,0x00000000},\r
+{0x24,0x00000000},\r
+{0x28,0x00000000},\r
+{0x2c,0x00000000},\r
+{0x30,0x00000000},\r
+{0x34,0x00000000},\r
+{0x38,0x00000000},\r
+{0x3c,0x00000000},\r
+{0x40,0x00000000},\r
+{0x44,0x00000000},\r
+{0x48,0x00000000},\r
+{0x4c,0x00000000},\r
+{0x50,0x00000000},\r
+{0x54,0x00000000},\r
+{0x58,0x00000000},\r
+{0x5c,0x00000000},\r
+{0x60,0x00000000},\r
+{0x64,0x00000000},\r
+{0x68,0x00000000},\r
+{0x6c,0x00000000},\r
+{0x70,0x00000000},\r
+{0x74,0x00000000},\r
+{0x78,0x00000000},\r
+{0x7c,0x00000000},\r
+};\r
+#endif\r
+static const struct fw_data GSLX680_FW[] = {\r
+};\r
+\r
+#endif\r
index 2c325269d62ab0cc268e58d062dc0c2940f67839..2c58f4769c757463594377f39895360073df6d32 100755 (executable)
@@ -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
index 8b158a9f5bbf23f13d258f7ff356f3b73e1d0141..ad3e2ec2b85656c29119ce707c99556612eb286f 100755 (executable)
@@ -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 (file)
index 0000000..983365b
--- /dev/null
@@ -0,0 +1,195 @@
+/* This Lcd Driver is HSD070IDW1 write by cst 2009.10.27 */
+#include <linux/fb.h>
+#include <linux/rk_fb.h>
+#include <linux/delay.h>
+#include <mach/gpio.h>
+#include <mach/iomux.h>
+#include <mach/board.h>
+#include "screen.h"
+#include <linux/hdmi.h>
+//#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);
+}
index 2ad5ce842765803bd13271c58a31086b8e192b0a..1ae7bb15cc9fdc44cae5d57829e6e793f84c7476 100755 (executable)
 #include <linux/proc_fs.h>
 #include <linux/gpio.h>
 
+
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+
 #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);