Revert "iio: imu: NVI v.323 Fix ICM significant motion"
Kerwin Wan [Tue, 17 May 2016 06:46:27 +0000 (14:46 +0800)]
This reverts commit 0f67637c74e564c814380f24be1d1730dcec67ce.

Bug 200199736

Change-Id: I444f1899fb41b11794f1451a0022b3083179323a
Signed-off-by: Kerwin Wan <kerwinw@nvidia.com>
Reviewed-on: http://git-master/r/1148789
GVS: Gerrit_Virtual_Submit

drivers/iio/imu/nvi_mpu/nvi.c
drivers/iio/imu/nvi_mpu/nvi.h
drivers/iio/imu/nvi_mpu/nvi_dmp_icm.c
drivers/iio/imu/nvi_mpu/nvi_dmp_icm.h
drivers/iio/imu/nvi_mpu/nvi_icm.c
drivers/iio/imu/nvi_mpu/nvi_mpu.c

index faa8e5c..4b2789d 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "nvi.h"
 
-#define NVI_DRIVER_VERSION             (323)
+#define NVI_DRIVER_VERSION             (322)
 #define NVI_VENDOR                     "Invensense"
 #define NVI_NAME                       "mpu6xxx"
 #define NVI_NAME_MPU6050               "mpu6050"
@@ -1735,8 +1735,7 @@ static int nvi_aux_port_enable(struct nvi_state *st, int port, bool en)
        ret = nvi_aux_port_en(st, port, en);
        ret |= nvi_aux_enable(st, __func__, true, false);
        nvi_period_aux(st);
-       if (port != AUX_PORT_IO)
-               ret |= nvi_en(st);
+       ret |= nvi_en(st);
        return ret;
 }
 
