Home | History | Annotate | Download | only in linux
      1 /*
      2  $License:
      3     Copyright (C) 2012 InvenSense Corporation, All Rights Reserved.
      4  $
      5  */
      6 
      7 /******************************************************************************
      8  *
      9  * $Id:$
     10  *
     11  *****************************************************************************/
     12 
     13 /**
     14  * @defgroup ML_LOAD_DMP
     15  *
     16  * @{
     17  *      @file     ml_load_dmp.c
     18  *      @brief    functions for writing dmp firmware.
     19  */
     20 #include <stdio.h>
     21 
     22 #undef MPL_LOG_TAG
     23 #define MPL_LOG_TAG "MPL-loaddmp"
     24 
     25 #include "ml_load_dmp.h"
     26 #include "log.h"
     27 #include "mlos.h"
     28 
     29 #define LOADDMP_LOG MPL_LOGI
     30 #define LOADDMP_LOG MPL_LOGI
     31 
     32 #define NUM_LOCAL_KEYS (sizeof(dmpTConfig)/sizeof(dmpTConfig[0]))
     33 #define DMP_CODE_SIZE 2639
     34 
     35 static const unsigned char dmpMemory[DMP_CODE_SIZE] = {
     36     /* bank # 0 */
     37     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     38     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     39     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     40     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     41     0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x07,
     42     0x00, 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x64, 0x00, 0x64, 0x00, 0x28, 0x04, 0xcc, 0x03, 0xe8,
     43     0x00, 0x3e, 0x03, 0x30, 0x40, 0x00, 0x00, 0x00, 0x02, 0xca, 0xe3, 0x09, 0x3e, 0x80, 0x00, 0x00,
     44     0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
     45     0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x6e, 0x00, 0x00, 0x06, 0x92, 0x0a, 0x16, 0xc0, 0xdf,
     46     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07,
     47     0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x2b, 0x00, 0x00, 0x16, 0x57, 0x00, 0x00, 0x03, 0x59,
     48     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xfa, 0x00, 0x02, 0x6c, 0x1d, 0x00, 0x00, 0x00, 0x00,
     49     0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     50     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     51     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     52     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     53     /* bank # 1 */
     54     0x01, 0x6c, 0x16, 0xc1, 0x00, 0x01, 0x9b, 0xdf, 0x00, 0x08, 0x17, 0x42, 0x00, 0x00, 0x13, 0x88,
     55     0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     56     0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     57     0x00, 0x00, 0x10, 0x72, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     58     0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x20, 0x00, 0x00, 0x00,
     59     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x58, 0x05, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8,
     60     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f,
     61     0x08, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00,
     62     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     63     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     64     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     65     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x6a, 0x00, 0x00, 0x00, 0x00,
     66     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     67     0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     68     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     69     0x00, 0x00, 0x10, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0x00, 0x00, 0x10, 0x00,
     70     /* bank # 2 */
     71     0x00, 0x28, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     72     0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     73     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     74     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     75     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     76     0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     77     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     78     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     79     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     80     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     81     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     82     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     83     0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     84     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05,
     85     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05,
     86     0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     87     /* bank # 3 */
     88     0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     89     0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x24, 0x26, 0xd3,
     90     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x96, 0x00, 0x3c,
     91     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     92     0x0c, 0x0a, 0x4e, 0x68, 0xcd, 0xcf, 0x77, 0x09, 0x50, 0x16, 0x67, 0x59, 0xc6, 0x19, 0xce, 0x82,
     93     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     94     0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
     95     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     96     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3c,
     97     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x18, 0x85, 0x00, 0x00, 0x40, 0x00,
     98     0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     99     0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    100     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    101     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
    102     0x00, 0x00, 0x00, 0x00, 0x67, 0x7d, 0xdf, 0x7e, 0x72, 0x90, 0x2e, 0x55, 0x4c, 0xf6, 0xe6, 0x88,
    103     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xb8, 0x51, 0xec, 0x01, 0x47, 0xae, 0x14,
    104 
    105     /* bank # 4 */
    106     0xd8, 0xb0, 0xb5, 0xb9, 0xf3, 0xa6, 0xf8, 0xf9, 0xd1, 0xd9, 0x81, 0x96, 0xf8, 0xf7, 0x3e, 0xd8,
    107     0xf3, 0xb1, 0x86, 0x96, 0xa3, 0x31, 0xd1, 0xda, 0xf1, 0xff, 0xd8, 0xf3, 0xb9, 0xab, 0xf8, 0xf9,
    108     0xd1, 0xda, 0xf1, 0xb8, 0xa8, 0xdf, 0xdf, 0xdf, 0xf2, 0xb0, 0x81, 0xa8, 0xc1, 0xc9, 0xc3, 0xb0,
    109     0xb6, 0xb9, 0x88, 0x90, 0xad, 0xf0, 0x2c, 0x50, 0x78, 0x91, 0x24, 0x48, 0x70, 0x3c, 0x92, 0x48,
    110     0x70, 0xb1, 0xb5, 0x8e, 0x9d, 0xad, 0xf1, 0x2d, 0x55, 0x7d, 0xd8, 0xb1, 0xb5, 0x8d, 0x9d, 0xa0,
    111     0xf0, 0x2c, 0x50, 0x78, 0xf5, 0x80, 0x94, 0x30, 0xf2, 0xab, 0xde, 0xd9, 0xf8, 0xf8, 0xd8, 0xa0,
    112     0xcb, 0xf3, 0xde, 0xf1, 0x1e, 0x90, 0x52, 0xa4, 0xc2, 0xf1, 0xa0, 0x36, 0x94, 0x29, 0xf5, 0x30,
    113     0xca, 0xf3, 0xde, 0xf1, 0x90, 0x04, 0x52, 0xa0, 0x36, 0xa0, 0x08, 0xad, 0x9d, 0x0e, 0x16, 0x1e,
    114     0x84, 0x90, 0xbb, 0xaf, 0x02, 0xb3, 0xb7, 0x8f, 0x9f, 0xf0, 0x34, 0x18, 0xd0, 0xf1, 0x0d, 0xf5,
    115     0x9d, 0x18, 0xf2, 0xd9, 0xb9, 0xab, 0xf8, 0xd8, 0xb3, 0xb7, 0xbb, 0x8e, 0x9e, 0xae, 0xf1, 0x32,
    116     0xf5, 0x1b, 0xf1, 0xb4, 0xb8, 0xb0, 0x80, 0x97, 0xf1, 0xa9, 0xdf, 0xdf, 0xdf, 0xaa, 0xdf, 0xdf,
    117     0xdf, 0xf2, 0xaa, 0xc5, 0xcd, 0xc7, 0xa9, 0x0c, 0xc9, 0x2c, 0x97, 0xf1, 0xa9, 0x89, 0x26, 0x46,
    118     0x66, 0xb2, 0x89, 0x99, 0xa9, 0x2d, 0x55, 0x7d, 0xb0, 0x8a, 0xa8, 0x96, 0x36, 0x56, 0x76, 0xd8,
    119     0xf1, 0xb0, 0x89, 0xb9, 0xa3, 0xc3, 0xc5, 0xc7, 0xb1, 0x81, 0xb4, 0x97, 0xa3, 0x11, 0xb5, 0x93,
    120     0xa1, 0xf0, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xf1, 0x93, 0x81, 0xa3, 0x2d, 0x55, 0x3d, 0xf2,
    121     0xa6, 0xfa, 0xf9, 0xd1, 0xd9, 0xf8, 0xf1, 0x83, 0xa2, 0xc3, 0xc5, 0xc7, 0xd8, 0xf3, 0xa2, 0xde,
    122     /* bank # 5 */
    123     0xf1, 0x82, 0x93, 0xa3, 0x2d, 0x55, 0x7d, 0x83, 0x95, 0xf5, 0xa3, 0x30, 0xd9, 0xf3, 0xa2, 0xf8,
    124     0xd8, 0xf5, 0xa3, 0x50, 0xd9, 0xf3, 0xa2, 0xf8, 0xd8, 0xf5, 0xa3, 0x70, 0xd9, 0xf3, 0xa2, 0xf8,
    125     0xd8, 0xf2, 0xb9, 0xa2, 0xf8, 0xf9, 0xd1, 0xd9, 0xa6, 0xde, 0xdf, 0xf4, 0x1c, 0xd8, 0xf2, 0xa6,
    126     0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 0x14, 0xd8, 0xf2, 0xf9, 0xd1, 0xd9, 0xf8, 0xf4, 0x1e, 0xd8, 0xf2,
    127     0xf9, 0xd1, 0xd9, 0xf8, 0xf8, 0xf4, 0x14, 0xd8, 0xf4, 0x10, 0xd8, 0xf3, 0xa2, 0xf8, 0xf9, 0xd1,
    128     0xda, 0xf2, 0xa6, 0xf8, 0xf1, 0xa5, 0xde, 0xd8, 0xf4, 0xa3, 0x14, 0x14, 0xd8, 0xf1, 0xa5, 0xf8,
    129     0xa3, 0x85, 0x95, 0x09, 0xd9, 0xf1, 0xa5, 0xde, 0xf2, 0xa6, 0xf8, 0xdf, 0xd8, 0xf4, 0xa3, 0x09,
    130     0xd8, 0xf3, 0xa2, 0xf8, 0xf9, 0xd1, 0xf4, 0xd9, 0x08, 0x17, 0xda, 0x42, 0xf2, 0xa2, 0xde, 0xf4,
    131     0x0b, 0xd8, 0xf1, 0xa5, 0xf8, 0xa3, 0x85, 0x95, 0x19, 0xda, 0xf4, 0x05, 0xd8, 0xf2, 0xa6, 0xde,
    132     0xdf, 0xd8, 0xf1, 0xb8, 0xaa, 0xb3, 0x8d, 0xb4, 0x98, 0x0d, 0x35, 0x5d, 0xb2, 0xb6, 0xba, 0xaf,
    133     0x8c, 0x96, 0x19, 0x8f, 0x9f, 0xb8, 0xa8, 0x0e, 0x16, 0x1e, 0xb4, 0x9a, 0xaa, 0x88, 0x2c, 0x54,
    134     0x7c, 0xd8, 0xf1, 0xb8, 0xb4, 0xb0, 0x97, 0x86, 0xa8, 0x31, 0x9b, 0x06, 0x99, 0x07, 0xab, 0x97,
    135     0x28, 0x88, 0x9b, 0xf0, 0x0c, 0x20, 0x14, 0x40, 0xb8, 0xb0, 0xb4, 0xa8, 0x8c, 0x9c, 0xf0, 0x04,
    136     0x28, 0x51, 0x79, 0x1d, 0x30, 0x14, 0x38, 0xb1, 0x8d, 0xab, 0xd0, 0x98, 0x2c, 0x50, 0x50, 0x78,
    137     0x78, 0x9b, 0xf1, 0x1a, 0xb0, 0xb5, 0xb9, 0x8b, 0x90, 0xa3, 0xf5, 0x78, 0xf2, 0xd9, 0xab, 0xf8,
    138     0xd8, 0xab, 0xf9, 0xf9, 0xb4, 0xb8, 0xd9, 0xf1, 0x9b, 0xab, 0xd0, 0x7c, 0x78, 0x78, 0x78, 0x78,
    139     /* bank # 6 */
    140     0x78, 0xd8, 0xd8, 0xf6, 0xb4, 0xb8, 0xb0, 0x8a, 0x95, 0xad, 0xde, 0x24, 0xad, 0xd9, 0xf8, 0xd8,
    141     0x44, 0xad, 0xd9, 0xf8, 0xd8, 0x64, 0xad, 0xd9, 0xf8, 0xd8, 0xf8, 0xf9, 0xd1, 0xd0, 0xd9, 0xde,
    142     0xda, 0xf8, 0xd8, 0x8d, 0x48, 0xf7, 0xd9, 0xde, 0xd8, 0xf8, 0x48, 0xad, 0xda, 0xde, 0xd8, 0xf2,
    143     0x8f, 0x99, 0xae, 0x19, 0x83, 0xa3, 0x49, 0x75, 0xae, 0xdf, 0x8e, 0x9f, 0xf6, 0x19, 0xd9, 0xf9,
    144     0xd8, 0xfc, 0x61, 0xd9, 0xf8, 0xd8, 0x94, 0xad, 0xf2, 0x25, 0xd9, 0xae, 0xdf, 0xd8, 0xf6, 0x8e,
    145     0x9e, 0xaf, 0x00, 0x83, 0x93, 0xa3, 0xd0, 0x00, 0x2c, 0xae, 0xd0, 0xdf, 0x8e, 0x95, 0xad, 0x14,
    146     0xda, 0xae, 0xdf, 0xd9, 0xae, 0xd0, 0xfa, 0xdb, 0x15, 0xf8, 0xd8, 0xf2, 0x9e, 0xae, 0xd0, 0x3c,
    147     0xd8, 0xf6, 0x8f, 0x93, 0xad, 0x14, 0xdb, 0x18, 0xf2, 0xad, 0xdf, 0x8e, 0x9d, 0xad, 0x6d, 0xae,
    148     0xd0, 0xde, 0xf9, 0xd8, 0xf7, 0x8d, 0x95, 0xad, 0xf8, 0x10, 0xda, 0xf2, 0xae, 0xd0, 0xde, 0xd8,
    149     0xf7, 0xad, 0xd0, 0xfa, 0x78, 0xd9, 0xae, 0xd0, 0xdf, 0xf9, 0xd8, 0xf2, 0xad, 0xd0, 0xdf, 0xae,
    150     0xd0, 0xf8, 0xf9, 0xd9, 0xad, 0xf7, 0xde, 0xd0, 0xdf, 0xae, 0xd0, 0xfa, 0x8e, 0x94, 0x78, 0xf2,
    151     0x8f, 0x9e, 0xad, 0xd0, 0x5d, 0x8e, 0xaf, 0xd0, 0xc6, 0xd8, 0xad, 0xd0, 0xfa, 0xf9, 0xd1, 0xda,
    152     0xf3, 0xae, 0xd0, 0xdf, 0xd8, 0xf2, 0xae, 0xd0, 0xf8, 0xf9, 0xd9, 0x84, 0x94, 0xad, 0x54, 0x8d,
    153     0x9d, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0xdb, 0x28, 0xf1, 0x8e, 0xa4, 0xc7, 0xf2, 0x8d,
    154     0xad, 0x2c, 0xf3, 0x84, 0x94, 0xad, 0x35, 0xf4, 0x48, 0xd8, 0xf6, 0xad, 0x95, 0x8e, 0x1c, 0xd9,
    155     0xaf, 0xdf, 0xd0, 0xc0, 0xd8, 0xaf, 0x8f, 0x94, 0xfa, 0x38, 0xf2, 0x89, 0xaf, 0xc6, 0xa3, 0xd0,
    156     /* bank # 7 */
    157     0xc2, 0xc5, 0xb0, 0xb4, 0xb8, 0xf0, 0xa8, 0x8a, 0x9a, 0x28, 0x50, 0x78, 0xb7, 0x9b, 0xa8, 0x29,
    158     0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31, 0xf1, 0xbb, 0xab, 0x88, 0x00,
    159     0x2c, 0x54, 0x7c, 0xf0, 0xb3, 0x8b, 0xb8, 0xa8, 0x04, 0x28, 0x50, 0x78, 0xf1, 0xb0, 0x88, 0xb4,
    160     0x97, 0x26, 0xa8, 0x59, 0x98, 0xbb, 0xab, 0xb3, 0x8b, 0x02, 0x26, 0x46, 0x66, 0xb0, 0xb8, 0xf0,
    161     0x8a, 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x8b, 0x29, 0x51, 0x79, 0x8a, 0x24, 0x70, 0x59, 0x8b, 0x20,
    162     0x58, 0x71, 0x8a, 0x44, 0x69, 0x38, 0x8b, 0x39, 0x40, 0x68, 0x8a, 0x64, 0x48, 0x31, 0x8b, 0x30,
    163     0x49, 0x60, 0x88, 0xf1, 0xac, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0x8c, 0xa8, 0x04, 0x28, 0x50, 0x78,
    164     0xf1, 0x88, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xac, 0x8c, 0x02, 0x26, 0x46, 0x66, 0xf0, 0x89, 0x9c,
    165     0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31, 0xa9, 0x88, 0x09,
    166     0x20, 0x59, 0x70, 0xab, 0x11, 0x38, 0x40, 0x69, 0xa8, 0x19, 0x31, 0x48, 0x60, 0x8c, 0xa8, 0x3c,
    167     0x41, 0x5c, 0x20, 0x7c, 0x00, 0xf1, 0x87, 0x98, 0x19, 0x86, 0xa8, 0x6e, 0x76, 0x7e, 0xa9, 0x99,
    168     0x88, 0x2d, 0x55, 0x7d, 0xd8, 0xf1, 0xb3, 0x8b, 0xb4, 0x97, 0xbb, 0xab, 0xf8, 0xf9, 0xb9, 0xa3,
    169     0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xb0, 0x8c, 0xb8, 0xac, 0xf8, 0xf9, 0xa8,
    170     0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xf3, 0xb9, 0xac, 0xde, 0xd8, 0xb1, 0xb6,
    171     0xb9, 0xf1, 0xa8, 0xf8, 0xf3, 0xb9, 0xaa, 0xfa, 0xf9, 0xd1, 0xda, 0xf2, 0x8a, 0xca, 0xf4, 0x0e,
    172     0xf3, 0xb1, 0x88, 0xdd, 0xc2, 0xc2, 0xf1, 0x88, 0xc0, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2,
    173     /* bank # 8 */
    174     0xb2, 0xb6, 0xba, 0xad, 0xfa, 0x8d, 0x9d, 0xab, 0x39, 0xd9, 0xad, 0xdf, 0xf4, 0x13, 0xdd, 0xf2,
    175     0xb1, 0x87, 0xb5, 0x9a, 0x08, 0x08, 0xf1, 0xb1, 0x83, 0xc2, 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac,
    176     0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, 0xf8, 0x8d, 0x9d, 0xab, 0x11, 0xd9, 0xad, 0xde, 0xf4,
    177     0x13, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x28, 0x28, 0xf1, 0xb0, 0x88, 0xc2, 0xc4, 0xc6, 0xdc,
    178     0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, 0xfa, 0x8d, 0x9d, 0xab, 0x39, 0xd9,
    179     0xad, 0xdf, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a, 0x08, 0xf2, 0xf2, 0x88, 0xc2, 0xc4,
    180     0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, 0xae, 0xf8, 0x8e, 0x9e, 0xab,
    181     0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a, 0x68, 0xf2, 0xb0, 0x80,
    182     0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, 0xae, 0xfa, 0x8e,
    183     0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, 0xf4, 0x12, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x68, 0xf2,
    184     0xb0, 0x80, 0xc4, 0xcc, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xae,
    185     0xf8, 0x8e, 0x9e, 0xab, 0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a,
    186     0x48, 0xf2, 0xb0, 0x81, 0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6,
    187     0xba, 0xae, 0xfa, 0x8e, 0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, 0xf4, 0x12, 0xdd, 0xf2, 0xb1, 0x87,
    188     0xb5, 0x9a, 0x48, 0xf2, 0xb0, 0x81, 0xc4, 0xcc, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2,
    189     0xb0, 0x88, 0xb9, 0xa8, 0xc3, 0xc5, 0xc7, 0xd8, 0xf3, 0xb9, 0xac, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4,
    190     /* bank # 9 */
    191     0x1f, 0xd8, 0xf1, 0xb9, 0xaa, 0xdf, 0xf3, 0xac, 0xfa, 0xf9, 0xd1, 0xd9, 0xf4, 0x1a, 0xd8, 0xf2,
    192     0xb1, 0xb5, 0x8c, 0xac, 0xf8, 0xf9, 0xd1, 0xd9, 0xc2, 0xd8, 0xf2, 0xf9, 0xd9, 0xde, 0xf4, 0x09,
    193     0x13, 0xda, 0xf2, 0xdd, 0xc6, 0xdc, 0xf4, 0x31, 0x11, 0xd8, 0xf2, 0xab, 0xfa, 0x8b, 0x9b, 0xa3,
    194     0x49, 0xd9, 0xf4, 0x07, 0x06, 0xda, 0xf2, 0xb9, 0xab, 0xdf, 0xfe, 0xd8, 0xf1, 0xbb, 0xb3, 0xb7,
    195     0xaa, 0xf9, 0xda, 0xff, 0xd9, 0x80, 0x9a, 0xaa, 0x28, 0xb4, 0x80, 0x98, 0xa7, 0x20, 0xd8, 0xf1,
    196     0xb3, 0xb7, 0xbb, 0x87, 0xaa, 0xd0, 0xc1, 0xa7, 0x81, 0x97, 0x62, 0x93, 0xf0, 0x71, 0x71, 0x60,
    197     0x85, 0x94, 0x01, 0x29, 0x51, 0x79, 0x90, 0xa5, 0xf1, 0x28, 0x4c, 0x6c, 0x87, 0x0c, 0x95, 0x18,
    198     0x85, 0x78, 0xa3, 0x83, 0x90, 0x28, 0x4c, 0x6c, 0x8a, 0x6c, 0xd8, 0xf3, 0xa2, 0x82, 0x00, 0xf2,
    199     0x10, 0xa8, 0x92, 0x19, 0x80, 0xa2, 0xf2, 0xd9, 0x26, 0xd8, 0xf1, 0xa8, 0x89, 0x95, 0x19, 0xa9,
    200     0x80, 0xd9, 0x38, 0xd8, 0xa8, 0x89, 0x39, 0xa9, 0x80, 0xda, 0x3c, 0xd8, 0xa8, 0x2e, 0x85, 0xf5,
    201     0x75, 0xda, 0xff, 0xd8, 0x71, 0x80, 0xa9, 0xda, 0xf1, 0xff, 0xd8, 0x82, 0xa7, 0xf3, 0xc1, 0xf2,
    202     0x80, 0xc2, 0xf1, 0x97, 0x86, 0x49, 0x2e, 0xa6, 0xd0, 0x50, 0x96, 0x86, 0xa7, 0xd0, 0x75, 0xd9,
    203     0x88, 0xa2, 0xd0, 0xf3, 0xc4, 0xc7, 0xf1, 0xda, 0x87, 0x96, 0xa2, 0xd0, 0xf3, 0xc6, 0xc7, 0x82,
    204     0x78, 0x78, 0xf1, 0xd8, 0x80, 0x90, 0xa8, 0x0d, 0x89, 0x99, 0xa8, 0x10, 0x80, 0x98, 0x21, 0xda,
    205     0x2e, 0xd8, 0x89, 0x99, 0xa8, 0x31, 0x80, 0xda, 0x2e, 0xd8, 0xa8, 0x82, 0x92, 0xf3, 0x41, 0x80,
    206     0xf1, 0xd9, 0x2e, 0xd8, 0xa8, 0x82, 0xf3, 0x19, 0x80, 0xf1, 0xd9, 0x2e, 0xd8, 0x82, 0xac, 0xf3,
    207     /* bank # 10 */
    208     0xc0, 0xa2, 0x80, 0x22, 0xf1, 0xa9, 0x22, 0x26, 0x98, 0xa8, 0x29, 0xda, 0xac, 0xde, 0xff, 0xd8,
    209     0xa2, 0xf2, 0x2a, 0xf1, 0xa9, 0x2e, 0x82, 0x92, 0xa8, 0xf2, 0x31, 0x80, 0xa6, 0x96, 0xf1, 0xd9,
    210     0x00, 0xf1, 0xf1, 0xf1, 0xac, 0x8c, 0x9c, 0x0c, 0x30, 0xac, 0xde, 0xd0, 0xde, 0xf3, 0xf3, 0xb9,
    211     0xaa, 0xfa, 0xf1, 0xff, 0xd8, 0x8c, 0x9c, 0xac, 0xd0, 0x10, 0xac, 0xde, 0x80, 0x92, 0xa2, 0xf2,
    212     0x4c, 0x82, 0xa8, 0xf1, 0xca, 0xf2, 0x35, 0xf1, 0x96, 0x88, 0xa6, 0xd9, 0x00, 0xd8, 0xff
    213 };
    214 
    215 #define DMP_VERSION (dmpMemory)
    216 
    217 inv_error_t inv_write_dmp_data(FILE *fd, const unsigned char *dmp, size_t len)
    218 {
    219     inv_error_t result = INV_SUCCESS;
    220     int bytesWritten = 0;
    221 
    222     if (len <= 0) {
    223         MPL_LOGE("Nothing to write");
    224         return INV_ERROR_FILE_WRITE;
    225     }
    226     else {
    227         MPL_LOGI("dmp firmware size to write = %d", len);
    228     }
    229     if ( fd == NULL ) {
    230         return INV_ERROR_FILE_OPEN;
    231     }
    232     bytesWritten = fwrite(dmp, 1, len, fd);
    233     if (bytesWritten != len) {
    234         MPL_LOGE("bytes written (%d) don't match requested length (%d)\n",
    235                  bytesWritten, len);
    236         result = INV_ERROR_FILE_WRITE;
    237     }
    238     else {
    239         MPL_LOGI("Bytes written = %d", bytesWritten);
    240     }
    241     return result;
    242 }
    243 
    244 inv_error_t inv_load_dmp(FILE *fd)
    245 {
    246     inv_error_t result = INV_SUCCESS;
    247     result = inv_write_dmp_data(fd, DMP_VERSION, DMP_CODE_SIZE);
    248     return result;
    249 }
    250 
    251 void read_dmp_img(char *dmp_path, char* out_file)
    252 {
    253     MPL_LOGI("read_dmp_img");
    254     FILE *fp;
    255     int i;
    256     int dmpSize = DMP_CODE_SIZE;
    257     char dmp_img[dmpSize];
    258 
    259     if ((fp = fopen(dmp_path, "rb")) < 0) {
    260         perror("dmp fail");
    261     }
    262     i = fread(dmp_img, 1, dmpSize, fp);
    263     MPL_LOGI("Result=%d", i);
    264     fclose(fp);
    265     fp = fopen(out_file, "wt");
    266     if(fp == NULL) {
    267     MPL_LOGE("error open out file:%s", out_file);
    268         return;
    269     }
    270     fprintf(fp, "char rec[]={\n");
    271     for(i = 0; i < dmpSize; i++) {
    272         fprintf(fp, "0x%02x, ", dmp_img[i]);
    273         if(((i + 1) % 16) == 0) {
    274             fprintf(fp, "\n");
    275         }
    276     }
    277     fprintf(fp, "};\n ");
    278     fclose(fp);
    279 }
    280 
    281 /**
    282  *  @}
    283  */
    284