@@ -1888,7 +1887,6 @@ static int nvi_aux_dev_valid(struct nvi_state *st,
        st->aux.port[AUX_PORT_IO].period_us =
                        st->hal->src[st->hal->dev[DEV_AUX]->src].period_us_min;
        ret = nvi_aux_port_enable(st, AUX_PORT_IO, true);
-       ret |= nvi_user_ctrl_en(st, __func__, false, false, true, false);
        if (ret) {
                nvi_aux_port_free(st, AUX_PORT_IO);
                nvi_aux_bypass_release(st);
@@ -1914,7 +1912,7 @@ static int nvi_aux_dev_valid(struct nvi_state *st,
        /* these will restore all previously disabled ports */
        nvi_aux_bypass_release(st);
        nvi_aux_port_free(st, AUX_PORT_IO);
-       if (i >= AUX_DEV_VALID_READ_LOOP_MAX)
+       if (i == AUX_DEV_VALID_READ_LOOP_MAX)
                return -ENODEV;
 
        if (val & 0x10) /* NACK */
@@ -3296,8 +3294,6 @@ static int nvi_nvs_read(void *client, int snsr_id, char *buf)
                                             st->snsr[i].push_delay_ns);
                }
                if (st->en_msk & (1 << FW_LOADED))
-                       t += sprintf(buf + t, "DMP FW v. %u\n",
-                                    st->hal->dmp->fw_ver);
                        t += sprintf(buf + t, "DMP enabled=%u\n",
                                     !!(st->en_msk & (1 << DEV_DMP)));
                return t;
@@ -3308,6 +3304,8 @@ static int nvi_nvs_read(void *client, int snsr_id, char *buf)
                t += sprintf(buf + t, "pm=%d\n", st->pm);
                t += sprintf(buf + t, "bm_timeout_us=%u\n", st->bm_timeout_us);
                t += sprintf(buf + t, "fifo_src=%d\n", st->fifo_src);
+               t += sprintf(buf + t, "ts_irq=%lld\n",
+                            atomic64_read(&st->ts_irq));
                for (i = 0; i < DEV_N_AUX; i++) {
                        t += sprintf(buf + t, "snsr[%u] %s:\n",
                                     i, st->snsr[i].cfg.name);
@@ -3694,16 +3692,16 @@ static int nvi_id_dev(struct nvi_state *st,
        if (ret < 0)
                /* regulators aren't supported so manually do master reset */
                nvi_wr_pm1(st, __func__, BIT_H_RESET);
+       if (st->hal->fn->init)
+               ret = st->hal->fn->init(st);
+       else
+               ret = 0;
        for (i = 0; i < AXIS_N; i++) {
                st->rom_offset[DEV_ACC][i] = (s16)st->rc.accel_offset[i];
                st->rom_offset[DEV_GYR][i] = (s16)st->rc.gyro_offset[i];
                st->dev_offset[DEV_ACC][i] = 0;
                st->dev_offset[DEV_GYR][i] = 0;
        }
-       if (st->hal->fn->init)
-               ret = st->hal->fn->init(st);
-       else
-               ret = 0;
        if (hw_id == NVI_HW_ID_AUTO)
                dev_info(&st->i2c->dev, "%s: USING DEVICE TREE: %s\n",
                         __func__, i2c_dev_id->name);
@@ -3847,6 +3845,7 @@ static int nvi_init(struct nvi_state *st,
        unsigned int n;
        int ret;
 
+       /* since this is the first field, cast works fine */
        nvi_of_dt(st, st->i2c->dev.of_node);
        nvi_pm_init(st);
        ret = nvi_id_dev(st, i2c_dev_id);
index 0e7cb2c..f3b8d56 100644 (file)
@@ -301,7 +301,6 @@ struct nvi_mc_icm {
        u32 smd_mot_thld;
        u32 smd_delay_thld;
        u32 smd_delay2_thld;
-       u32 smd_timer_thld;
        u32 wom_enable;
 };
 
@@ -321,7 +320,6 @@ struct nvi_mc {
 
 struct nvi_dmp {
        const u8 const *fw;
-       unsigned int fw_ver;
        unsigned int fw_len;
        unsigned int fw_crc32;
        unsigned int fw_mem_addr;
@@ -454,7 +452,6 @@ struct nvi_state {
        bool mc_dis;
        bool irq_dis;
        bool irq_set_irq_wake;
-       bool icm_dmp_war;
        int pm;
        u32 dmp_clk_n;
        s64 ts_now;
index 32d6745..08f68c9 100644 (file)
 #include "nvi_dmp_icm.h"
 
 #define MPL520                         (1)
-#ifdef MPL520
-#define ICM_DMP_DEV_MSK                        ((1 << DEV_SM) | \
-                                        (1 << DEV_QTN))
-#else /* MPL520 */
-#define ICM_DMP_DEV_MSK                        ((1 << DEV_SM) | \
-                                        (1 << DEV_QTN) | \
-                                        (1 << DEV_GMR) | \
-                                        (1 << DEV_GYU))
-#endif /* MPL520 */
 
 #define DEFAULT_ACCEL_GAIN             (0x02000000)
 #define PED_ACCEL_GAIN                 (0x04000000)
-#define DMP_ACC_PERIOD_US_PED          (19608)
 #define DMP_MULTI_SHIFT                        (30)
 
 #define DMP_HDR_LEN_MAX                        (4)
@@ -72,6 +62,9 @@ struct inv_dmp_acc_wtf {
 
 static struct inv_dmp_acc_wtf inv_dmp_acc_wtfs[] = {
        {
+               .period_us              = 1000,
+       },
+       {
                .period_us              = 4444,
                .rate                   = 3,
                .gain                   = DEFAULT_ACCEL_GAIN,
@@ -86,7 +79,7 @@ static struct inv_dmp_acc_wtf inv_dmp_acc_wtfs[] = {
                .a                      = 0x0CCCCCCD,
        },
        {
-               .period_us              = DMP_ACC_PERIOD_US_PED,
+               .period_us              = 4902,
                .rate                   = 0,
                .gain                   = PED_ACCEL_GAIN,
                .alpha                  = 0x33333333,
@@ -111,27 +104,20 @@ static struct inv_dmp_acc_wtf inv_dmp_acc_wtfs[] = {
 static int nvi_dmp_acc_init(struct nvi_state *st, unsigned int en_msk,
                            u32 *out_ctl)
 {
-       unsigned int min_diff = -1;
-       unsigned int tmp;
-       unsigned int i;
+       unsigned int i = 0;
        unsigned int j;
+       int min_diff;
+       int tmp;
        int ret;
 
        ret = st->hal->fn->en_acc(st);
-       i = ARRAY_SIZE(inv_dmp_acc_wtfs) - 1;
-       if (st->src[SRC_ACC].period_us_src > inv_dmp_acc_wtfs[i].period_us) {
-               /* i = ARRAY_SIZE(inv_dmp_acc_wtfs) - 1 */
-       } else if (st->src[SRC_ACC].period_us_src <
-                                              inv_dmp_acc_wtfs[0].period_us) {
-               i = 0;
-       } else {
-               for (j = 0; j < ARRAY_SIZE(inv_dmp_acc_wtfs); j++) {
-                       tmp = abs(inv_dmp_acc_wtfs[j].period_us -
-                                 st->src[SRC_ACC].period_us_src);
-                       if (tmp < min_diff) {
-                               min_diff = tmp;
-                               i = j;
-                       }
+       min_diff =  inv_dmp_acc_wtfs[0].period_us;
+       for (j = 0; j < ARRAY_SIZE(inv_dmp_acc_wtfs); j++) {
+               tmp = abs(inv_dmp_acc_wtfs[j].period_us -
+                         st->src[SRC_ACC].period_us_src);
+               if (tmp < min_diff) {
+                       min_diff = tmp;
+                       i = j;
                }
        }
 
@@ -162,6 +148,10 @@ struct inv_dmp_gmf_wtf {
 
 static struct inv_dmp_gmf_wtf inv_dmp_gmf_wtfs[] = {
        {
+               .period_us              = 5000,
+               .ct                     = 200,
+       },
+       {
                .period_us              = 14286,
                .ct                     = 70,
                .alpha_c                = 0x36DB6DB7,
@@ -207,30 +197,23 @@ static struct inv_dmp_gmf_wtf inv_dmp_gmf_wtfs[] = {
 static int nvi_dmp_gmf_init(struct nvi_state *st, unsigned int en_msk,
                            u32 *out_ctl)
 {
-       unsigned int min_diff = -1;
-       unsigned int tmp;
-       unsigned int i;
+       unsigned int i = 0;
        unsigned int j;
+       int min_diff;
+       int tmp;
        int ret;
 
        if (st->aux.port[0].nmp.type != SECONDARY_SLAVE_TYPE_COMPASS)
                /* DMP shouldn't run if AUX device not supported */
                return -EINVAL;
 
-       i = ARRAY_SIZE(inv_dmp_gmf_wtfs) - 1;
-       if (st->src[SRC_AUX].period_us_src > inv_dmp_gmf_wtfs[i].period_us) {
-               /* i = ARRAY_SIZE(inv_dmp_gmf_wtfs) - 1 */
-       } else if (st->src[SRC_AUX].period_us_src <
-                                              inv_dmp_gmf_wtfs[0].period_us) {
-               i = 0;
-       } else {
-               for (j = 0; j < ARRAY_SIZE(inv_dmp_gmf_wtfs); j++) {
-                       tmp = abs(inv_dmp_gmf_wtfs[j].period_us -
-                                 st->src[SRC_AUX].period_us_src);
-                       if (tmp < min_diff) {
-                               min_diff = tmp;
-                               i = j;
-                       }
+       min_diff =  inv_dmp_gmf_wtfs[0].period_us;
+       for (j = 0; j < ARRAY_SIZE(inv_dmp_gmf_wtfs); j++) {
+               tmp = abs(inv_dmp_gmf_wtfs[j].period_us -
+                         st->src[SRC_AUX].period_us_src);
+               if (tmp < min_diff) {
+                       min_diff = tmp;
+                       i = j;
                }
        }
 
@@ -270,7 +253,6 @@ static int nvi_dmp_gyr_init(struct nvi_state *st, unsigned int en_msk,
 static int nvi_dmp_sm_init(struct nvi_state *st, unsigned int en_msk,
                           u32 *out_ctl)
 {
-#if ICM_DMP_FW_VER == 0
        int ret;
 
        ret = nvi_mem_wr_be_mc(st, SMD_MOT_THLD, 4,
@@ -283,12 +265,6 @@ static int nvi_dmp_sm_init(struct nvi_state *st, unsigned int en_msk,
                                st->snsr[DEV_SM].cfg.delay_us_max,
                                &st->mc.icm.smd_delay2_thld);
        return ret;
-#else /* ICM_DMP_FW_VER */
-       /* ICM_DMP_FW_VER == 1 */
-       return nvi_mem_wr_be_mc(st, SMD_TIMER_THLD, 4,
-                               st->snsr[DEV_SM].cfg.thresh_hi,
-                               &st->mc.icm.smd_timer_thld);
-#endif /* ICM_DMP_FW_VER */
 }
 
 static int nvi_dmp_gmr_init(struct nvi_state *st, unsigned int en_msk,
@@ -375,8 +351,9 @@ static struct nvi_dmp_dev nvi_dmp_devs[] = {
                .dev                    = DEV_SM,
                .depend_msk             = (1 << DEV_ACC),
                .src_msk                = (1 << SRC_ACC),
-               .period_us_dflt         = DMP_ACC_PERIOD_US_PED,
+               .period_us_dflt         = ICM_DMP_PERIOD_US,
                .buf_n                  = 1,
+               .out_ctl                = 0x80000000,
                .fn_init                = &nvi_dmp_sm_init,
        },
        {
@@ -506,30 +483,6 @@ static struct nvi_dmp_hdr nvi_dmp_hdr1s[] = {
        },
 };
 
-static unsigned int nvi_dmp_dbg(struct nvi_state *st, unsigned int n)
-{
-       dev_info(&st->i2c->dev,
-                "n=%04u %02x %02x %02x %02x %02x %02x %02x %02x\n",
-                n, st->buf[st->buf_i], st->buf[st->buf_i + 1],
-                st->buf[st->buf_i + 2], st->buf[st->buf_i + 3],
-                st->buf[st->buf_i + 4], st->buf[st->buf_i + 5],
-                st->buf[st->buf_i + 6], st->buf[st->buf_i + 7]);
-       dev_info(&st->i2c->dev,
-                "       %02x %02x %02x %02x %02x %02x %02x %02x\n",
-                st->buf[st->buf_i + 8], st->buf[st->buf_i + 9],
-                st->buf[st->buf_i + 10], st->buf[st->buf_i + 11],
-                st->buf[st->buf_i + 12], st->buf[st->buf_i + 13],
-                st->buf[st->buf_i + 14], st->buf[st->buf_i + 15]);
-       if (n > 16) {
-               st->buf_i += 16;
-               n -= 16;
-       } else {
-               st->buf_i += n;
-               n = 0;
-       }
-       return n;
-}
-
 static int nvi_dmp_rd(struct nvi_state *st, s64 ts, unsigned int n)
 {
        struct nvi_dmp_hdr *dh;
@@ -543,11 +496,6 @@ static int nvi_dmp_rd(struct nvi_state *st, s64 ts, unsigned int n)
        u16 hdr2;
 
        while (n > DMP_HDR_LEN_MAX) {
-               if (st->sts & NVI_DBG_SPEW_FIFO) {
-                       n = nvi_dmp_dbg(st, n);
-                       continue;
-               }
-
                if (st->sts & (NVS_STS_SUSPEND | NVS_STS_SHUTDOWN))
                        return -1;
 
@@ -578,6 +526,9 @@ static int nvi_dmp_rd(struct nvi_state *st, s64 ts, unsigned int n)
                        /* not enough data to process */
                        return 0;
 
+               if (st->sts & NVI_DBG_SPEW_FIFO)
+                       dev_info(&st->i2c->dev, "%s DMP HDR1=%04x HDR2=%04x\n",
+                                __func__, hdr1, hdr2);
                /* we process header2 accuracy data first so that it becomes
                 * part of the header1 status data when pushed.
                 */
@@ -602,7 +553,7 @@ static int nvi_dmp_rd(struct nvi_state *st, s64 ts, unsigned int n)
 
                if (hdr2) {
                        /* unknown header: lost DMP sync so DMP reset */
-                       if (st->sts & NVI_DBG_SPEW_MSG)
+                       if (st->sts & NVI_DBG_SPEW_FIFO)
                                dev_err(&st->i2c->dev,
                                        "%s ERR: DMP sync HDR2=%hx\n",
                                        __func__, hdr2);
@@ -641,7 +592,7 @@ static int nvi_dmp_rd(struct nvi_state *st, s64 ts, unsigned int n)
                n -= data_n;
                if (hdr1) {
                        /* unknown header: lost DMP sync so DMP reset */
-                       if (st->sts & NVI_DBG_SPEW_MSG)
+                       if (st->sts & NVI_DBG_SPEW_FIFO)
                                dev_err(&st->i2c->dev,
                                        "%s ERR: DMP sync HDR1: %x\n",
                                        __func__, hdr1);
@@ -974,14 +925,32 @@ static int nvi_dmp_init(struct nvi_state *st)
        return ret;
 }
 
-static int nvi_dd_able(struct nvi_state *st, unsigned int en_msk)
+static int nvi_dmp_en(struct nvi_state *st)
 {
-       u16 evnt_ctl = 0;
-       u32 out_ctl = 0;
        struct nvi_dmp_dev *dd;
        bool en;
        unsigned int i;
-       int ret;
+       unsigned int en_msk = 0;
+       int ret = 0;
+       u32 out_ctl = 0;
+       u16 evnt_ctl = 0;
+
+       for (i = 0; i < ARRAY_SIZE(nvi_dmp_devs); i++) {
+               dd = &nvi_dmp_devs[i];
+               if (dd->dev == DEV_AUX) {
+                       if (st->snsr[DEV_AUX].enable & (1 << dd->aux_port)) {
+                               en_msk |= (1 << DEV_AUX);
+                               en_msk |= (1 << (dd->aux_port + DEV_N_AUX));
+                               en_msk |= dd->depend_msk;
+                       }
+               } else if (dd->dev < DEV_AUX) {
+                       if (st->snsr[dd->dev].enable) {
+                               en_msk |= (1 << dd->dev);
+                               en_msk |= dd->depend_msk;
+                       }
+               }
+       }
+
 
 #ifdef MPL520
        /* hack for MPL520 */
@@ -1063,43 +1032,10 @@ static int nvi_dd_able(struct nvi_state *st, unsigned int en_msk)
                evnt_ctl |= PEDOMETER_EN;
        if (en_msk & (1 << DEV_SM))
                evnt_ctl |= (SMD_EN | PEDOMETER_EN);
-       ret = nvi_mem_wr_be_mc(st, MOTION_EVENT_CTL, 2, evnt_ctl,
-                              &st->mc.icm.motion_event_ctl);
-       /* SMD_EN is self-clearing so we don't want it in the cache */
-       st->mc.icm.motion_event_ctl &= ~SMD_EN;
+       ret |= nvi_mem_wr_be_mc(st, MOTION_EVENT_CTL, 2, evnt_ctl,
+                               &st->mc.icm.motion_event_ctl);
        /* inv_set_wom */
        ret |= nvi_dmp_irq(st);
-       return ret;
-}
-
-static int nvi_dmp_en(struct nvi_state *st)
-{
-       struct nvi_dmp_dev *dd;
-       unsigned int i;
-       unsigned int en_msk = 0;
-       int ret = 0;
-
-       for (i = 0; i < ARRAY_SIZE(nvi_dmp_devs); i++) {
-               dd = &nvi_dmp_devs[i];
-               if (dd->dev == DEV_AUX) {
-                       if (st->snsr[DEV_AUX].enable & (1 << dd->aux_port)) {
-                               en_msk |= (1 << DEV_AUX);
-                               en_msk |= (1 << (dd->aux_port + DEV_N_AUX));
-                               en_msk |= dd->depend_msk;
-                       }
-               } else if (dd->dev < DEV_AUX) {
-                       if (st->snsr[dd->dev].enable) {
-                               en_msk |= (1 << dd->dev);
-                               en_msk |= dd->depend_msk;
-                       }
-               }
-       }
-
-       if (!st->icm_dmp_war) {
-               st->icm_dmp_war = true;
-               ret = nvi_dd_able(st, ICM_DMP_DEV_MSK | MSK_DEV_MPU);
-       }
-       ret |= nvi_dd_able(st, en_msk);
        if (!ret) {
                st->en_msk |= (1 << DEV_DMP);
                ret = nvi_i2c_wr(st, &st->hal->reg->pm2, 0, __func__);
@@ -1109,7 +1045,6 @@ static int nvi_dmp_en(struct nvi_state *st)
        return ret;
 }
 
-#if ICM_DMP_FW_VER == 0
 static const u8 const dmp_fw_20628[] = {
        /* bank 0: 0x0090 */
        0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -2017,928 +1952,23 @@ static const u8 const dmp_fw_20628[] = {
        0xCA, 0xF2, 0x35, 0xF1, 0x96, 0x8F, 0xA6, 0xD9,
        0x00, 0xD8, 0xF1, 0xFF
 };
-#else /* ICM_DMP_FW_VER */
-/* ICM_DMP_FW_VER == 1 */
-static const u8 const dmp_fw_20628[] = {
-       /* bank 0: 0x0090 */
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
-       0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0xFF,
-       0xFF, 0xF7, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05,
-       0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05,
-       0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00,
-       0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00,
-       0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00,
-       0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00,
-       0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40,
-       0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10,
-       0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04,
-       0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01,
-       /* bank 1: 0x0100 */
-       0x00, 0x00, 0x03, 0x84, 0x00, 0x00, 0x9C, 0x40,
-       0xFE, 0xF8, 0x56, 0xBE, 0x04, 0x00, 0x00, 0x00,
-       0x00, 0x08, 0x94, 0xA5, 0x00, 0x02, 0xB6, 0xA3,
-       0x13, 0x5C, 0x28, 0xF6, 0x0C, 0xF5, 0xC2, 0x8F,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x38,
-       0x04, 0xF6, 0xE8, 0xF4, 0x00, 0x00, 0x68, 0x00,
-       0x00, 0x01, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x01, 0x47, 0xAE, 0x14,
-       0x3E, 0xB8, 0x51, 0xEC, 0x00, 0x0F, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x0C, 0x00,
-       0x00, 0x00, 0x01, 0x5E, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x2B, 0x80,
-       0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0x50, 0x50, 0x3F, 0xAF, 0xAF, 0xB0,
-       0x02, 0x00, 0x00, 0x00, 0x36, 0x66, 0x66, 0x66,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x8E, 0x17, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       /* bank 2: 0x0200 */
-       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x7F, 0xFF, 0x00, 0x00, 0x0C, 0xCC, 0xCC, 0xCD,
-       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x3E, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
-       0x3E, 0xB8, 0x51, 0xEC, 0x01, 0x47, 0xAE, 0x14,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x33, 0x33, 0x33, 0x33, 0x0C, 0xCC, 0xCC, 0xCD,
-       0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x4B, 0xD1,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x0A,
-       0x06, 0xD5, 0x8E, 0x27, 0xE1, 0x05, 0x86, 0xB2,
-       0x38, 0xB3, 0x8D, 0x1F, 0xCF, 0x87, 0xC3, 0x8F,
-       0x06, 0xD5, 0x8E, 0x27, 0x1F, 0xA1, 0xAB, 0x12,
-       0x3A, 0x50, 0xFF, 0xCB, 0x31, 0x7D, 0xD5, 0x43,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       /* bank 3: 0x0300 */
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
-       0x00, 0x06, 0x36, 0x38, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x8D, 0xF2,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x07, 0x00, 0x10, 0x00, 0x96, 0x00, 0x3C,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x0C, 0xC1, 0xD5, 0x21, 0xCB, 0xCF, 0x2A, 0x67,
-       0x51, 0xF6, 0x2F, 0x9C, 0xC5, 0x87, 0x95, 0xAC,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3D,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x20, 0x31, 0x88, 0x00, 0x35, 0xA1, 0x09,
-       0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x0E, 0x49, 0x6E, 0x64, 0xC5, 0x92, 0x24, 0x82,
-       0x59, 0xFA, 0xEE, 0x8D, 0xC2, 0x29, 0xFE, 0xD7,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-       0x00, 0x00, 0x00, 0x14, 0x00, 0x28, 0xCC, 0xCC,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       /* bank 4: 0x0400 */
-       0x00, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-       0x00, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x03, 0x3F, 0xC1, 0xA7, 0x68,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       /* bank 5: 0x0500 */
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x61, 0xA8, 0x00, 0x00, 0x00, 0x10,
-       0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
-       0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-       0x00, 0x00, 0x2E, 0xE0, 0x00, 0x06, 0x40, 0x00,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-       0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x0C, 0xCC, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       /* bank 6: 0x0600 */
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x32, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00,
-       0x00, 0x32, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x32, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00,
-       0x00, 0x32, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x01, 0x49, 0x1B, 0x75,
-       0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x06, 0x40, 0x00, 0x00, 0x0C, 0xCD,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       /* bank 7: 0x0700 */
-       0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x46,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
-       0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x24, 0xF8,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-       0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3C,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       /* bank 8: 0x0800 */
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xEA,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0x4E,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x01, 0x47, 0xAE, 0x14, 0x4E, 0x40, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xF8,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x4E, 0x40, 0x00, 0x00,
-       0x4A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x06,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0xD8, 0xDC, 0xB8, 0xB0, 0xB4, 0xF3, 0xAA, 0xF8,
-       0xF9, 0xD1, 0xD9, 0x88, 0x9A, 0xF8, 0xF7, 0x3E,
-       0xD8, 0xF3, 0x8A, 0x9A, 0xA7, 0x31, 0xD1, 0xDA,
-       0xF1, 0xFF, 0xD8, 0xF1, 0xA4, 0xDF, 0xA5, 0xDE,
-       0xF3, 0xA8, 0xDE, 0xD0, 0xDF, 0xA4, 0x84, 0x9F,
-       0x24, 0xF2, 0xA9, 0xF8, 0xF9, 0xD1, 0xDA, 0xDE,
-       /* bank 9: 0x0900 */
-       0xA8, 0xDE, 0xDF, 0xDF, 0xDF, 0xD8, 0xF4, 0xB1,
-       0x8D, 0xF3, 0xA8, 0xD0, 0xC0, 0xF1, 0xBC, 0xB0,
-       0xBD, 0xBE, 0x82, 0xA1, 0xC3, 0xC5, 0xC7, 0xBC,
-       0xBC, 0xA2, 0xDF, 0xDF, 0xDF, 0x80, 0xF2, 0xA2,
-       0xC3, 0xCB, 0xC5, 0xBC, 0xF1, 0x90, 0xFC, 0xC3,
-       0x00, 0xD9, 0xF4, 0x09, 0x8E, 0xD8, 0xF3, 0xA0,
-       0xDF, 0xF1, 0x82, 0x91, 0xA9, 0x2D, 0x55, 0x7D,
-       0xA9, 0x80, 0x90, 0xFC, 0x51, 0x00, 0x10, 0xFC,
-       0x51, 0x00, 0x10, 0xFC, 0x51, 0x00, 0x10, 0xFC,
-       0xC1, 0x04, 0xD9, 0xF2, 0xA0, 0xDF, 0xF4, 0x09,
-       0x8E, 0xD8, 0xF6, 0xA0, 0xFA, 0x80, 0x90, 0x38,
-       0xF3, 0xDE, 0xDA, 0xF8, 0xF4, 0x09, 0x8E, 0xD8,
-       0xF1, 0xBD, 0x95, 0xFC, 0xC1, 0x04, 0xD9, 0xBD,
-       0xBD, 0xF4, 0x09, 0x8E, 0xDA, 0xBD, 0xBD, 0xD8,
-       0xF6, 0xBC, 0xBC, 0xBD, 0xBD, 0xBE, 0xBE, 0xB5,
-       0xA7, 0x84, 0x92, 0x1A, 0xF8, 0xF9, 0xD1, 0xDB,
-       0x84, 0x93, 0xF7, 0x6A, 0xB6, 0x87, 0x96, 0xF3,
-       0x09, 0xFF, 0xDA, 0xBC, 0xBD, 0xBE, 0xD8, 0xF3,
-       0xBC, 0xBC, 0xBD, 0xBD, 0xBE, 0xBE, 0xB0, 0xB4,
-       0x8F, 0xF4, 0xB9, 0xAF, 0xD0, 0xC7, 0xBE, 0xBE,
-       0xB8, 0xAE, 0xD0, 0xF3, 0x9F, 0x5C, 0xB2, 0x86,
-       0xF4, 0xBE, 0xB9, 0xAF, 0xD0, 0xC3, 0xF1, 0xBE,
-       0xB8, 0xB0, 0xA3, 0xDE, 0xDF, 0xDF, 0xDF, 0xF2,
-       0xA3, 0x81, 0xC0, 0x80, 0xCD, 0xC7, 0xCF, 0xBD,
-       0xB4, 0xB2, 0xA3, 0x86, 0x93, 0xF1, 0x20, 0xFD,
-       0x3F, 0x2C, 0xFD, 0x3F, 0x34, 0xFD, 0x3F, 0x3C,
-       0xFD, 0x3F, 0xBE, 0xA2, 0x20, 0xFD, 0x31, 0xA0,
-       0x2C, 0xFD, 0x31, 0x34, 0xFD, 0x31, 0x3C, 0xFD,
-       0x31, 0xBE, 0xBE, 0xBC, 0xBC, 0xB0, 0xA3, 0x8B,
-       0x93, 0x2D, 0x55, 0x7D, 0xA2, 0x86, 0x9D, 0x08,
-       0xFD, 0x0F, 0xBC, 0xBC, 0xA3, 0x83, 0x92, 0x01,
-       0xA9, 0x9E, 0x0E, 0x16, 0x1E, 0xBE, 0xBE, 0x99,
-       /* bank 10: 0x0A00 */
-       0xA5, 0x2C, 0x54, 0x7C, 0xBA, 0xA5, 0x2C, 0x54,
-       0x7C, 0xBD, 0xBD, 0xBC, 0xBC, 0xB1, 0xB6, 0x83,
-       0x95, 0xA5, 0xF1, 0x0E, 0x16, 0x1E, 0xB2, 0xA7,
-       0x85, 0x95, 0x2A, 0xF0, 0x50, 0x78, 0x87, 0x93,
-       0xF1, 0x01, 0xDA, 0xA5, 0xDF, 0xDF, 0xDF, 0xD8,
-       0xA4, 0xDF, 0xDF, 0xDF, 0xB0, 0x80, 0xF2, 0xA4,
-       0xC3, 0xCB, 0xC5, 0xF1, 0xB1, 0x8E, 0x94, 0xA4,
-       0x0E, 0x16, 0x1E, 0xB2, 0x86, 0xBE, 0xA0, 0x2C,
-       0x34, 0x3C, 0xBE, 0xB8, 0xA6, 0x2C, 0xFD, 0x35,
-       0x34, 0xFD, 0x35, 0x3C, 0xFD, 0x35, 0xBE, 0xBC,
-       0xB2, 0x8E, 0x94, 0xA6, 0x2D, 0x55, 0x7D, 0xBA,
-       0xA4, 0x2D, 0x55, 0x7D, 0xBC, 0xBC, 0xF3, 0xB9,
-       0xA9, 0x80, 0xCD, 0xF2, 0xC4, 0xC5, 0xBA, 0xF3,
-       0xA0, 0xD0, 0xDE, 0xB1, 0xB4, 0xF7, 0xA7, 0x89,
-       0x91, 0x72, 0x89, 0x91, 0x47, 0xB6, 0x97, 0x4A,
-       0xB9, 0xF2, 0xA9, 0xD0, 0xFA, 0xF9, 0xD1, 0xD9,
-       0xF4, 0x0A, 0x8A, 0xD8, 0xF3, 0xBA, 0xA7, 0xF9,
-       0xDB, 0xFB, 0xD9, 0xF1, 0xB9, 0xB0, 0x81, 0xA9,
-       0xC3, 0xF2, 0xC5, 0xF3, 0xBA, 0xA0, 0xD0, 0xF8,
-       0xD8, 0xF1, 0xB1, 0x89, 0xA7, 0xDF, 0xDF, 0xDF,
-       0xF2, 0xA7, 0xC3, 0xCB, 0xC5, 0xF1, 0xB2, 0xB5,
-       0xB9, 0x87, 0x97, 0xA5, 0x22, 0xF0, 0x48, 0x70,
-       0x3C, 0x98, 0x40, 0x68, 0x34, 0x58, 0x99, 0x60,
-       0xF1, 0xBC, 0xB3, 0x8E, 0x95, 0xAA, 0x25, 0x4D,
-       0x75, 0xBC, 0xBC, 0xB8, 0xB0, 0xB4, 0xA7, 0x88,
-       0x9F, 0xF7, 0x5A, 0xF9, 0xD9, 0xF1, 0xBA, 0xA5,
-       0xDF, 0xDF, 0xDF, 0xB8, 0xDA, 0xF3, 0xA8, 0xF8,
-       0x88, 0x9D, 0xD0, 0x7C, 0xD8, 0xF7, 0xA7, 0x88,
-       0x9F, 0x52, 0xF9, 0xD9, 0xF1, 0xBA, 0xA4, 0xDF,
-       0xDF, 0xDF, 0xB8, 0xDA, 0xF3, 0xA8, 0x88, 0x9C,
-       0xD0, 0xDF, 0x68, 0x70, 0x9D, 0x60, 0x70, 0x78,
-       0xD8, 0xF7, 0xA7, 0x88, 0x9F, 0x42, 0xF9, 0xBA,
-       /* bank 11: 0x0B00 */
-       0xA0, 0xD0, 0xF3, 0xD9, 0xDE, 0xD8, 0xF8, 0xF9,
-       0xD1, 0xB8, 0xDA, 0xA8, 0x88, 0x9E, 0xD0, 0x64,
-       0x68, 0xD8, 0xA8, 0x84, 0x98, 0xD0, 0xF7, 0x7E,
-       0xF0, 0xB2, 0xB6, 0xBA, 0x85, 0x91, 0xA7, 0x24,
-       0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31,
-       0x2D, 0x51, 0x79, 0x87, 0xF1, 0xA1, 0x00, 0x2C,
-       0x54, 0x7C, 0xF0, 0x81, 0xA7, 0x04, 0x28, 0x50,
-       0x78, 0xFD, 0x7F, 0xF1, 0xA7, 0x87, 0x96, 0x59,
-       0x91, 0xA1, 0x02, 0x0E, 0x16, 0x1E, 0xF0, 0x84,
-       0x91, 0xA7, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38,
-       0x64, 0x48, 0x31, 0x2D, 0x51, 0x79, 0xA2, 0x87,
-       0x0D, 0x20, 0x59, 0x70, 0x15, 0x38, 0x40, 0x69,
-       0xA4, 0xF1, 0x62, 0xF0, 0x19, 0x31, 0x48, 0xB8,
-       0xB1, 0xB4, 0xF1, 0xA6, 0x80, 0xC6, 0xF4, 0xB0,
-       0x81, 0xF3, 0xA7, 0xC6, 0xB1, 0x8F, 0x97, 0xF7,
-       0x02, 0xF9, 0xDA, 0xF4, 0x0B, 0xB9, 0xD8, 0xB0,
-       0xF7, 0xA7, 0x88, 0x9F, 0x52, 0xF9, 0xD9, 0xF4,
-       0x0B, 0xB2, 0xD8, 0xF1, 0xB2, 0xB6, 0xA6, 0x82,
-       0x92, 0x2A, 0xF0, 0x50, 0xFD, 0x08, 0xF1, 0xA7,
-       0x84, 0x94, 0x02, 0xFD, 0x08, 0xB0, 0xB4, 0x86,
-       0x97, 0x00, 0xB1, 0xBA, 0xA7, 0x81, 0x61, 0xD9,
-       0xF4, 0x0B, 0xEF, 0xD8, 0xF1, 0x41, 0xDA, 0xF4,
-       0x0B, 0xEF, 0xD8, 0xF1, 0xB8, 0xB2, 0xA6, 0x82,
-       0xC0, 0xD8, 0xF1, 0xB0, 0xB6, 0x86, 0x92, 0xA7,
-       0x16, 0xFD, 0x04, 0x0F, 0xFD, 0x04, 0xF0, 0xBA,
-       0x87, 0x91, 0xA7, 0x24, 0x58, 0x3D, 0x40, 0x34,
-       0x49, 0x2D, 0x51, 0xB2, 0x87, 0xF1, 0xA1, 0x00,
-       0x2C, 0x54, 0x7C, 0xF0, 0x81, 0xA7, 0x04, 0x28,
-       0x50, 0x78, 0xFD, 0x7F, 0xF1, 0xA7, 0x87, 0x96,
-       0x59, 0x91, 0xA1, 0x02, 0x0E, 0x16, 0x1E, 0xD8,
-       0xF7, 0xB0, 0xB4, 0xBA, 0x88, 0x9E, 0xA7, 0x6A,
-       0xF9, 0xD9, 0xF4, 0x0D, 0x2D, 0xD8, 0xF3, 0xB6,
-       /* bank 12: 0x0C00 */
-       0x90, 0xFC, 0xC2, 0x00, 0xD9, 0xF4, 0x0D, 0x1D,
-       0xD8, 0xF0, 0xB1, 0xB5, 0x8A, 0x9A, 0xA7, 0x2C,
-       0x50, 0x78, 0xF2, 0xA5, 0xDE, 0xF8, 0xF8, 0xF1,
-       0xB5, 0xB2, 0xA7, 0x87, 0x90, 0x21, 0xDB, 0xB6,
-       0xB1, 0x80, 0x97, 0x29, 0xD9, 0xF2, 0xA5, 0xF8,
-       0xD8, 0xB2, 0xB6, 0xA8, 0x80, 0x91, 0xF0, 0x0C,
-       0x31, 0x14, 0x28, 0x1C, 0x20, 0x04, 0x39, 0xB9,
-       0xB1, 0x8A, 0x98, 0xA6, 0x24, 0x70, 0x59, 0x44,
-       0x69, 0x38, 0x64, 0x48, 0x31, 0x2D, 0x51, 0x79,
-       0xBE, 0xB8, 0xA6, 0x86, 0x0D, 0x20, 0x59, 0x70,
-       0x15, 0x38, 0x40, 0x69, 0x1D, 0x31, 0x48, 0x60,
-       0xBE, 0xBE, 0xBC, 0xB0, 0x86, 0xA7, 0xD0, 0xC3,
-       0xBA, 0xA7, 0x85, 0x98, 0x04, 0x28, 0x50, 0x78,
-       0xF1, 0x84, 0x97, 0x29, 0xD9, 0xBE, 0xB8, 0xA5,
-       0x8D, 0x98, 0x20, 0x2C, 0x34, 0x3C, 0xBE, 0xBE,
-       0xBA, 0xAA, 0xDE, 0xDF, 0xF8, 0xF4, 0x0C, 0x8D,
-       0xD8, 0xF1, 0xBA, 0xAA, 0xF8, 0xA7, 0x84, 0x9A,
-       0x01, 0xD9, 0xAA, 0xDF, 0xF8, 0xD8, 0xF1, 0xBC,
-       0xBC, 0x9A, 0xFC, 0xC1, 0x04, 0xD9, 0xAA, 0xFB,
-       0xA6, 0xB2, 0x89, 0x96, 0x42, 0xB4, 0x97, 0xF0,
-       0x78, 0xA7, 0x86, 0xF1, 0x38, 0xFD, 0x01, 0xB6,
-       0x97, 0x01, 0xA6, 0xD0, 0xB6, 0x9A, 0x52, 0x87,
-       0xF0, 0x18, 0xD8, 0xB2, 0xB6, 0xBA, 0xF1, 0xA9,
-       0x89, 0x90, 0x1A, 0xB0, 0x87, 0x99, 0x60, 0xB8,
-       0xA7, 0xD0, 0xFD, 0x42, 0xBA, 0xB2, 0xBD, 0xB4,
-       0xA7, 0x83, 0x96, 0x2D, 0x55, 0x7D, 0xBE, 0xBB,
-       0xF2, 0xA0, 0xD0, 0xFA, 0xF9, 0xD1, 0xF1, 0xBE,
-       0xBE, 0xBA, 0xD9, 0xA3, 0x86, 0x96, 0x2C, 0x34,
-       0x3C, 0xD8, 0xBD, 0xBD, 0xB6, 0xA7, 0x87, 0x97,
-       0xF5, 0x2C, 0x54, 0x7C, 0xF1, 0xA7, 0x30, 0x18,
-       0xA7, 0x99, 0x0D, 0xB8, 0xD9, 0xA7, 0xD0, 0xDF,
-       0xD8, 0xA7, 0xD0, 0xFA, 0xF9, 0xD1, 0xBA, 0xB0,
-       /* bank 13: 0x0D00 */
-       0xB6, 0xDA, 0xA7, 0x87, 0x90, 0x6A, 0x66, 0xB2,
-       0xA0, 0x87, 0x01, 0x2C, 0xF0, 0xA7, 0x80, 0x90,
-       0x04, 0x28, 0xFD, 0x7F, 0xF1, 0xA7, 0x87, 0x96,
-       0x59, 0x90, 0xA0, 0x02, 0x0E, 0xD8, 0xF0, 0xBA,
-       0xB2, 0xB6, 0xA8, 0x80, 0x91, 0x0C, 0x31, 0x14,
-       0x28, 0x1C, 0x20, 0x04, 0x39, 0xD8, 0xF7, 0xB8,
-       0xB4, 0xB0, 0xA7, 0x9D, 0x88, 0x72, 0xF9, 0xBC,
-       0xBD, 0xBE, 0xD9, 0xF4, 0x0E, 0x86, 0xD8, 0xF2,
-       0xB8, 0xAD, 0xF8, 0xF9, 0xD1, 0xDA, 0xDE, 0xBA,
-       0xA1, 0xDE, 0xAE, 0xDE, 0xF8, 0xD8, 0xF2, 0xB1,
-       0xB5, 0xB9, 0xAE, 0xF9, 0xDA, 0xF4, 0x0E, 0x6D,
-       0xD8, 0xF2, 0x8E, 0xC2, 0xF1, 0xB2, 0x80, 0x9A,
-       0xF5, 0xAF, 0x24, 0xD9, 0xF4, 0x0E, 0x6D, 0xD8,
-       0xF5, 0x44, 0xD9, 0xF4, 0x0E, 0x6D, 0xD8, 0xF5,
-       0x64, 0xD9, 0xF4, 0x0E, 0x6D, 0xD8, 0xF1, 0xB1,
-       0xB6, 0x8B, 0x90, 0xAF, 0x2D, 0x55, 0x7D, 0xB5,
-       0x8C, 0x9F, 0xAD, 0x0E, 0x16, 0x1E, 0x8B, 0x9D,
-       0xAB, 0x2C, 0x54, 0x7C, 0x8D, 0x9F, 0xAA, 0x2E,
-       0x56, 0x7E, 0x8A, 0x9C, 0xAA, 0x2C, 0x54, 0x7C,
-       0x9B, 0xAC, 0x26, 0x46, 0x66, 0xAF, 0x8D, 0x9D,
-       0x00, 0x9C, 0x0D, 0xDB, 0x11, 0x8F, 0x19, 0xF4,
-       0x0D, 0xAD, 0xD8, 0x0E, 0x6D, 0xD8, 0xF1, 0xB2,
-       0x81, 0xB6, 0x90, 0xAF, 0x2D, 0x55, 0x7D, 0xB1,
-       0x8F, 0xB5, 0x9F, 0xAF, 0xF5, 0x2C, 0x54, 0x7C,
-       0xF1, 0xB2, 0x8C, 0x9F, 0xAD, 0x6D, 0xDB, 0x71,
-       0x79, 0xF4, 0x0D, 0xDB, 0xD8, 0xF3, 0xBA, 0xA1,
-       0xDE, 0xF8, 0xF1, 0x80, 0xA1, 0xC3, 0xC5, 0xC7,
-       0xF4, 0x0D, 0xEA, 0xD8, 0xF3, 0xB6, 0xBA, 0x91,
-       0xFC, 0xC0, 0x28, 0xDA, 0xA1, 0xF8, 0xD9, 0xF4,
-       0x0E, 0x6D, 0xD8, 0xF3, 0xB9, 0xAE, 0xF8, 0xF9,
-       0xD1, 0xD9, 0xF8, 0xF4, 0x0E, 0x6D, 0xD8, 0xF1,
-       0xBA, 0xB1, 0xB5, 0xA0, 0x8B, 0x9E, 0x34, 0xFD,
-       /* bank 14: 0x0E00 */
-       0x36, 0x54, 0xFD, 0x36, 0x74, 0xFD, 0x36, 0xB2,
-       0xB6, 0xA3, 0x87, 0xC0, 0xC3, 0xC5, 0xC7, 0xA2,
-       0x88, 0xC0, 0xC3, 0xC5, 0xC7, 0xA4, 0x86, 0xC0,
-       0xC3, 0xC5, 0xC7, 0xA5, 0x85, 0xC4, 0xC7, 0xAC,
-       0x8D, 0xC0, 0xF3, 0xAE, 0xDE, 0xF8, 0xF4, 0x11,
-       0x66, 0xD8, 0xF1, 0xA7, 0x83, 0xC0, 0xC3, 0xC5,
-       0xC7, 0xA8, 0x82, 0xC0, 0xC3, 0xC5, 0xC7, 0xA6,
-       0x84, 0xC0, 0xC3, 0xC5, 0xC7, 0xA5, 0x85, 0xD0,
-       0xC0, 0xC3, 0x8D, 0x9D, 0xAF, 0x39, 0xD9, 0xF4,
-       0x0E, 0x6D, 0xD8, 0xF1, 0x83, 0xB5, 0x9E, 0xAE,
-       0x34, 0xFD, 0x0A, 0x54, 0xFD, 0x0A, 0x74, 0xFD,
-       0x0A, 0xF2, 0xAF, 0xDE, 0xF8, 0xF8, 0xF8, 0xB6,
-       0x81, 0x9F, 0x05, 0xF8, 0xF9, 0xD1, 0xDA, 0x8F,
-       0xA1, 0xC0, 0xF4, 0x0E, 0x74, 0xD8, 0xF2, 0xBA,
-       0xAE, 0xF8, 0xF9, 0xD1, 0xDA, 0xF3, 0xBE, 0xBE,
-       0xBC, 0xBC, 0xBD, 0xBD, 0xB8, 0xB0, 0xB4, 0xA5,
-       0x85, 0x9C, 0x08, 0xBE, 0xBC, 0xBD, 0xD8, 0xF7,
-       0xBC, 0xBC, 0xBD, 0xBD, 0xBB, 0xB4, 0xB0, 0xAF,
-       0x9E, 0x88, 0x62, 0xF9, 0xBC, 0xBD, 0xD9, 0xF4,
-       0x10, 0xE9, 0xD8, 0xF1, 0xBC, 0xBC, 0xB1, 0x85,
-       0xBA, 0xA0, 0xC1, 0xC3, 0xC5, 0xBC, 0xB6, 0xA0,
-       0x8E, 0x90, 0x4C, 0xFD, 0x3B, 0x54, 0xFD, 0x3B,
-       0x5C, 0xFD, 0x3B, 0xB9, 0xB3, 0xB6, 0xF1, 0xAF,
-       0x81, 0x2D, 0x55, 0x7D, 0xB1, 0xB5, 0xAF, 0x8F,
-       0x9F, 0xF5, 0x2C, 0x54, 0x7C, 0xF1, 0xBB, 0xAF,
-       0x86, 0x9F, 0x69, 0xDB, 0x71, 0x79, 0xDA, 0xF3,
-       0xA0, 0xDF, 0xF8, 0xD8, 0xB3, 0xB7, 0xF2, 0xA1,
-       0xF8, 0xF9, 0xD1, 0xF1, 0xDB, 0x8C, 0x9B, 0xAF,
-       0x19, 0xAC, 0xDE, 0xF3, 0xA0, 0xDF, 0xF8, 0xD8,
-       0xAF, 0x80, 0x90, 0x69, 0xD9, 0xA0, 0xFA, 0xF1,
-       0xB2, 0x80, 0xA1, 0xC3, 0xC5, 0xC7, 0xF2, 0xA0,
-       0xD0, 0xDF, 0xF8, 0xF4, 0x10, 0xD3, 0xD8, 0xF2,
-       /* bank 15: 0x0F00 */
-       0xA0, 0xD0, 0xDF, 0xF1, 0xBC, 0xBC, 0xB1, 0xAD,
-       0x8A, 0x9E, 0x26, 0x46, 0x66, 0xBC, 0xB3, 0xB3,
-       0xAD, 0x8D, 0x9D, 0xF5, 0x2C, 0x54, 0x7C, 0xF3,
-       0xA2, 0xDE, 0xF8, 0xF4, 0x10, 0xF4, 0xD8, 0xF1,
-       0xAA, 0x8D, 0xC1, 0xF2, 0xA1, 0xF8, 0xF9, 0xD1,
-       0xDA, 0xF4, 0x0F, 0x52, 0xD8, 0xF1, 0xAF, 0x8A,
-       0x9A, 0x21, 0x8F, 0x9F, 0xF5, 0x00, 0xF1, 0x80,
-       0x41, 0xD9, 0xF4, 0x0F, 0x52, 0xD8, 0xF1, 0x91,
-       0xFC, 0xC0, 0x04, 0xD9, 0xF4, 0x0F, 0x99, 0xD8,
-       0xF3, 0xA1, 0xDE, 0xF8, 0xA0, 0xDF, 0xF8, 0xF4,
-       0x10, 0xD3, 0xF3, 0x91, 0xFC, 0xC0, 0x07, 0xD9,
-       0xF4, 0x0F, 0x99, 0xD8, 0xF1, 0xAF, 0xB1, 0x84,
-       0x9C, 0x01, 0xB3, 0xB5, 0x80, 0x97, 0xDB, 0xF3,
-       0x21, 0xB9, 0xA7, 0xD9, 0xF8, 0xF4, 0x0F, 0x99,
-       0xD8, 0xF3, 0xB9, 0xA7, 0xDE, 0xF8, 0xBB, 0xF1,
-       0xA3, 0x87, 0xC0, 0xC3, 0xC5, 0xC7, 0xA4, 0x88,
-       0xC0, 0xC3, 0xC5, 0xC7, 0xA5, 0x89, 0xC0, 0xC3,
-       0xC5, 0xC7, 0xA6, 0x86, 0xC4, 0xC7, 0xA1, 0x82,
-       0xC3, 0xC5, 0xC7, 0xF3, 0xA1, 0xDE, 0xF4, 0x10,
-       0xE9, 0xD8, 0xF1, 0xBB, 0xB3, 0xB7, 0xA1, 0xF8,
-       0xF9, 0xD1, 0xDA, 0xF2, 0xA0, 0xD0, 0xDF, 0xF8,
-       0xD8, 0xF1, 0xB9, 0xB1, 0xB6, 0xA8, 0x87, 0x90,
-       0x2D, 0x55, 0x7D, 0xF5, 0xB5, 0xA8, 0x88, 0x98,
-       0x2C, 0x54, 0x7C, 0xF1, 0xAF, 0x86, 0x98, 0x29,
-       0xDB, 0x31, 0x39, 0xF4, 0x10, 0xE9, 0xD8, 0xF1,
-       0xB3, 0xB6, 0xA7, 0x8A, 0x90, 0x4C, 0x54, 0x5C,
-       0xBA, 0xA0, 0x81, 0x90, 0x2D, 0x55, 0x7D, 0xBB,
-       0xF2, 0xA2, 0xF8, 0xF9, 0xD1, 0xDA, 0xDE, 0xF4,
-       0x10, 0xE9, 0xD8, 0xF1, 0xBA, 0xB3, 0xA3, 0x83,
-       0xC0, 0xC3, 0xC5, 0xC7, 0xA2, 0x84, 0xC0, 0xC3,
-       0xC5, 0xC7, 0xA4, 0x85, 0xC0, 0xC3, 0xC5, 0xC7,
-       0xA5, 0x86, 0xC0, 0xC3, 0xAC, 0x8C, 0xC2, 0xF3,
-       /* bank 16: 0x1000 */
-       0xAE, 0xDE, 0xF8, 0xF8, 0xF4, 0x11, 0x66, 0xD8,
-       0xF1, 0xB2, 0xBB, 0xA3, 0x83, 0xC0, 0xC3, 0xC5,
-       0xC7, 0xA4, 0x82, 0xC0, 0xC3, 0xC5, 0xC7, 0xA5,
-       0x84, 0xC0, 0xC3, 0xC5, 0xC7, 0xA6, 0x85, 0xC0,
-       0xC3, 0xAC, 0x8C, 0xC4, 0xB3, 0xB7, 0xAF, 0x85,
-       0x95, 0x56, 0xFD, 0x0F, 0x86, 0x96, 0x06, 0xFD,
-       0x0F, 0xF0, 0x84, 0x9F, 0xAF, 0x4C, 0x70, 0xFD,
-       0x0F, 0xF1, 0x86, 0x96, 0x2E, 0xFD, 0x0F, 0x84,
-       0x9F, 0x72, 0xFD, 0x0F, 0xDF, 0xAF, 0x2C, 0x54,
-       0x7C, 0xAF, 0x8C, 0x69, 0xDB, 0x71, 0x79, 0x8B,
-       0x9C, 0x61, 0xF4, 0x10, 0x58, 0xDA, 0x10, 0xE9,
-       0xD8, 0xF1, 0xAB, 0x83, 0x91, 0x28, 0xFD, 0x05,
-       0x54, 0xFD, 0x05, 0x7C, 0xFD, 0x05, 0xB8, 0xBD,
-       0xBD, 0xB5, 0xA3, 0x8B, 0x95, 0x05, 0x2D, 0x55,
-       0xBD, 0xB4, 0xBB, 0xAD, 0x8E, 0x93, 0x0E, 0x16,
-       0x1E, 0xB7, 0xAD, 0x8D, 0x9D, 0xF5, 0x2C, 0x54,
-       0x7C, 0xF3, 0xA2, 0xDE, 0xF8, 0xF8, 0xF4, 0x10,
-       0xF4, 0xD8, 0xF2, 0xA1, 0xF8, 0xF9, 0xD1, 0xD9,
-       0xF1, 0xAF, 0x8D, 0x9A, 0x01, 0xF5, 0x8F, 0x90,
-       0xDB, 0x00, 0xF4, 0x10, 0xE9, 0xDA, 0xF1, 0xAA,
-       0x8D, 0xC0, 0xAE, 0x8B, 0xC1, 0xC3, 0xC5, 0xBE,
-       0xBE, 0xF3, 0xBA, 0xA2, 0xD0, 0xDF, 0xF8, 0xBE,
-       0xBB, 0xF1, 0xA1, 0xDE, 0xA7, 0x83, 0xC0, 0xC3,
-       0xC5, 0xC7, 0xA8, 0x84, 0xC0, 0xC3, 0xC5, 0xC7,
-       0xA9, 0x85, 0xC0, 0xC3, 0xC5, 0xC7, 0xA6, 0x86,
-       0xD0, 0xC0, 0xC3, 0xA2, 0x81, 0xC3, 0xC5, 0xC7,
-       0xF4, 0x10, 0xE9, 0xF1, 0xBB, 0xB3, 0xA3, 0xDE,
-       0xDF, 0xDF, 0xDF, 0xA4, 0x8C, 0xC4, 0xC5, 0xC5,
-       0xC5, 0xA5, 0xDE, 0xDF, 0xDF, 0xDF, 0xA6, 0xDE,
-       0xDF, 0xD8, 0xF3, 0xB9, 0xAE, 0xDF, 0xBA, 0xAE,
-       0xDE, 0xBB, 0xA2, 0xDE, 0xD8, 0xF3, 0xA2, 0xF8,
-       0xF9, 0xD1, 0xD9, 0xF4, 0x11, 0x64, 0xD8, 0xF1,
-       /* bank 17: 0x1100 */
-       0xAF, 0x8D, 0x9D, 0x49, 0xDA, 0xC3, 0xC5, 0xD9,
-       0xC5, 0xC3, 0xD8, 0xAF, 0x9F, 0x69, 0xD0, 0xDA,
-       0xC7, 0xD9, 0x8F, 0xC3, 0x8D, 0xAF, 0xC7, 0xD8,
-       0xB9, 0xA9, 0x8F, 0x9F, 0xF0, 0x54, 0x78, 0xF1,
-       0xFD, 0x0F, 0xA6, 0xB1, 0x89, 0xC2, 0xB3, 0xAF,
-       0x8F, 0x9F, 0x2E, 0xFD, 0x11, 0xB1, 0xB5, 0xA9,
-       0x89, 0x9F, 0x2C, 0xF3, 0xAE, 0xDF, 0xF8, 0xF8,
-       0xF4, 0x13, 0x22, 0xD8, 0xF1, 0xAD, 0x86, 0x99,
-       0x06, 0xFD, 0x10, 0xDF, 0xF8, 0xFD, 0x0F, 0xAD,
-       0x8D, 0x9D, 0x4C, 0xBB, 0xB3, 0xAD, 0x8F, 0x9D,
-       0x2A, 0xFD, 0x0F, 0xB7, 0x92, 0xFC, 0xC0, 0x04,
-       0xD9, 0xF4, 0x0F, 0x1E, 0xD8, 0xFC, 0xC0, 0x08,
-       0xD9, 0xF4, 0x10, 0x89, 0xD8, 0xF1, 0xD8, 0xF3,
-       0xBA, 0xB2, 0xB6, 0xAE, 0xF8, 0xF9, 0xD1, 0xD9,
-       0xF4, 0x13, 0x20, 0xD8, 0xF1, 0xAF, 0xDE, 0xF9,
-       0xFD, 0x0F, 0x80, 0x90, 0x2C, 0x54, 0x7C, 0xA0,
-       0x2A, 0xF0, 0x50, 0x78, 0xFD, 0x0F, 0xF1, 0xA2,
-       0x82, 0x9C, 0x00, 0x24, 0x44, 0x64, 0xA9, 0x8F,
-       0x94, 0xF0, 0x04, 0xFD, 0x0F, 0x0C, 0x30, 0xFD,
-       0x0F, 0x1C, 0x95, 0x20, 0x48, 0xFD, 0x0F, 0xF1,
-       0x99, 0xC1, 0x2C, 0x54, 0x7C, 0xAA, 0x82, 0x99,
-       0x02, 0xFD, 0x0F, 0x2E, 0xFD, 0x0F, 0x56, 0xFD,
-       0x0F, 0x7E, 0xFD, 0x0F, 0xAC, 0x83, 0x9F, 0xF0,
-       0x04, 0x28, 0x50, 0x78, 0xFD, 0x0F, 0x8C, 0x90,
-       0xF1, 0x21, 0xF5, 0x8C, 0x9C, 0x2C, 0xF1, 0xAB,
-       0xDE, 0xF8, 0xFD, 0x0F, 0x8B, 0xC1, 0xAF, 0xDE,
-       0xF1, 0x89, 0xAF, 0x9F, 0xFC, 0xC0, 0x00, 0xD9,
-       0xC1, 0x8A, 0xC1, 0x82, 0xC1, 0xD8, 0xFC, 0xC0,
-       0x04, 0xD9, 0xC3, 0x8A, 0xC3, 0x82, 0xC3, 0xD8,
-       0xFC, 0xC0, 0x08, 0xD9, 0xC5, 0x8A, 0xC5, 0x82,
-       0xC5, 0xD8, 0xFC, 0xC0, 0x0C, 0xD9, 0xC7, 0x8A,
-       0xC7, 0x82, 0xC7, 0xD8, 0xFC, 0xC0, 0x10, 0xD9,
-       /* bank 18: 0x1200 */
-       0xF4, 0x12, 0xDA, 0xD8, 0xF1, 0x8B, 0xAB, 0xD0,
-       0xC0, 0x9F, 0x2E, 0xFD, 0x0F, 0xA0, 0xDE, 0xAB,
-       0xD0, 0x90, 0x65, 0xA0, 0x8F, 0x9F, 0x4A, 0xFD,
-       0x0F, 0xAB, 0x8B, 0x90, 0x00, 0xB9, 0xA9, 0xC1,
-       0xF3, 0xAE, 0xDF, 0xF8, 0xF4, 0x13, 0x22, 0xD8,
-       0xF1, 0xBA, 0xB1, 0xB6, 0x89, 0xAB, 0xC1, 0xB2,
-       0xAF, 0xD0, 0x8B, 0x9F, 0x3E, 0xFD, 0x0F, 0x5A,
-       0xFD, 0x0F, 0x9F, 0xFC, 0xC0, 0x00, 0xD9, 0xF1,
-       0x8F, 0xA2, 0xC6, 0xD8, 0xFC, 0xC0, 0x04, 0xD9,
-       0x8F, 0xA2, 0xC7, 0x84, 0xAB, 0xD0, 0xC0, 0xAF,
-       0x8A, 0x9B, 0x1E, 0xFD, 0x0F, 0x36, 0xFD, 0x0F,
-       0xA4, 0x8F, 0x30, 0xAA, 0x9A, 0x40, 0xD8, 0x9F,
-       0xFC, 0xC0, 0x08, 0xD9, 0x8F, 0xA2, 0xD0, 0xC6,
-       0x84, 0xAB, 0xD0, 0xC2, 0xAF, 0x8A, 0x9B, 0x1E,
-       0xFD, 0x0F, 0x56, 0xFD, 0x0F, 0xA4, 0x8F, 0x34,
-       0xAA, 0x9A, 0x40, 0x84, 0xAB, 0xD0, 0xC4, 0xAF,
-       0x8A, 0x9B, 0x3E, 0xFD, 0x0F, 0x56, 0xFD, 0x0F,
-       0xA4, 0xD0, 0x8F, 0x30, 0xAA, 0x9A, 0x4C, 0xD8,
-       0x9F, 0xFC, 0xC0, 0x0C, 0xD9, 0x8F, 0xA2, 0xD0,
-       0xC7, 0x84, 0xAB, 0xD0, 0xC6, 0xAF, 0x8A, 0x9B,
-       0x1E, 0xFD, 0x0F, 0x76, 0xFD, 0x0F, 0xA4, 0xD0,
-       0x8F, 0x34, 0xAA, 0x9A, 0x40, 0x85, 0xAB, 0xD0,
-       0xC0, 0xAF, 0x8A, 0x9B, 0x3E, 0xFD, 0x0F, 0x76,
-       0xFD, 0x0F, 0xA5, 0x8F, 0x30, 0xAA, 0x9A, 0x4C,
-       0x85, 0xAB, 0xD0, 0xC2, 0xAF, 0x8A, 0x9B, 0x5E,
-       0xFD, 0x0F, 0x76, 0xFD, 0x0F, 0xA5, 0x8F, 0x34,
-       0xAA, 0xD0, 0x9A, 0x50, 0xD8, 0xAF, 0xF8, 0xF4,
-       0x11, 0xD0, 0xF1, 0xD8, 0x8B, 0x9C, 0xAF, 0x2A,
-       0xFD, 0x0F, 0x8A, 0x9F, 0xB9, 0xAF, 0x02, 0xFD,
-       0x0F, 0x26, 0xFD, 0x0F, 0x46, 0xFD, 0x0F, 0x66,
-       0xFD, 0x0F, 0x83, 0xB5, 0x9F, 0xBA, 0xA3, 0x00,
-       0x2C, 0x54, 0x7C, 0xB6, 0x82, 0x92, 0xA0, 0x31,
-       /* bank 19: 0x1300 */
-       0xD9, 0xAD, 0xC3, 0xDA, 0xAD, 0xC5, 0xD8, 0x8D,
-       0xA0, 0x39, 0xDA, 0x82, 0xAD, 0xC7, 0xD8, 0xF3,
-       0x9E, 0xFC, 0xC0, 0x04, 0xD9, 0xF4, 0x0E, 0x29,
-       0xD8, 0xFC, 0xC0, 0x08, 0xD9, 0xF4, 0x10, 0x07,
-       0xD8, 0xF1, 0xD8, 0xF1, 0xB9, 0xB1, 0xB5, 0xA9,
-       0xDE, 0xF8, 0x89, 0x99, 0xAF, 0x31, 0xD9, 0xF4,
-       0x13, 0x76, 0xD8, 0xF1, 0x85, 0xAF, 0x29, 0xD9,
-       0x84, 0xA9, 0xC2, 0xD8, 0x85, 0xAF, 0x49, 0xD9,
-       0x84, 0xA9, 0xC4, 0xD8, 0x85, 0xAF, 0x69, 0xD9,
-       0x84, 0xA9, 0xC6, 0xD8, 0x89, 0xAF, 0x39, 0xDA,
-       0x8E, 0xA9, 0x50, 0xF4, 0x13, 0x76, 0xD8, 0xF1,
-       0x89, 0xAA, 0x7C, 0xFD, 0x02, 0x9A, 0x68, 0xD8,
-       0xF1, 0xAA, 0xFB, 0xDA, 0x89, 0x99, 0xAF, 0x26,
-       0xFD, 0x0F, 0x8F, 0x95, 0x25, 0x89, 0x9F, 0xA9,
-       0x12, 0xFD, 0x0F, 0xF4, 0x13, 0x5F, 0xD8, 0xF3,
-       0x9E, 0xFC, 0xC1, 0x04, 0xD9, 0xF4, 0x12, 0x27,
-       0xD8, 0xFC, 0xC1, 0x08, 0xD9, 0xF4, 0x11, 0x3B,
-       0xD8, 0xF1, 0xBE, 0xBC, 0xBC, 0xBD, 0xBD, 0xF7,
-       0xB8, 0xB4, 0xB0, 0xAC, 0x84, 0x9D, 0x12, 0xF9,
-       0xF2, 0xBC, 0xBC, 0x8A, 0xA7, 0xD0, 0xD9, 0xC3,
-       0xDA, 0xC5, 0xD8, 0xBC, 0xBD, 0xBD, 0xF3, 0x8F,
-       0xA8, 0xC0, 0xF9, 0xAC, 0x84, 0x97, 0xF5, 0x1A,
-       0xF1, 0xF8, 0xF9, 0xD1, 0xDA, 0xA8, 0xDE, 0xD8,
-       0x95, 0xFC, 0xC1, 0x03, 0xD9, 0xA8, 0xDE, 0xD8,
-       0xBC, 0xBC, 0xF1, 0x98, 0xFC, 0xC0, 0x1C, 0xDB,
-       0x95, 0xFC, 0xC0, 0x03, 0xA5, 0xDE, 0xA4, 0xDE,
-       0xD8, 0xAC, 0x88, 0x95, 0x00, 0xD1, 0xD9, 0xA5,
-       0xF8, 0xD8, 0xA4, 0xFC, 0x80, 0x04, 0x88, 0x95,
-       0xA4, 0xFC, 0x08, 0x04, 0x20, 0xF7, 0xBC, 0xBD,
-       0xB5, 0xAC, 0x84, 0x9F, 0xF6, 0x02, 0xF8, 0xF9,
-       0xD1, 0xDB, 0x84, 0x93, 0xF7, 0x6A, 0xF9, 0xD9,
-       0xF3, 0xBC, 0xBC, 0xA8, 0x88, 0x92, 0x18, 0xBC,
-       /* bank 20: 0x1400 */
-       0xD8, 0xBC, 0xBC, 0xB4, 0xA8, 0x88, 0x9E, 0x08,
-       0xF4, 0xBE, 0xA1, 0xD0, 0xC1, 0xBC, 0xF7, 0xBE,
-       0xBE, 0xB5, 0xAC, 0x84, 0x93, 0x6A, 0xF9, 0xBD,
-       0xBD, 0xB4, 0xD9, 0xF2, 0xAC, 0x8C, 0x97, 0x18,
-       0xF6, 0x84, 0x9C, 0x02, 0xF8, 0xF9, 0xDB, 0xD1,
-       0xF1, 0xA3, 0xDE, 0xA5, 0xDF, 0xD8, 0xF7, 0xBE,
-       0xBD, 0xA7, 0x9D, 0x88, 0x7A, 0xF9, 0xD9, 0xF4,
-       0x15, 0x9B, 0xD8, 0xF1, 0xBE, 0xBE, 0xBD, 0xBD,
-       0xBC, 0xBC, 0x93, 0xA3, 0xFC, 0xC0, 0x08, 0xD9,
-       0xDE, 0xD8, 0x95, 0xFC, 0xC0, 0x08, 0xD9, 0xA5,
-       0xDF, 0xF8, 0xD8, 0x95, 0xFC, 0xC1, 0x04, 0xDB,
-       0xFC, 0xC0, 0x04, 0xA3, 0xDE, 0xD8, 0x93, 0xFC,
-       0xC0, 0x04, 0xDA, 0xF4, 0x15, 0x46, 0xD8, 0xF1,
-       0xAC, 0x82, 0x96, 0x2D, 0x55, 0x7D, 0x8C, 0x9C,
-       0x34, 0x18, 0xF5, 0xAC, 0x95, 0x1C, 0xD9, 0xF1,
-       0xA3, 0xDE, 0xA5, 0xDF, 0xF4, 0x15, 0x46, 0xD8,
-       0xF7, 0xBC, 0xBD, 0xAC, 0x88, 0x9F, 0x56, 0xF9,
-       0xBC, 0xBC, 0xBD, 0xBD, 0xD9, 0xF4, 0x14, 0xAB,
-       0xD8, 0xF1, 0xAC, 0x83, 0x90, 0x45, 0xF9, 0xD9,
-       0xA0, 0xF8, 0xAC, 0x8C, 0x9C, 0x06, 0xD2, 0xA1,
-       0x91, 0x00, 0x2C, 0x87, 0xD4, 0xF0, 0xA7, 0x8C,
-       0x9C, 0x20, 0xD3, 0xD8, 0xF3, 0xBD, 0x98, 0xFC,
-       0xC0, 0x04, 0xBD, 0xBD, 0xD9, 0xF1, 0xAC, 0x83,
-       0x98, 0x49, 0xDB, 0xF9, 0xD9, 0xA8, 0xFA, 0xA4,
-       0x84, 0x90, 0x2C, 0x54, 0x7C, 0xD8, 0xA0, 0x83,
-       0x93, 0xFC, 0x08, 0x04, 0x20, 0xFC, 0xC0, 0x08,
-       0xDA, 0xF4, 0x15, 0x46, 0xD8, 0xF1, 0xAC, 0x81,
-       0x91, 0x02, 0xFD, 0x17, 0x87, 0xD4, 0xFD, 0x47,
-       0xF0, 0x81, 0x09, 0x09, 0x09, 0x9C, 0x00, 0x00,
-       0xF1, 0x93, 0xFC, 0x4C, 0x08, 0x00, 0xD8, 0xA9,
-       0x82, 0x96, 0x01, 0x93, 0xFC, 0xC0, 0x08, 0xDB,
-       0x95, 0xFC, 0xC1, 0x00, 0xA3, 0xDE, 0xAC, 0x89,
-       /* bank 21: 0x1500 */
-       0x93, 0xF5, 0x18, 0xF1, 0xA5, 0xDF, 0xF8, 0xD8,
-       0xF1, 0x83, 0xAC, 0xC4, 0xF8, 0x8C, 0x93, 0xA8,
-       0xFC, 0x30, 0x08, 0x10, 0xFC, 0xC0, 0x08, 0xDB,
-       0x95, 0xFC, 0xC1, 0x04, 0xD9, 0xA3, 0xDE, 0xA5,
-       0xDF, 0xA4, 0x84, 0x34, 0xFD, 0x08, 0x54, 0xFD,
-       0x08, 0x74, 0xFD, 0x08, 0xA9, 0x94, 0xF5, 0x2C,
-       0x54, 0x7C, 0xF1, 0xDB, 0xAC, 0x87, 0x99, 0x49,
-       0x51, 0x59, 0x84, 0xAB, 0xC3, 0xC5, 0xC7, 0x82,
-       0xA6, 0xC0, 0xF3, 0xAA, 0xDF, 0xF8, 0xF1, 0xD8,
-       0x93, 0xFC, 0xC0, 0x00, 0xD9, 0x86, 0xA2, 0xC3,
-       0xC5, 0xC7, 0xA3, 0xDE, 0xF8, 0xA0, 0xDE, 0xA1,
-       0xDE, 0xDF, 0xA7, 0xDE, 0xDF, 0xA8, 0xDF, 0xA4,
-       0xDF, 0xDF, 0xDF, 0xD8, 0xF1, 0x9A, 0xFC, 0xC1,
-       0x04, 0xD9, 0xAC, 0x82, 0x96, 0x01, 0xF3, 0x81,
-       0xAA, 0xC4, 0xDB, 0xF5, 0xAC, 0x8C, 0x9A, 0x18,
-       0xF3, 0xAA, 0xF9, 0xD8, 0xAC, 0x8A, 0x9A, 0x41,
-       0xD1, 0xAA, 0xD0, 0xC0, 0xD9, 0xF2, 0xAC, 0x85,
-       0x9A, 0x41, 0xDB, 0xD1, 0xBC, 0xBD, 0xBE, 0xF4,
-       0x15, 0x9B, 0xD8, 0xF3, 0xBC, 0xBD, 0xBE, 0xA5,
-       0x85, 0x9C, 0x10, 0xD8, 0xF1, 0xBA, 0xB2, 0xB6,
-       0xF3, 0x92, 0xFC, 0xC3, 0x07, 0xD9, 0xF2, 0xA5,
-       0xDE, 0xD8, 0xF2, 0xA7, 0x82, 0x95, 0x65, 0xD1,
-       0x85, 0xA2, 0xD0, 0xC1, 0xD9, 0xB5, 0xA7, 0x86,
-       0x93, 0x31, 0xDB, 0xD1, 0xF4, 0x15, 0xC8, 0xD8,
-       0xF3, 0xB8, 0xB0, 0xB4, 0xA5, 0x85, 0x9C, 0x18,
-       0xD8, 0xF1, 0xBA, 0xB2, 0xB6, 0x81, 0x96, 0xA1,
-       0xF8, 0xF9, 0xB9, 0xA6, 0xDA, 0xC3, 0xC5, 0xC7,
-       0xD9, 0x2D, 0x4D, 0x6D, 0xD8, 0xBA, 0x88, 0xA8,
-       0xF8, 0xF9, 0xA7, 0xDA, 0xC3, 0xC5, 0xC7, 0xD9,
-       0x2D, 0x4D, 0x6D, 0xD8, 0xF2, 0xB0, 0xB9, 0xA3,
-       0xFA, 0xF9, 0xD1, 0xDA, 0xB8, 0x8F, 0xA7, 0xC0,
-       0xF9, 0xB5, 0x87, 0x93, 0xF6, 0x0A, 0xF2, 0xB4,
-       /* bank 22: 0x1600 */
-       0xA4, 0x84, 0x97, 0x24, 0xA4, 0x84, 0x9E, 0x3C,
-       0xD8, 0xF7, 0xB9, 0xB0, 0xB5, 0xA6, 0x88, 0x95,
-       0x5A, 0xF9, 0xDA, 0xF1, 0xAB, 0xF8, 0xD8, 0xB8,
-       0xB4, 0xF3, 0x98, 0xFC, 0xC0, 0x04, 0xDA, 0xF4,
-       0x16, 0x72, 0xD8, 0xF2, 0xA9, 0xD0, 0xF8, 0x89,
-       0x9B, 0xA7, 0x51, 0xD9, 0xA9, 0xD0, 0xDE, 0xA4,
-       0x84, 0x9E, 0x2C, 0xD8, 0xA8, 0xFA, 0x88, 0x9A,
-       0xA7, 0x29, 0xD9, 0xA8, 0xDF, 0xA4, 0x84, 0x9D,
-       0x34, 0xD8, 0xA8, 0xD0, 0xF8, 0x88, 0x9A, 0xA7,
-       0x51, 0xD9, 0xA8, 0xD0, 0xDE, 0xA4, 0x84, 0x9D,
-       0x2C, 0xD8, 0xA8, 0xD0, 0xFA, 0x88, 0x9A, 0xA7,
-       0x79, 0xD9, 0xA8, 0xD0, 0xDF, 0xA4, 0x84, 0x9D,
-       0x24, 0xD8, 0xF3, 0xA9, 0xD0, 0xF8, 0x89, 0x9B,
-       0xA7, 0x51, 0xD9, 0xA9, 0xD0, 0xDE, 0xA4, 0x84,
-       0x9C, 0x2C, 0xD8, 0xF7, 0xA7, 0x88, 0x9F, 0x52,
-       0xF9, 0xD9, 0xF4, 0x16, 0xAF, 0xD8, 0xF1, 0xB9,
-       0xA2, 0xFA, 0xF3, 0xB8, 0xA9, 0xD0, 0xFA, 0x89,
-       0x9B, 0xA7, 0x79, 0xD9, 0xA9, 0xD0, 0xDF, 0xA4,
-       0x84, 0x9C, 0x24, 0xD8, 0xA7, 0x84, 0x9D, 0xF7,
-       0x12, 0xF9, 0xD9, 0xF4, 0x16, 0xAF, 0xD8, 0xF2,
-       0xA8, 0xD0, 0xF8, 0x88, 0x9A, 0xA7, 0x51, 0xD9,
-       0xA8, 0xD0, 0xDE, 0xA4, 0x84, 0x9D, 0x2C, 0xD8,
-       0xF7, 0xA7, 0x88, 0x9F, 0x42, 0xF9, 0xD9, 0xF4,
-       0x16, 0xF6, 0xD8, 0xF3, 0xA9, 0xF8, 0x89, 0x9B,
-       0xA7, 0x01, 0xD9, 0xA9, 0xDE, 0xA4, 0x84, 0x9C,
-       0x3C, 0xD8, 0xA9, 0xFA, 0x89, 0x9B, 0xA7, 0x29,
-       0xD9, 0xA9, 0xDF, 0xA4, 0x84, 0x9C, 0x34, 0xD8,
-       0xF2, 0xA9, 0xFA, 0x89, 0x9B, 0xA7, 0x29, 0xD9,
-       0xA9, 0xDF, 0xA4, 0x84, 0x9E, 0x34, 0xD8, 0xA9,
-       0xD0, 0xFA, 0x89, 0x9B, 0xA7, 0x79, 0xD9, 0xA9,
-       0xD0, 0xDF, 0xA4, 0x84, 0x9E, 0x24, 0xD8, 0xF2,
-       0xA4, 0x84, 0x9D, 0x3C, 0xF1, 0xA7, 0xDE, 0xF2,
-       /* bank 23: 0x1700 */
-       0x84, 0xCA, 0x97, 0xA4, 0x24, 0xA5, 0x94, 0xF6,
-       0x0A, 0xF7, 0x85, 0x02, 0xF8, 0xF9, 0xD1, 0xD9,
-       0xF6, 0x9B, 0x02, 0xD8, 0xA7, 0xB1, 0x80, 0x95,
-       0x42, 0xF8, 0xF9, 0xD1, 0xD9, 0xF4, 0x18, 0x6A,
-       0xD8, 0xF0, 0xB0, 0x85, 0xA4, 0xD0, 0xC0, 0xDD,
-       0xF2, 0xC0, 0xDC, 0xF6, 0xA7, 0x9F, 0x02, 0xF9,
-       0xD9, 0xF3, 0xA5, 0xDE, 0xDA, 0xF0, 0xDD, 0xF2,
-       0xC8, 0xDC, 0xD8, 0x85, 0x95, 0xA5, 0x00, 0xD9,
-       0x86, 0xF0, 0xDD, 0xF1, 0xC2, 0xC4, 0xC6, 0xDC,
-       0xD8, 0xF2, 0x85, 0x00, 0xD9, 0x80, 0xF0, 0xDD,
-       0xF2, 0xCC, 0xC6, 0xCE, 0xDC, 0xD8, 0x85, 0x00,
-       0xD9, 0xB1, 0x89, 0xF0, 0xDD, 0xF2, 0xC2, 0xCA,
-       0xC4, 0xDC, 0xD8, 0xB0, 0x85, 0x00, 0xD9, 0x81,
-       0xF0, 0xDD, 0xF2, 0xC6, 0xCE, 0x82, 0xC0, 0xC8,
-       0xDC, 0xD8, 0x85, 0x00, 0xB1, 0xD9, 0x86, 0xF0,
-       0xDD, 0xF1, 0xC2, 0xC4, 0xC6, 0xDC, 0xD8, 0xB0,
-       0xF2, 0x85, 0x00, 0xD9, 0xB2, 0x87, 0xF0, 0xDD,
-       0xF1, 0xC2, 0xC4, 0xC6, 0xF2, 0xB2, 0x86, 0xC4,
-       0xDC, 0xD8, 0xB0, 0x85, 0x00, 0xB1, 0xD9, 0x8F,
-       0xF0, 0xDD, 0xF2, 0xC2, 0xC4, 0xC6, 0xDC, 0xD8,
-       0xB0, 0x85, 0x00, 0x00, 0xD9, 0x82, 0xF0, 0xDD,
-       0xF2, 0xC2, 0xCA, 0xC4, 0xDC, 0xD8, 0x85, 0x00,
-       0xD9, 0x85, 0xF0, 0xDD, 0xF1, 0xC2, 0xC4, 0xC6,
-       0xDC, 0xD8, 0xF2, 0x85, 0x00, 0xD9, 0xB1, 0x8A,
-       0xF0, 0xDD, 0xF1, 0xC2, 0xC4, 0xC6, 0xDC, 0xD8,
-       0xB0, 0xF2, 0x85, 0x00, 0xD9, 0xB1, 0xF0, 0xDD,
-       0xF1, 0x82, 0xC4, 0xDC, 0xD8, 0xB0, 0xF3, 0xA5,
-       0xF8, 0xF9, 0xD1, 0xD9, 0xF4, 0x18, 0x1F, 0xD8,
-       0xF3, 0x85, 0x95, 0xA5, 0x00, 0x00, 0xD9, 0xBE,
-       0xF2, 0xBA, 0xAE, 0xDE, 0xBE, 0xBE, 0xBC, 0xB2,
-       0x81, 0xF0, 0xDD, 0xF3, 0xC8, 0xDC, 0xBC, 0xBC,
-       0xD8, 0xB0, 0xB8, 0x85, 0xA5, 0x00, 0xD9, 0xF2,
-       /* bank 24: 0x1800 */
-       0xBE, 0xBE, 0xAA, 0xDE, 0xBE, 0xBC, 0xBC, 0x8A,
-       0xF0, 0xDD, 0xF3, 0xC0, 0xDC, 0xBC, 0xD8, 0x85,
-       0xA5, 0x00, 0xD9, 0xB9, 0xF2, 0xA3, 0xD0, 0xDE,
-       0xB2, 0x85, 0xF0, 0xDD, 0xF3, 0xC8, 0xDC, 0xD8,
-       0xF6, 0xB8, 0xB0, 0xA7, 0x84, 0x9D, 0x5A, 0xF8,
-       0xF9, 0xD1, 0xDA, 0xB1, 0x80, 0xF0, 0xDD, 0xF3,
-       0xC4, 0xDC, 0xD8, 0xF2, 0x86, 0xB9, 0xAF, 0xC3,
-       0xC5, 0xC7, 0xF2, 0xB9, 0xA3, 0xDF, 0xB8, 0xB0,
-       0xB4, 0xA7, 0x84, 0x9D, 0xF7, 0x1A, 0xF9, 0xD9,
-       0xF4, 0x18, 0x58, 0xD8, 0xF1, 0xB9, 0xB1, 0xB5,
-       0xA6, 0x83, 0x9B, 0x61, 0xD9, 0xF4, 0x18, 0x6A,
-       0xD8, 0xF6, 0xB8, 0xB0, 0xB4, 0xA7, 0x84, 0x94,
-       0x5A, 0xF8, 0xF9, 0xD1, 0xDA, 0xFE, 0xF1, 0xB9,
-       0xAB, 0xDE, 0xD8, 0xF1, 0xB8, 0xB0, 0xB4, 0xA7,
-       0x88, 0x9C, 0xF7, 0x6A, 0xF9, 0xD9, 0xFF, 0xD8,
-       0xF1, 0xBB, 0xAA, 0xF9, 0xDA, 0xFF, 0xD8, 0xB3,
-       0x8A, 0xC2, 0xB9, 0xA2, 0xF8, 0xB2, 0x84, 0xBB,
-       0xAA, 0xD0, 0xC1, 0x8B, 0xB7, 0x9A, 0xBA, 0xA7,
-       0x3A, 0x93, 0xF0, 0x31, 0x31, 0x20, 0xD3, 0x8F,
-       0xB6, 0x9C, 0xAB, 0x01, 0x29, 0x51, 0x79, 0xAF,
-       0xC2, 0xC5, 0xC7, 0x8B, 0x9B, 0xF1, 0x04, 0xFD,
-       0x01, 0x87, 0xD4, 0x8E, 0x9D, 0xAB, 0xF0, 0x01,
-       0x29, 0x51, 0x79, 0xAE, 0xC2, 0xC5, 0xC7, 0x8B,
-       0x9B, 0xF1, 0x04, 0xFD, 0x01, 0xB3, 0x81, 0xB7,
-       0x9A, 0xBB, 0xA7, 0x7A, 0x93, 0xF0, 0x71, 0x71,
-       0x60, 0x85, 0x94, 0x01, 0x29, 0x51, 0x79, 0xA5,
-       0xC2, 0xC5, 0xC7, 0x87, 0x97, 0xF1, 0x04, 0xFD,
-       0x01, 0x81, 0x9A, 0xA7, 0x1A, 0x93, 0xF0, 0x11,
-       0x11, 0x00, 0x8E, 0x9B, 0x01, 0x29, 0x51, 0x79,
-       0xAE, 0xC2, 0xC5, 0xC7, 0x87, 0x97, 0xF1, 0x04,
-       0xFD, 0x01, 0x83, 0xA3, 0xC2, 0xC5, 0xC7, 0x8A,
-       0xC7, 0xF2, 0xB2, 0x8B, 0xB6, 0x9B, 0xBA, 0xAB,
-       /* bank 25: 0x1900 */
-       0x71, 0xD9, 0xD0, 0xF8, 0xF5, 0x8F, 0x9F, 0xB9,
-       0xA6, 0x78, 0x8E, 0x9E, 0x7C, 0xF1, 0xB1, 0x8E,
-       0xB5, 0x96, 0x45, 0x6D, 0x8B, 0xA6, 0xD0, 0x32,
-       0x3E, 0x8E, 0xAE, 0xD0, 0x50, 0x7C, 0xF4, 0x19,
-       0x93, 0xD8, 0xF1, 0xB1, 0x8E, 0xBB, 0xA1, 0xC5,
-       0xC7, 0xB3, 0xB7, 0x81, 0x91, 0xAF, 0xD0, 0x50,
-       0xFD, 0x02, 0xB6, 0x9B, 0xFC, 0xC2, 0x00, 0x8F,
-       0xB5, 0x9B, 0xD9, 0x56, 0xDA, 0x5E, 0xD8, 0xF3,
-       0xBA, 0xAB, 0xD0, 0xDE, 0xF8, 0xF1, 0xB7, 0x91,
-       0xA7, 0x69, 0xDB, 0x89, 0x69, 0xF3, 0xAB, 0xD0,
-       0xDE, 0xF1, 0x86, 0xB9, 0xA4, 0xC0, 0xD8, 0xB8,
-       0xB0, 0xB4, 0xA7, 0x88, 0x9D, 0xF7, 0x62, 0xF9,
-       0xD9, 0xF1, 0xB9, 0xA2, 0xDE, 0xF4, 0x19, 0x8D,
-       0xD8, 0xF1, 0xB1, 0x8A, 0xB5, 0x92, 0x01, 0xD9,
-       0xF4, 0x19, 0x8D, 0xD8, 0xF1, 0x81, 0xB7, 0x91,
-       0x09, 0xDB, 0x31, 0xF4, 0x19, 0x8D, 0xD8, 0xF3,
-       0xA4, 0xD0, 0xB0, 0x8D, 0xB4, 0x94, 0x1D, 0xF1,
-       0xB9, 0xA2, 0xDE, 0xF4, 0x42, 0xD8, 0xF2, 0xBA,
-       0xAB, 0xD0, 0xDE, 0xD8, 0xF3, 0xBB, 0xB3, 0xB7,
-       0x90, 0xA2, 0x82, 0x00, 0xF2, 0x10, 0xF1, 0x80,
-       0x9D, 0xAD, 0xD0, 0x7C, 0xF2, 0xA2, 0xFA, 0xF9,
-       0xD1, 0xF1, 0xB9, 0xAC, 0xD9, 0xDE, 0xDA, 0xF8,
-       0xD8, 0xF2, 0xBB, 0xAF, 0x92, 0x50, 0x8F, 0x0D,
-       0xDB, 0xF1, 0xB1, 0x8C, 0xB5, 0x9C, 0x21, 0xD9,
-       0xF5, 0xB3, 0x85, 0xB7, 0x95, 0xB9, 0xA6, 0x78,
-       0x8E, 0x9E, 0x7C, 0xF1, 0xB1, 0x8D, 0xB5, 0x9D,
-       0xAD, 0x1A, 0xF0, 0x96, 0x40, 0x9D, 0x3C, 0x96,
-       0x48, 0xD8, 0xF1, 0xB1, 0x8E, 0xB5, 0x9D, 0xB9,
-       0xA6, 0x2A, 0x8D, 0x96, 0x05, 0xD9, 0xF4, 0x1A,
-       0x12, 0xD8, 0xF2, 0xB3, 0x80, 0xB7, 0x92, 0xBB,
-       0xAF, 0x50, 0xF8, 0x8F, 0x0D, 0xDB, 0xF1, 0xB1,
-       0x8C, 0xB5, 0x9C, 0xB9, 0xA6, 0x21, 0xF4, 0x1A,
-       /* bank 26: 0x1A00 */
-       0x12, 0xD8, 0xF1, 0xB3, 0x8E, 0xBB, 0xA8, 0xD0,
-       0xC4, 0xC7, 0xF3, 0xB9, 0xAC, 0xD0, 0xDE, 0xF4,
-       0x1A, 0x23, 0xD8, 0xF1, 0xB3, 0x85, 0xBB, 0xA8,
-       0xD0, 0xC4, 0xC7, 0xF3, 0xB9, 0xAC, 0xD0, 0xDE,
-       0xF8, 0xDF, 0xF8, 0xD8, 0xF3, 0xB5, 0x9C, 0xFC,
-       0xC3, 0x04, 0xDB, 0xFC, 0xC2, 0x00, 0xD9, 0xF2,
-       0xAC, 0xD0, 0xDE, 0xD8, 0xF2, 0xBB, 0xAF, 0xB7,
-       0x92, 0xB3, 0x82, 0x19, 0x80, 0xA2, 0xD9, 0x26,
-       0xF3, 0xA7, 0xD0, 0xDF, 0xD8, 0xF1, 0xAF, 0x89,
-       0x98, 0x19, 0xA9, 0x80, 0xD9, 0x38, 0xD8, 0xAF,
-       0x89, 0x39, 0xA9, 0x80, 0xDA, 0x3C, 0xD8, 0xAF,
-       0x2E, 0x88, 0xF5, 0x75, 0xDA, 0xFF, 0xD8, 0x71,
-       0x80, 0xA9, 0xDA, 0xF1, 0xFF, 0xD8, 0x82, 0xA7,
-       0xF3, 0xC1, 0xF2, 0x80, 0xC2, 0xF1, 0x97, 0x86,
-       0x49, 0x2E, 0xA6, 0xD0, 0x50, 0x96, 0x86, 0xAF,
-       0x75, 0xD9, 0x88, 0xA2, 0xD0, 0xF3, 0xC0, 0xC3,
-       0xF1, 0xDA, 0x8F, 0x96, 0xA2, 0xD0, 0xF3, 0xC2,
-       0xC3, 0x82, 0xB6, 0x9B, 0x78, 0x78, 0xF1, 0xD8,
-       0x80, 0xB7, 0x90, 0xAF, 0x0D, 0x89, 0x99, 0xAF,
-       0x10, 0x80, 0x9F, 0x21, 0xDA, 0x2E, 0xD8, 0x89,
-       0x99, 0xAF, 0x31, 0x80, 0xDA, 0x2E, 0xD8, 0xAF,
-       0x82, 0x92, 0xF3, 0x41, 0x80, 0xF1, 0xD9, 0x2E,
-       0xD8, 0xAF, 0x82, 0xF3, 0x19, 0x80, 0xF1, 0xD9,
-       0x2E, 0xD8, 0xF1, 0x89, 0x90, 0xAF, 0xD0, 0x09,
-       0x8F, 0x99, 0xAF, 0x51, 0xDB, 0x89, 0x31, 0xF3,
-       0x82, 0x92, 0x19, 0xF2, 0xB1, 0x8C, 0xB5, 0x9C,
-       0x71, 0xD9, 0xF1, 0xDF, 0xF9, 0xF2, 0xB9, 0xAC,
-       0xD0, 0xF8, 0xF8, 0xF3, 0xDF, 0xD8, 0xB3, 0xB7,
-       0xBB, 0x82, 0xAC, 0xF3, 0xC0, 0xA2, 0x80, 0x22,
-       0xF1, 0xA9, 0x22, 0x26, 0x9F, 0xAF, 0x29, 0xDA,
-       0xAC, 0xDE, 0xFF, 0xD8, 0xA2, 0xF2, 0xDE, 0xF1,
-       0xA9, 0xDF, 0xF3, 0xBA, 0xAB, 0xD0, 0xF8, 0xF9,
-       /* bank 27: 0x1B00 */
-       0xD1, 0xD9, 0xFF, 0xD8, 0xF2, 0xBB, 0xAD, 0xD0,
-       0xDE, 0xF8, 0xF1, 0xB1, 0x84, 0xB6, 0x96, 0xBA,
-       0xA7, 0xD0, 0x7E, 0xB7, 0x96, 0xA7, 0x01, 0xB2,
-       0x87, 0x9D, 0x05, 0xDB, 0xB3, 0x8D, 0xB6, 0x97,
-       0x79, 0xF3, 0xB1, 0x8C, 0x96, 0x49, 0xF2, 0xBB,
-       0xAD, 0xD0, 0xF8, 0xD8, 0xF3, 0xB9, 0xAC, 0xD0,
-       0xF8, 0xF9, 0xD1, 0xD9, 0xF2, 0xBB, 0xAD, 0xD0,
-       0xF8, 0xD8, 0xB3, 0xB7, 0xBB, 0x97, 0x8C, 0xAF,
-       0xF3, 0x79, 0xD9, 0xF4, 0x1B, 0x67, 0xD8, 0xF1,
-       0xB1, 0x82, 0xB9, 0xA2, 0xD0, 0xC2, 0xB3, 0xF2,
-       0xB9, 0xA3, 0xFA, 0xF1, 0xBB, 0xAA, 0xD0, 0xF8,
-       0xB8, 0xB0, 0xB4, 0xA7, 0x88, 0x9C, 0xF7, 0x72,
-       0xF9, 0xF4, 0xDA, 0x44, 0xD8, 0x1B, 0x7A, 0xD8,
-       0xF3, 0xB3, 0xB7, 0xBB, 0xA7, 0xD0, 0xFA, 0x97,
-       0x8C, 0xAF, 0x79, 0xDA, 0xF1, 0x87, 0x9A, 0xAA,
-       0xD0, 0x70, 0xD8, 0xF2, 0xBB, 0xB3, 0xB7, 0x82,
-       0x92, 0xAF, 0x31, 0xDA, 0xF4, 0x1B, 0xBB, 0xD8,
-       0xF1, 0xDE, 0x8D, 0x9D, 0xCC, 0x8F, 0x96, 0xA6,
-       0x00, 0xAC, 0x8C, 0x9C, 0x0C, 0x30, 0xBA, 0x8D,
-       0x9D, 0xA7, 0x39, 0xDB, 0xF3, 0xB1, 0x8C, 0xB6,
-       0x96, 0x49, 0xD9, 0xF1, 0x84, 0xB5, 0x94, 0xB9,
-       0xA4, 0xD0, 0x5E, 0xF0, 0xB7, 0x9D, 0x38, 0xD8,
-       0xF1, 0xBB, 0xAC, 0xDE, 0xD0, 0xDE, 0xAD, 0xD0,
-       0xDF, 0xF1, 0xFF, 0xD8, 0xF3, 0xB9, 0xAC, 0xD0,
-       0xF8, 0xF9, 0xD1, 0xD9, 0xF2, 0xBB, 0xA2, 0xFA,
-       0xF8, 0xDA, 0xF2, 0xBB, 0xA2, 0xFA, 0xD8, 0xF2,
-       0xB3, 0xB7, 0xBB, 0x80, 0x92, 0xAF, 0x49, 0xD1,
-       0xD9, 0xF1, 0xB9, 0xAC, 0xDE, 0xAD, 0xDE, 0xDF,
-       0xD8, 0xF1, 0x8C, 0x9C, 0xBB, 0xAC, 0xD0, 0x10,
-       0xAC, 0xDE, 0xAD, 0xD0, 0xDF, 0x92, 0x82, 0xAF,
-       0xF1, 0xCA, 0xF2, 0x35, 0xF1, 0x96, 0x8F, 0xA6,
-       0xD9, 0x00, 0xD8, 0xF1, 0xFF
-};
-#endif /* ICM_DMP_FW_VER */
 
 struct nvi_dmp nvi_dmp_icm = {
        .fw                             = dmp_fw_20628,
-       .fw_ver                         = ICM_DMP_FW_VER,
        .fw_len                         = ARRAY_SIZE(dmp_fw_20628),
-       .fw_crc32                       = ICM_DMP_FW_CRC32,
+       .fw_crc32                       = 0x12F362A6,
        .fw_mem_addr                    = 0x90,
        .fw_start                       = 0x08D0,
        .dmp_reset_delay_ms             = 25,
-       .dev_msk                        = ICM_DMP_DEV_MSK,
+#ifdef MPL520
+       .dev_msk                        = (1 << DEV_SM) |
+                                         (1 << DEV_QTN),
+#else /* MPL520 */
+       .dev_msk                        = (1 << DEV_SM) |
+                                         (1 << DEV_QTN) |
+                                         (1 << DEV_GMR) |
+                                         (1 << DEV_GYU),
+#endif /* MPL520 */
        .en_msk                         = MSK_DEV_ALL,
        .dd_n                           = ARRAY_SIZE(nvi_dmp_devs),
        .dd                             = nvi_dmp_devs,
index 79a7afb..564d3b6 100644 (file)
 #ifndef _NVI_DMP_ICM_H_
 #define _NVI_DMP_ICM_H_
 
-/* Invensense doesn't label their DMP FW with a version so we use
- * ICM_DMP_FW_VER sequentially starting at 0.
- * Currently a version 0 or 1 is the option here as both are included in this
- * driver.  Typically version 0 would be used although 1 is the latest.
- */
-#define ICM_DMP_FW_VER                 (0)
-#if ICM_DMP_FW_VER == 0
-#define ICM_DMP_FW_CRC32               (0x12F362A6)
-#else
-#define ICM_DMP_FW_CRC32               (0xFEF1270D)
-#endif /* ICM_DMP_FW_VER */
-
 #define ICM_DMP_FREQ                   (102)
 #define ICM_DMP_PERIOD_US              (9804)
 #define ICM_BASE_SAMPLE_RATE           (1125)
 #define ICM_DMP_DIVIDER                        (ICM_BASE_SAMPLE_RATE / ICM_DMP_FREQ)
-#define ICM_SMD_TIMER_THLD_INIT                (0x0000015E)
 
 #define DATA_OUT_CTL1                  (4 * 16)        /* 0x0040 */
 #define DATA_OUT_CTL2                  (4 * 16 + 2)    /* 0x0042 */
@@ -75,7 +62,7 @@
 
 #define GYRO_SF                                (19 * 16)       /* 0x0130 */
 #define ACCEL_FB_GAIN                  (34 * 16)
-#define ACCEL_ONLY_GAIN                        (16 * 16 + 12)  /* 0x010C */
+#define ACCEL_ONLY_GAIN                        (16 * 16 + 12)
 
 #define GYRO_BIAS_X                    (139 * 16 +  4)
 #define GYRO_BIAS_Y                    (139 * 16 +  8)
@@ -97,7 +84,7 @@
 #define ACCEL_PRE_SENSOR_DATA          (97 * 16 + 4)
 #define ACCEL_COVARIANCE               (101 * 16 + 8)
 #define ACCEL_ALPHA_VAR                        (91 * 16)       /* 0x05B0 */
-#define ACCEL_A_VAR                    (92 * 16)       /* 0x05C0 */
+#define ACCEL_A_VAR                    (92 * 16)
 
 #define CPASS_BIAS_X                   (126 * 16 +  4)
 #define CPASS_BIAS_Y                   (126 * 16 +  8)
 #define PEDSTD_SB2                     (60 * 16 + 14)
 #define STPDET_TIMESTAMP               (18 * 16 +  8)
 #define PEDSTD_DRIVE_STATE             (43 * 16 + 10)
-#define PED_RATE                       (58 * 16 +  4)  /* 0x03A4 */
+#define PED_RATE                       (58 * 16 +  4)
 
 #define SMD_MOT_THLD                   (72 * 16 + 12)  /* 0x048C */
 #define SMD_DELAY_THLD                 (76 * 16 + 8)   /* 0x04C8 */
 #define SMD_DELAY2_THLD                        (76 * 16 + 12)  /* 0x04CC */
 
-#define SMD_TIMER_THLD                 (26 * 16)       /* 0x01A0 */
-
 #define WOM_ENABLE                     (64 * 16 + 14)  /* 0x040E */
-#define WOM_STATUS                     (64 * 16 + 6)   /* 0x0406 */
-#define WOM_THRESHOLD                  (64 * 16)       /* 0x0400 */
-#define WOM_CNTR_TH                    (64 * 16 + 12)  /* 0x040C */
+#define WOM_STATUS                     (64 * 16 + 6)
+#define WOM_THRESHOLD                  (64 * 16)
+#define WOM_CNTR_TH                    (64 * 16 + 12)
 
 #define TILT_ENABLE                    (68 * 16 + 12)
 #define BAC_STATE                      (147 * 16)
index b1a1e22..0fb4598 100644 (file)
@@ -483,7 +483,7 @@ static int inv_icm_st_gyr_do(struct nvi_state *st,
        return 0;
 }
 
-static int inv_st_gyr_icm(struct nvi_state *st)
+static int inv_icm_st_gyr(struct nvi_state *st)
 {
        int ret;
        int gyr_bias_st[AXIS_N];
@@ -526,7 +526,7 @@ static int inv_st_gyr_icm(struct nvi_state *st)
        return gyro_result;
 }
 
-static int inv_st_acc_icm(struct nvi_state *st)
+static int inv_icm_st_acc(struct nvi_state *st)
 {
        int ret;
        int acc_bias_st[AXIS_N];
@@ -581,7 +581,7 @@ static int nvi_pm_icm(struct nvi_state *st, u8 pm1, u8 pm2, u8 lp)
        return ret;
 }
 
-static int nvi_en_gyr_icm(struct nvi_state *st)
+static int nvi_en_gyr(struct nvi_state *st)
 {
        u8 val;
        int i;
@@ -601,7 +601,7 @@ static int nvi_en_gyr_icm(struct nvi_state *st)
        return ret;
 }
 
-static int nvi_en_acc_icm(struct nvi_state *st)
+static int nvi_en_acc(struct nvi_state *st)
 {
        u8 val;
        int i;
@@ -622,7 +622,7 @@ static int nvi_en_acc_icm(struct nvi_state *st)
        return ret;
 }
 
-static int nvi_init_icm(struct nvi_state *st)
+static int nvi_init(struct nvi_state *st)
 {
        u8 val;
        s8 t;
@@ -630,9 +630,6 @@ static int nvi_init_icm(struct nvi_state *st)
        int ret;
 
        st->snsr[DEV_ACC].cfg.thresh_hi = 0; /* no ACC LP on ICM */
-#if ICM_DMP_FW_VER == 1
-       st->snsr[DEV_SM].cfg.thresh_hi = ICM_SMD_TIMER_THLD_INIT;
-#endif /* ICM_DMP_FW_VER */
        ret = nvi_i2c_rd(st, &st->hal->reg->tbc_pll, &val);
        if (ret)
                return ret;
@@ -647,12 +644,10 @@ static int nvi_init_icm(struct nvi_state *st)
        for (src = 0; src < st->hal->src_n; src++)
                st->src[src].base_t /= ICM_BASE_SAMPLE_RATE;
 
-       nvi_en_gyr_icm(st);
-       nvi_en_acc_icm(st);
        return 0;
 }
 
-static void nvi_por2rc_icm(struct nvi_state *st)
+static void nvi_por2rc(struct nvi_state *st)
 {
        st->rc.lp_config = 0x40;
        st->rc.pm1 = 0x41;
@@ -661,13 +656,13 @@ static void nvi_por2rc_icm(struct nvi_state *st)
 }
 
 struct nvi_fn nvi_fn_icm = {
-       .por2rc                         = nvi_por2rc_icm,
+       .por2rc                         = nvi_por2rc,
        .pm                             = nvi_pm_icm,
-       .init                           = nvi_init_icm,
-       .st_acc                         = inv_st_acc_icm,
-       .st_gyr                         = inv_st_gyr_icm,
-       .en_acc                         = nvi_en_acc_icm,
-       .en_gyr                         = nvi_en_gyr_icm,
+       .init                           = nvi_init,
+       .st_acc                         = inv_icm_st_acc,
+       .st_gyr                         = inv_icm_st_gyr,
+       .en_acc                         = nvi_en_acc,
+       .en_gyr                         = nvi_en_gyr,
 };
 
 
index b15752a..67fabe6 100644 (file)
@@ -1007,7 +1007,7 @@ static int nvi_pm_6500(struct nvi_state *st, u8 pm1, u8 pm2, u8 lp)
        return ret;
 }
 
-static int nvi_en_acc_mpu(struct nvi_state *st)
+static int nvi_en_acc(struct nvi_state *st)
 {
        u8 val;
        int ret = 0;
@@ -1022,7 +1022,7 @@ static int nvi_en_acc_mpu(struct nvi_state *st)
        return ret;
 }
 
-static int nvi_en_gyr_mpu(struct nvi_state *st)
+static int nvi_en_gyr(struct nvi_state *st)
 {
        u8 val = st->snsr[DEV_GYR].usr_cfg << 3;
 
@@ -1037,8 +1037,8 @@ struct nvi_fn nvi_fn_6050 = {
        .init                           = inv_init_6050, /* INV crappy code */
        .st_acc                         = nvi_st_acc_6050,
        .st_gyr                         = nvi_st_gyr_6050,
-       .en_acc                         = nvi_en_acc_mpu,
-       .en_gyr                         = nvi_en_gyr_mpu,
+       .en_acc                         = nvi_en_acc,
+       .en_gyr                         = nvi_en_gyr,
 };
 
 struct nvi_fn nvi_fn_6500 = {
@@ -1046,8 +1046,8 @@ struct nvi_fn nvi_fn_6500 = {
        .init                           = nvi_init_6500,
        .st_acc                         = nvi_st_acc_6500,
        .st_gyr                         = nvi_st_gyr_6500,
-       .en_acc                         = nvi_en_acc_mpu,
-       .en_gyr                         = nvi_en_gyr_mpu,
+       .en_acc                         = nvi_en_acc,
+       .en_gyr                         = nvi_en_gyr,
 };