Bavo Van Achte / Mbed 2 deprecated MLX90418_I2C_master

Dependencies:   mbed libscpi

Files at this revision

API Documentation at this revision

Comitter:
wuliqunyy
Date:
Fri Feb 26 08:45:13 2021 +0000
Parent:
8:2554218db1e6
Child:
10:a8390614edcc
Commit message:
updated for ganymede14

Changed in this revision

i2c_mbed_fpga.cpp Show annotated file Show diff for this revision Revisions of this file
i2c_mbed_fpga.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
nv_bitfield_map.h Show annotated file Show diff for this revision Revisions of this file
nv_defaults.h Show annotated file Show diff for this revision Revisions of this file
nv_defines.h Show annotated file Show diff for this revision Revisions of this file
--- a/i2c_mbed_fpga.cpp	Tue Jan 26 11:13:25 2021 +0000
+++ b/i2c_mbed_fpga.cpp	Fri Feb 26 08:45:13 2021 +0000
@@ -57,14 +57,14 @@
 /** i2c enter key to open I2C window
 */
 int i2c_mbed_fpga::i2c_window_open(){
-    char i2cKey[4] = {0x13, 0xA4, 0xD0, 0xD0};
+    char i2cKey[4] = {0x13, 0xFA, 0xD0, 0xD0};
     return i2c_word_write(i2cKey);
 }
 
 /** i2c enter key to Start the motor
 */
 int i2c_mbed_fpga::i2c_motor_start(){
-    char i2cKey[4] = {0x13, 0xA4, 0xCA, 0xFE};
+    char i2cKey[4] = {0x13, 0xFA, 0xCA, 0xFE};
     return i2c_word_write(i2cKey);
 }
 
@@ -74,8 +74,8 @@
     nv_positin_val &= ~NV_POSITION_PULSE_TIME_MASK;
     nv_positin_val |= ((exponent_3b << 2) | mantisaa_2b) << NV_POSITION_PULSE_TIME_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;          
     return i2c_word_safe_write(i2cMessage);
@@ -87,8 +87,8 @@
     nv_positin_val &= ~NV_POSITION_DUTY_MASK;
     nv_positin_val |= duty_2b << NV_POSITION_DUTY_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;          
     return i2c_word_safe_write(i2cMessage);
@@ -100,8 +100,8 @@
     nv_positin_val &= ~NV_POSI_MAJO_VOTE_MASK;
     nv_positin_val |= maj_1b << NV_POSI_MAJO_VOTE_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;          
     return i2c_word_safe_write(i2cMessage);
@@ -113,8 +113,8 @@
     nv_positin_val &= ~NV_ANTI_COG_MASK;
     nv_positin_val |= cog_1b << NV_ANTI_COG_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;          
     return i2c_word_safe_write(i2cMessage);
@@ -127,8 +127,8 @@
     nv_start_up_val &= ~NV_START_UP_TIME_MASK;
     nv_start_up_val |= ((exponent_3b << 3) | mantisaa_3b) << NV_START_UP_TIME_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;          
     return i2c_word_safe_write(i2cMessage);
@@ -140,8 +140,8 @@
     nv_start_up_val &= ~NV_START_DUTY_MASK;
     nv_start_up_val |= duty_2b << NV_START_DUTY_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;          
     return i2c_word_safe_write(i2cMessage);
@@ -153,8 +153,8 @@
     nv_start_up_val &= ~NV_COMM_START_NUM_MASK;
     nv_start_up_val |= comm << NV_COMM_START_NUM_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;          
     return i2c_word_safe_write(i2cMessage);
@@ -173,20 +173,20 @@
     nv_wind_brake_val &= ~NV_SOFT_NUM_STEP_MASK;
     nv_wind_brake_val |= num_steps << NV_SOFT_NUM_STEP_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;  
     ack += i2c_word_safe_write(i2cMessage);
     
-    *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;          
     ack += i2c_word_safe_write(i2cMessage);
     
-    *(i2cMessage+0) = (char)(NV_WIND_BRAKE >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_WIND_BRAKE >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_WIND_BRAKE >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_WIND_BRAKE >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_wind_brake_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_wind_brake_val >> 0)& 0xff;          
     ack += i2c_word_safe_write(i2cMessage);
@@ -203,14 +203,14 @@
     nv_positin_val &= ~NV_FIRST_NON_FLAT_TIME_MASK;
     nv_positin_val |= ((exponent_3b << 3) | mantisaa_3b) << NV_FIRST_NON_FLAT_TIME_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;  
     ack += i2c_word_safe_write(i2cMessage);
     
-    *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;          
     ack += i2c_word_safe_write(i2cMessage);
@@ -227,17 +227,50 @@
     nv_positin_val &= ~NV_FIRST_NON_FLAT_TIME_MASK;
     nv_positin_val |= ((exponent_3b << 3) | mantisaa_3b) << NV_FIRST_NON_FLAT_TIME_OFFSET;
     char i2cMessage[4];
-    *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;  
     ack += i2c_word_safe_write(i2cMessage);
     
-    *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
-    *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+    *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
     *(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
     *(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;          
     ack += i2c_word_safe_write(i2cMessage);
         
     return ack; 
-}
\ No newline at end of file
+}
+
+/** i2c to set the open loop mode
+*/
+int i2c_mbed_fpga::i2c_set_loop_mode(unsigned int openloop){
+    int ack = 0;
+    nv_spd_control_1_val &= ~NV_SPD_LOOP_MODE_MASK;
+    nv_spd_control_1_val |= openloop << NV_SPD_LOOP_MODE_OFFSET;
+    char i2cMessage[4];
+    *(i2cMessage+0) = (char)(NVADDR_NV_SPD_CTRL_1 >> 8)& 0xff;
+    *(i2cMessage+1) = (char)(NVADDR_NV_SPD_CTRL_1 >> 0)& 0xff;
+    *(i2cMessage+2) = (char)(nv_spd_control_1_val >> 8)& 0xff;
+    *(i2cMessage+3) = (char)(nv_spd_control_1_val >> 0)& 0xff;  
+    ack += i2c_word_safe_write(i2cMessage);
+    
+    return ack; 
+}
+
+/** i2c to set the Single Pulse Start Up (pulse train)
+*/
+int i2c_mbed_fpga::i2c_set_open_loop_duty(unsigned int duty){
+    int ack = 0;
+    nv_start_up_val = duty;
+    char i2cMessage[4];
+    *(i2cMessage+0) = (char)(0x10)& 0xff;
+    *(i2cMessage+1) = (char)(0x3e)& 0xff;
+    *(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
+    *(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;  
+    ack += i2c_word_safe_write(i2cMessage);
+    
+
+        
+    return ack; 
+}
--- a/i2c_mbed_fpga.h	Tue Jan 26 11:13:25 2021 +0000
+++ b/i2c_mbed_fpga.h	Fri Feb 26 08:45:13 2021 +0000
@@ -17,7 +17,9 @@
         i2c_master.frequency(35000);
         nv_positin_val = NV_POSITION_DEFUALT;
         nv_start_up_val = NV_START_UP_DEFAULT; 
-        nv_wind_brake_val = NV_WIND_BRAKE_DEFAULT;     
+        nv_wind_brake_val = NV_WIND_BRAKE_DEFAULT;
+        ram_open_duty_val = RAM_OPEN_DUTY_VAL;
+        nv_spd_control_1_val = NV_SPD_CONTROL_1_VAL;     
     };
     
     int i2c_word_read(char *word);
@@ -38,13 +40,17 @@
     int i2c_set_soft_start_up(unsigned int enbale, unsigned int mantisaa_3b, unsigned int exponent_3b, unsigned int step_size, unsigned int num_steps);
     int i2c_set_high_torque_start_up(unsigned int enbale, unsigned int mantisaa_3b, unsigned int exponent_3b);
     int i2c_set_single_pulse_start_up(unsigned int enbale, unsigned int mantisaa_3b, unsigned int exponent_3b);
-
+    int i2c_set_loop_mode(unsigned int openloop);
+    int i2c_set_open_loop_duty(unsigned int duty);
     
 private:
     I2C i2c_master;
     unsigned int nv_positin_val;
     unsigned int nv_start_up_val;
     unsigned int nv_wind_brake_val;
+    unsigned int nv_spd_control_1_val;
+    unsigned int ram_open_duty_val;
+    
 
     //Position Detection Task/Functions
 };
--- a/main.cpp	Tue Jan 26 11:13:25 2021 +0000
+++ b/main.cpp	Fri Feb 26 08:45:13 2021 +0000
@@ -11,12 +11,20 @@
     main_init();  /*reset the FPGA!*/ 
     
     /*control codes*/
-    wait_ms(5000);   /* keep FPGA in reset for 5s, to let motor stop*/
-    enbale_fpga();   /* enable FPGA */      
+    wait_ms(2000);   /* keep FPGA in reset for 5s, to let motor stop*/
+    enbale_fpga();   /* enable FPGA */ 
+    wait_ms(1000);     
     led4 = i2c.i2c_window_open();  /*send password 0xd0d0*/
-    wait_ms(1000);
+    //wait_ms(1000);
     //i2c.i2c_set_position_pulse_width(3,4); /*unsigned int mantisaa_2b, unsigned int exponent_3b*/
-    led4 = i2c.i2c_set_soft_start_up(1, 1, 0, 1, 1);
+    //wait_ms(1000);
+    //led4 = i2c.i2c_set_soft_start_up(1, 1, 0, 1, 1);
+    wait_ms(1000);
+    i2c.i2c_set_position_anti_cog(1);
+    wait_ms(1000);
+    i2c.i2c_set_loop_mode(0);
+    wait_ms(1000);
+    i2c.i2c_set_open_loop_duty(0x8000);
     wait_ms(1000);
     led4 = i2c.i2c_motor_start();  /*send password 0xcafe*/
     
--- a/nv_bitfield_map.h	Tue Jan 26 11:13:25 2021 +0000
+++ b/nv_bitfield_map.h	Fri Feb 26 08:45:13 2021 +0000
@@ -1,505 +1,1576 @@
-#define NV_D_CORDAT_ID_ADDRESS 0x13BE
+#define NV_D_CORDAT_ID_ADDRESS 0x09FE
 #define NV_D_CORDAT_ID_OFFSET 10
 #define NV_D_CORDAT_ID_LENGTH 6
 #define NV_D_CORDAT_ID_MASK 0xFC00
 
-#define NV_D_FAB_ID_ADDRESS 0x13BE
+#define NV_D_FAB_ID_ADDRESS 0x09FE
 #define NV_D_FAB_ID_OFFSET 6
 #define NV_D_FAB_ID_LENGTH 4
 #define NV_D_FAB_ID_MASK 0x03C0
 
-#define NV_D_LOT_ID_16_11_ADDRESS 0x13BE
+#define NV_D_LOT_ID_16_11_ADDRESS 0x09FE
 #define NV_D_LOT_ID_16_11_OFFSET 0
 #define NV_D_LOT_ID_16_11_LENGTH 6
 #define NV_D_LOT_ID_16_11_MASK 0x003F
 
-#define NV_D_LOT_ID_10_0_ADDRESS 0x13BC
+#define NV_D_LOT_ID_10_0_ADDRESS 0x09FC
 #define NV_D_LOT_ID_10_0_OFFSET 5
 #define NV_D_LOT_ID_10_0_LENGTH 11
 #define NV_D_LOT_ID_10_0_MASK 0xFFE0
 
-#define NV_D_WFR_ID_ADDRESS 0x13BC
+#define NV_D_WFR_ID_ADDRESS 0x09FC
 #define NV_D_WFR_ID_OFFSET 0
 #define NV_D_WFR_ID_LENGTH 5
 #define NV_D_WFR_ID_MASK 0x001F
 
-#define NV_D_YPOS_ID_ADDRESS 0x13BA
+#define NV_D_YPOS_ID_ADDRESS 0x09FA
 #define NV_D_YPOS_ID_OFFSET 8
 #define NV_D_YPOS_ID_LENGTH 8
 #define NV_D_YPOS_ID_MASK 0xFF00
 
-#define NV_D_XPOS_ID_ADDRESS 0x13BA
+#define NV_D_XPOS_ID_ADDRESS 0x09FA
 #define NV_D_XPOS_ID_OFFSET 0
 #define NV_D_XPOS_ID_LENGTH 8
 #define NV_D_XPOS_ID_MASK 0x00FF
 
-#define NV_RESERVED_12_ADDRESS 0x13B8
-#define NV_RESERVED_12_OFFSET 0
-#define NV_RESERVED_12_LENGTH 16
-#define NV_RESERVED_12_MASK 0xFFFF
+#define NV_TRACEABILITY_0_ADDRESS 0x09F8
+#define NV_TRACEABILITY_0_OFFSET 0
+#define NV_TRACEABILITY_0_LENGTH 16
+#define NV_TRACEABILITY_0_MASK 0xFFFF
+
+#define MLX_TRIM_15_ADDRESS 0x09F6
+#define MLX_TRIM_15_OFFSET 0
+#define MLX_TRIM_15_LENGTH 16
+#define MLX_TRIM_15_MASK 0xFFFF
+
+#define MLX_TRIM_14_ADDRESS 0x09F4
+#define MLX_TRIM_14_OFFSET 0
+#define MLX_TRIM_14_LENGTH 16
+#define MLX_TRIM_14_MASK 0xFFFF
+
+#define MLX_TRIM_13_ADDRESS 0x09F2
+#define MLX_TRIM_13_OFFSET 0
+#define MLX_TRIM_13_LENGTH 16
+#define MLX_TRIM_13_MASK 0xFFFF
+
+#define MLX_TRIM_12_ADDRESS 0x09F0
+#define MLX_TRIM_12_OFFSET 0
+#define MLX_TRIM_12_LENGTH 16
+#define MLX_TRIM_12_MASK 0xFFFF
+
+#define MLX_TRIM_11_ADDRESS 0x09EE
+#define MLX_TRIM_11_OFFSET 0
+#define MLX_TRIM_11_LENGTH 16
+#define MLX_TRIM_11_MASK 0xFFFF
+
+#define MLX_TRIM_10_ADDRESS 0x09EC
+#define MLX_TRIM_10_OFFSET 0
+#define MLX_TRIM_10_LENGTH 16
+#define MLX_TRIM_10_MASK 0xFFFF
 
-#define NV_RESERVED_11_ADDRESS 0x13B6
-#define NV_RESERVED_11_OFFSET 0
-#define NV_RESERVED_11_LENGTH 16
-#define NV_RESERVED_11_MASK 0xFFFF
+#define MLX_TRIM_9_ADDRESS 0x09EA
+#define MLX_TRIM_9_OFFSET 0
+#define MLX_TRIM_9_LENGTH 16
+#define MLX_TRIM_9_MASK 0xFFFF
+
+#define MLX_TRIM_8_ADDRESS 0x09E8
+#define MLX_TRIM_8_OFFSET 0
+#define MLX_TRIM_8_LENGTH 16
+#define MLX_TRIM_8_MASK 0xFFFF
+
+#define MLX_TRIM_7_ADDRESS 0x09E6
+#define MLX_TRIM_7_OFFSET 0
+#define MLX_TRIM_7_LENGTH 16
+#define MLX_TRIM_7_MASK 0xFFFF
+
+#define MLX_TRIM_6_ADDRESS 0x09E4
+#define MLX_TRIM_6_OFFSET 0
+#define MLX_TRIM_6_LENGTH 16
+#define MLX_TRIM_6_MASK 0xFFFF
+
+#define MLX_TRIM_5_ADDRESS 0x09E2
+#define MLX_TRIM_5_OFFSET 0
+#define MLX_TRIM_5_LENGTH 16
+#define MLX_TRIM_5_MASK 0xFFFF
+
+#define MLX_TRIM_4_ADDRESS 0x09E0
+#define MLX_TRIM_4_OFFSET 0
+#define MLX_TRIM_4_LENGTH 16
+#define MLX_TRIM_4_MASK 0xFFFF
+
+#define MLX_TRIM_3_ADDRESS 0x09DE
+#define MLX_TRIM_3_OFFSET 0
+#define MLX_TRIM_3_LENGTH 16
+#define MLX_TRIM_3_MASK 0xFFFF
+
+#define MLX_TRIM_2_ADDRESS 0x09DC
+#define MLX_TRIM_2_OFFSET 0
+#define MLX_TRIM_2_LENGTH 16
+#define MLX_TRIM_2_MASK 0xFFFF
 
-#define NV_RESERVED_10_ADDRESS 0x13B4
-#define NV_RESERVED_10_OFFSET 0
-#define NV_RESERVED_10_LENGTH 16
-#define NV_RESERVED_10_MASK 0xFFFF
+#define MLX_TRIM_1_ADDRESS 0x09DA
+#define MLX_TRIM_1_OFFSET 0
+#define MLX_TRIM_1_LENGTH 16
+#define MLX_TRIM_1_MASK 0xFFFF
+
+#define MLX_TRIM_0_ADDRESS 0x09D8
+#define MLX_TRIM_0_OFFSET 0
+#define MLX_TRIM_0_LENGTH 16
+#define MLX_TRIM_0_MASK 0xFFFF
+
+#define MLX_CALIB_23_ADDRESS 0x09D6
+#define MLX_CALIB_23_OFFSET 0
+#define MLX_CALIB_23_LENGTH 16
+#define MLX_CALIB_23_MASK 0xFFFF
+
+#define MLX_CALIB_22_ADDRESS 0x09D4
+#define MLX_CALIB_22_OFFSET 0
+#define MLX_CALIB_22_LENGTH 16
+#define MLX_CALIB_22_MASK 0xFFFF
+
+#define MLX_CALIB_21_ADDRESS 0x09D2
+#define MLX_CALIB_21_OFFSET 0
+#define MLX_CALIB_21_LENGTH 16
+#define MLX_CALIB_21_MASK 0xFFFF
+
+#define MLX_CALIB_20_ADDRESS 0x09D0
+#define MLX_CALIB_20_OFFSET 0
+#define MLX_CALIB_20_LENGTH 16
+#define MLX_CALIB_20_MASK 0xFFFF
+
+#define MLX_CALIB_19_ADDRESS 0x09CE
+#define MLX_CALIB_19_OFFSET 0
+#define MLX_CALIB_19_LENGTH 16
+#define MLX_CALIB_19_MASK 0xFFFF
+
+#define MLX_CALIB_18_ADDRESS 0x09CC
+#define MLX_CALIB_18_OFFSET 0
+#define MLX_CALIB_18_LENGTH 16
+#define MLX_CALIB_18_MASK 0xFFFF
 
-#define NV_RESERVED_9_ADDRESS 0x13B2
-#define NV_RESERVED_9_OFFSET 0
-#define NV_RESERVED_9_LENGTH 16
-#define NV_RESERVED_9_MASK 0xFFFF
+#define MLX_CALIB_17_ADDRESS 0x09CA
+#define MLX_CALIB_17_OFFSET 0
+#define MLX_CALIB_17_LENGTH 16
+#define MLX_CALIB_17_MASK 0xFFFF
+
+#define MLX_CALIB_16_ADDRESS 0x09C8
+#define MLX_CALIB_16_OFFSET 0
+#define MLX_CALIB_16_LENGTH 16
+#define MLX_CALIB_16_MASK 0xFFFF
+
+#define MLX_CALIB_15_ADDRESS 0x09C6
+#define MLX_CALIB_15_OFFSET 0
+#define MLX_CALIB_15_LENGTH 16
+#define MLX_CALIB_15_MASK 0xFFFF
+
+#define MLX_CALIB_14_ADDRESS 0x09C4
+#define MLX_CALIB_14_OFFSET 0
+#define MLX_CALIB_14_LENGTH 16
+#define MLX_CALIB_14_MASK 0xFFFF
+
+#define MLX_CALIB_13_ADDRESS 0x09C2
+#define MLX_CALIB_13_OFFSET 0
+#define MLX_CALIB_13_LENGTH 16
+#define MLX_CALIB_13_MASK 0xFFFF
+
+#define MLX_CALIB_12_ADDRESS 0x09C0
+#define MLX_CALIB_12_OFFSET 0
+#define MLX_CALIB_12_LENGTH 16
+#define MLX_CALIB_12_MASK 0xFFFF
+
+#define MLX_CALIB_11_ADDRESS 0x09BE
+#define MLX_CALIB_11_OFFSET 0
+#define MLX_CALIB_11_LENGTH 16
+#define MLX_CALIB_11_MASK 0xFFFF
+
+#define MLX_CALIB_10_ADDRESS 0x09BC
+#define MLX_CALIB_10_OFFSET 0
+#define MLX_CALIB_10_LENGTH 16
+#define MLX_CALIB_10_MASK 0xFFFF
 
-#define NV_RESERVED_8_ADDRESS 0x13B0
-#define NV_RESERVED_8_OFFSET 0
-#define NV_RESERVED_8_LENGTH 16
-#define NV_RESERVED_8_MASK 0xFFFF
+#define MLX_CALIB_9_ADDRESS 0x09BA
+#define MLX_CALIB_9_OFFSET 0
+#define MLX_CALIB_9_LENGTH 16
+#define MLX_CALIB_9_MASK 0xFFFF
+
+#define MLX_CALIB_8_ADDRESS 0x09B8
+#define MLX_CALIB_8_OFFSET 0
+#define MLX_CALIB_8_LENGTH 16
+#define MLX_CALIB_8_MASK 0xFFFF
+
+#define MLX_CALIB_7_ADDRESS 0x09B6
+#define MLX_CALIB_7_OFFSET 0
+#define MLX_CALIB_7_LENGTH 16
+#define MLX_CALIB_7_MASK 0xFFFF
+
+#define MLX_CALIB_6_ADDRESS 0x09B4
+#define MLX_CALIB_6_OFFSET 0
+#define MLX_CALIB_6_LENGTH 16
+#define MLX_CALIB_6_MASK 0xFFFF
+
+#define MLX_CALIB_5_ADDRESS 0x09B2
+#define MLX_CALIB_5_OFFSET 0
+#define MLX_CALIB_5_LENGTH 16
+#define MLX_CALIB_5_MASK 0xFFFF
+
+#define MLX_CALIB_4_ADDRESS 0x09B0
+#define MLX_CALIB_4_OFFSET 0
+#define MLX_CALIB_4_LENGTH 16
+#define MLX_CALIB_4_MASK 0xFFFF
+
+#define MLX_CALIB_3_ADDRESS 0x09AE
+#define MLX_CALIB_3_OFFSET 0
+#define MLX_CALIB_3_LENGTH 16
+#define MLX_CALIB_3_MASK 0xFFFF
+
+#define MLX_CALIB_2_ADDRESS 0x09AC
+#define MLX_CALIB_2_OFFSET 0
+#define MLX_CALIB_2_LENGTH 16
+#define MLX_CALIB_2_MASK 0xFFFF
 
-#define NV_RESERVED_7_ADDRESS 0x13AE
-#define NV_RESERVED_7_OFFSET 0
-#define NV_RESERVED_7_LENGTH 16
-#define NV_RESERVED_7_MASK 0xFFFF
+#define MLX_CALIB_1_ADDRESS 0x09AA
+#define MLX_CALIB_1_OFFSET 0
+#define MLX_CALIB_1_LENGTH 16
+#define MLX_CALIB_1_MASK 0xFFFF
+
+#define MLX_CALIB_0_ADDRESS 0x09A8
+#define MLX_CALIB_0_OFFSET 0
+#define MLX_CALIB_0_LENGTH 16
+#define MLX_CALIB_0_MASK 0xFFFF
+
+#define FREE_89_ADDRESS 0x09A6
+#define FREE_89_OFFSET 0
+#define FREE_89_LENGTH 16
+#define FREE_89_MASK 0xFFFF
+
+#define FREE_88_ADDRESS 0x09A4
+#define FREE_88_OFFSET 0
+#define FREE_88_LENGTH 16
+#define FREE_88_MASK 0xFFFF
+
+#define FREE_87_ADDRESS 0x09A2
+#define FREE_87_OFFSET 0
+#define FREE_87_LENGTH 16
+#define FREE_87_MASK 0xFFFF
+
+#define FREE_86_ADDRESS 0x09A0
+#define FREE_86_OFFSET 0
+#define FREE_86_LENGTH 16
+#define FREE_86_MASK 0xFFFF
+
+#define FREE_85_ADDRESS 0x099E
+#define FREE_85_OFFSET 0
+#define FREE_85_LENGTH 16
+#define FREE_85_MASK 0xFFFF
+
+#define FREE_84_ADDRESS 0x099C
+#define FREE_84_OFFSET 0
+#define FREE_84_LENGTH 16
+#define FREE_84_MASK 0xFFFF
 
-#define NV_RESERVED_6_ADDRESS 0x13AC
-#define NV_RESERVED_6_OFFSET 0
-#define NV_RESERVED_6_LENGTH 16
-#define NV_RESERVED_6_MASK 0xFFFF
+#define FREE_83_ADDRESS 0x099A
+#define FREE_83_OFFSET 0
+#define FREE_83_LENGTH 16
+#define FREE_83_MASK 0xFFFF
+
+#define FREE_82_ADDRESS 0x0998
+#define FREE_82_OFFSET 0
+#define FREE_82_LENGTH 16
+#define FREE_82_MASK 0xFFFF
+
+#define FREE_81_ADDRESS 0x0996
+#define FREE_81_OFFSET 0
+#define FREE_81_LENGTH 16
+#define FREE_81_MASK 0xFFFF
+
+#define FREE_80_ADDRESS 0x0994
+#define FREE_80_OFFSET 0
+#define FREE_80_LENGTH 16
+#define FREE_80_MASK 0xFFFF
+
+#define FREE_79_ADDRESS 0x0992
+#define FREE_79_OFFSET 0
+#define FREE_79_LENGTH 16
+#define FREE_79_MASK 0xFFFF
+
+#define FREE_78_ADDRESS 0x0990
+#define FREE_78_OFFSET 0
+#define FREE_78_LENGTH 16
+#define FREE_78_MASK 0xFFFF
+
+#define FREE_77_ADDRESS 0x098E
+#define FREE_77_OFFSET 0
+#define FREE_77_LENGTH 16
+#define FREE_77_MASK 0xFFFF
+
+#define FREE_76_ADDRESS 0x098C
+#define FREE_76_OFFSET 0
+#define FREE_76_LENGTH 16
+#define FREE_76_MASK 0xFFFF
 
-#define NV_RESERVED_5_ADDRESS 0x13AA
-#define NV_RESERVED_5_OFFSET 0
-#define NV_RESERVED_5_LENGTH 16
-#define NV_RESERVED_5_MASK 0xFFFF
+#define FREE_75_ADDRESS 0x098A
+#define FREE_75_OFFSET 0
+#define FREE_75_LENGTH 16
+#define FREE_75_MASK 0xFFFF
+
+#define FREE_74_ADDRESS 0x0988
+#define FREE_74_OFFSET 0
+#define FREE_74_LENGTH 16
+#define FREE_74_MASK 0xFFFF
+
+#define FREE_73_ADDRESS 0x0986
+#define FREE_73_OFFSET 0
+#define FREE_73_LENGTH 16
+#define FREE_73_MASK 0xFFFF
+
+#define FREE_72_ADDRESS 0x0984
+#define FREE_72_OFFSET 0
+#define FREE_72_LENGTH 16
+#define FREE_72_MASK 0xFFFF
 
-#define NV_RESERVED_4_ADDRESS 0x13A8
-#define NV_RESERVED_4_OFFSET 0
-#define NV_RESERVED_4_LENGTH 16
-#define NV_RESERVED_4_MASK 0xFFFF
+#define FREE_71_ADDRESS 0x0982
+#define FREE_71_OFFSET 0
+#define FREE_71_LENGTH 16
+#define FREE_71_MASK 0xFFFF
+
+#define FREE_70_ADDRESS 0x0980
+#define FREE_70_OFFSET 0
+#define FREE_70_LENGTH 16
+#define FREE_70_MASK 0xFFFF
+
+#define FREE_69_ADDRESS 0x097E
+#define FREE_69_OFFSET 0
+#define FREE_69_LENGTH 16
+#define FREE_69_MASK 0xFFFF
+
+#define FREE_68_ADDRESS 0x097C
+#define FREE_68_OFFSET 0
+#define FREE_68_LENGTH 16
+#define FREE_68_MASK 0xFFFF
 
-#define NV_RESERVED_3_ADDRESS 0x13A6
-#define NV_RESERVED_3_OFFSET 0
-#define NV_RESERVED_3_LENGTH 16
-#define NV_RESERVED_3_MASK 0xFFFF
+#define FREE_67_ADDRESS 0x097A
+#define FREE_67_OFFSET 0
+#define FREE_67_LENGTH 16
+#define FREE_67_MASK 0xFFFF
+
+#define FREE_66_ADDRESS 0x0978
+#define FREE_66_OFFSET 0
+#define FREE_66_LENGTH 16
+#define FREE_66_MASK 0xFFFF
+
+#define FREE_65_ADDRESS 0x0976
+#define FREE_65_OFFSET 0
+#define FREE_65_LENGTH 16
+#define FREE_65_MASK 0xFFFF
+
+#define FREE_64_ADDRESS 0x0974
+#define FREE_64_OFFSET 0
+#define FREE_64_LENGTH 16
+#define FREE_64_MASK 0xFFFF
+
+#define FREE_63_ADDRESS 0x0972
+#define FREE_63_OFFSET 0
+#define FREE_63_LENGTH 16
+#define FREE_63_MASK 0xFFFF
+
+#define FREE_62_ADDRESS 0x0970
+#define FREE_62_OFFSET 0
+#define FREE_62_LENGTH 16
+#define FREE_62_MASK 0xFFFF
+
+#define FREE_61_ADDRESS 0x096E
+#define FREE_61_OFFSET 0
+#define FREE_61_LENGTH 16
+#define FREE_61_MASK 0xFFFF
 
-#define NV_PASSWORD_ADDRESS 0x13A4
-#define NV_PASSWORD_OFFSET 0
-#define NV_PASSWORD_LENGTH 16
-#define NV_PASSWORD_MASK 0xFFFF
+#define FREE_60_ADDRESS 0x096C
+#define FREE_60_OFFSET 0
+#define FREE_60_LENGTH 16
+#define FREE_60_MASK 0xFFFF
+
+#define FREE_59_ADDRESS 0x096A
+#define FREE_59_OFFSET 0
+#define FREE_59_LENGTH 16
+#define FREE_59_MASK 0xFFFF
+
+#define FREE_58_ADDRESS 0x0968
+#define FREE_58_OFFSET 0
+#define FREE_58_LENGTH 16
+#define FREE_58_MASK 0xFFFF
+
+#define FREE_57_ADDRESS 0x0966
+#define FREE_57_OFFSET 0
+#define FREE_57_LENGTH 16
+#define FREE_57_MASK 0xFFFF
+
+#define FREE_56_ADDRESS 0x0964
+#define FREE_56_OFFSET 0
+#define FREE_56_LENGTH 16
+#define FREE_56_MASK 0xFFFF
+
+#define FREE_55_ADDRESS 0x0962
+#define FREE_55_OFFSET 0
+#define FREE_55_LENGTH 16
+#define FREE_55_MASK 0xFFFF
+
+#define FREE_54_ADDRESS 0x0960
+#define FREE_54_OFFSET 0
+#define FREE_54_LENGTH 16
+#define FREE_54_MASK 0xFFFF
+
+#define FREE_53_ADDRESS 0x095E
+#define FREE_53_OFFSET 0
+#define FREE_53_LENGTH 16
+#define FREE_53_MASK 0xFFFF
 
-#define NV_CUST_ID2_ADDRESS 0x13A2
-#define NV_CUST_ID2_OFFSET 0
-#define NV_CUST_ID2_LENGTH 16
-#define NV_CUST_ID2_MASK 0xFFFF
+#define FREE_52_ADDRESS 0x095C
+#define FREE_52_OFFSET 0
+#define FREE_52_LENGTH 16
+#define FREE_52_MASK 0xFFFF
+
+#define FREE_51_ADDRESS 0x095A
+#define FREE_51_OFFSET 0
+#define FREE_51_LENGTH 16
+#define FREE_51_MASK 0xFFFF
+
+#define FREE_50_ADDRESS 0x0958
+#define FREE_50_OFFSET 0
+#define FREE_50_LENGTH 16
+#define FREE_50_MASK 0xFFFF
+
+#define FREE_49_ADDRESS 0x0956
+#define FREE_49_OFFSET 0
+#define FREE_49_LENGTH 16
+#define FREE_49_MASK 0xFFFF
+
+#define FREE_48_ADDRESS 0x0954
+#define FREE_48_OFFSET 0
+#define FREE_48_LENGTH 16
+#define FREE_48_MASK 0xFFFF
+
+#define FREE_47_ADDRESS 0x0952
+#define FREE_47_OFFSET 0
+#define FREE_47_LENGTH 16
+#define FREE_47_MASK 0xFFFF
+
+#define FREE_46_ADDRESS 0x0950
+#define FREE_46_OFFSET 0
+#define FREE_46_LENGTH 16
+#define FREE_46_MASK 0xFFFF
+
+#define FREE_45_ADDRESS 0x094E
+#define FREE_45_OFFSET 0
+#define FREE_45_LENGTH 16
+#define FREE_45_MASK 0xFFFF
 
-#define NV_CUST_ID1_ADDRESS 0x13A0
-#define NV_CUST_ID1_OFFSET 0
-#define NV_CUST_ID1_LENGTH 16
-#define NV_CUST_ID1_MASK 0xFFFF
+#define FREE_44_ADDRESS 0x094C
+#define FREE_44_OFFSET 0
+#define FREE_44_LENGTH 16
+#define FREE_44_MASK 0xFFFF
+
+#define FREE_43_ADDRESS 0x094A
+#define FREE_43_OFFSET 0
+#define FREE_43_LENGTH 16
+#define FREE_43_MASK 0xFFFF
+
+#define FREE_42_ADDRESS 0x0948
+#define FREE_42_OFFSET 0
+#define FREE_42_LENGTH 16
+#define FREE_42_MASK 0xFFFF
+
+#define FREE_41_ADDRESS 0x0946
+#define FREE_41_OFFSET 0
+#define FREE_41_LENGTH 16
+#define FREE_41_MASK 0xFFFF
+
+#define FREE_40_ADDRESS 0x0944
+#define FREE_40_OFFSET 0
+#define FREE_40_LENGTH 16
+#define FREE_40_MASK 0xFFFF
+
+#define FREE_39_ADDRESS 0x0942
+#define FREE_39_OFFSET 0
+#define FREE_39_LENGTH 16
+#define FREE_39_MASK 0xFFFF
+
+#define FREE_38_ADDRESS 0x0940
+#define FREE_38_OFFSET 0
+#define FREE_38_LENGTH 16
+#define FREE_38_MASK 0xFFFF
+
+#define FREE_37_ADDRESS 0x093E
+#define FREE_37_OFFSET 0
+#define FREE_37_LENGTH 16
+#define FREE_37_MASK 0xFFFF
 
-#define NV_RESERVED_2_ADDRESS 0x139E
-#define NV_RESERVED_2_OFFSET 0
-#define NV_RESERVED_2_LENGTH 16
-#define NV_RESERVED_2_MASK 0xFFFF
+#define FREE_36_ADDRESS 0x093C
+#define FREE_36_OFFSET 0
+#define FREE_36_LENGTH 16
+#define FREE_36_MASK 0xFFFF
+
+#define FREE_35_ADDRESS 0x093A
+#define FREE_35_OFFSET 0
+#define FREE_35_LENGTH 16
+#define FREE_35_MASK 0xFFFF
+
+#define FREE_34_ADDRESS 0x0938
+#define FREE_34_OFFSET 0
+#define FREE_34_LENGTH 16
+#define FREE_34_MASK 0xFFFF
+
+#define FREE_33_ADDRESS 0x0936
+#define FREE_33_OFFSET 0
+#define FREE_33_LENGTH 16
+#define FREE_33_MASK 0xFFFF
+
+#define FREE_32_ADDRESS 0x0934
+#define FREE_32_OFFSET 0
+#define FREE_32_LENGTH 16
+#define FREE_32_MASK 0xFFFF
+
+#define FREE_31_ADDRESS 0x0932
+#define FREE_31_OFFSET 0
+#define FREE_31_LENGTH 16
+#define FREE_31_MASK 0xFFFF
+
+#define FREE_30_ADDRESS 0x0930
+#define FREE_30_OFFSET 0
+#define FREE_30_LENGTH 16
+#define FREE_30_MASK 0xFFFF
+
+#define FREE_29_ADDRESS 0x092E
+#define FREE_29_OFFSET 0
+#define FREE_29_LENGTH 16
+#define FREE_29_MASK 0xFFFF
 
-#define NV_RPM_D_ADDRESS 0x139C
-#define NV_RPM_D_OFFSET 8
-#define NV_RPM_D_LENGTH 8
-#define NV_RPM_D_MASK 0xFF00
+#define FREE_28_ADDRESS 0x092C
+#define FREE_28_OFFSET 0
+#define FREE_28_LENGTH 16
+#define FREE_28_MASK 0xFFFF
+
+#define FREE_27_ADDRESS 0x092A
+#define FREE_27_OFFSET 0
+#define FREE_27_LENGTH 16
+#define FREE_27_MASK 0xFFFF
+
+#define FREE_26_ADDRESS 0x0928
+#define FREE_26_OFFSET 0
+#define FREE_26_LENGTH 16
+#define FREE_26_MASK 0xFFFF
+
+#define FREE_25_ADDRESS 0x0926
+#define FREE_25_OFFSET 0
+#define FREE_25_LENGTH 16
+#define FREE_25_MASK 0xFFFF
+
+#define FREE_24_ADDRESS 0x0924
+#define FREE_24_OFFSET 0
+#define FREE_24_LENGTH 16
+#define FREE_24_MASK 0xFFFF
+
+#define FREE_23_ADDRESS 0x0922
+#define FREE_23_OFFSET 0
+#define FREE_23_LENGTH 16
+#define FREE_23_MASK 0xFFFF
+
+#define FREE_22_ADDRESS 0x0920
+#define FREE_22_OFFSET 0
+#define FREE_22_LENGTH 16
+#define FREE_22_MASK 0xFFFF
+
+#define FREE_21_ADDRESS 0x091E
+#define FREE_21_OFFSET 0
+#define FREE_21_LENGTH 16
+#define FREE_21_MASK 0xFFFF
 
-#define NV_RPM_MAX_2_ADDRESS 0x139C
-#define NV_RPM_MAX_2_OFFSET 8
-#define NV_RPM_MAX_2_LENGTH 8
-#define NV_RPM_MAX_2_MASK 0xFF00
+#define FREE_20_ADDRESS 0x091C
+#define FREE_20_OFFSET 0
+#define FREE_20_LENGTH 16
+#define FREE_20_MASK 0xFFFF
+
+#define FREE_19_ADDRESS 0x091A
+#define FREE_19_OFFSET 0
+#define FREE_19_LENGTH 16
+#define FREE_19_MASK 0xFFFF
+
+#define FREE_18_ADDRESS 0x0918
+#define FREE_18_OFFSET 0
+#define FREE_18_LENGTH 16
+#define FREE_18_MASK 0xFFFF
+
+#define FREE_17_ADDRESS 0x0916
+#define FREE_17_OFFSET 0
+#define FREE_17_LENGTH 16
+#define FREE_17_MASK 0xFFFF
+
+#define FREE_16_ADDRESS 0x0914
+#define FREE_16_OFFSET 0
+#define FREE_16_LENGTH 16
+#define FREE_16_MASK 0xFFFF
+
+#define FREE_15_ADDRESS 0x0912
+#define FREE_15_OFFSET 0
+#define FREE_15_LENGTH 16
+#define FREE_15_MASK 0xFFFF
+
+#define FREE_14_ADDRESS 0x0910
+#define FREE_14_OFFSET 0
+#define FREE_14_LENGTH 16
+#define FREE_14_MASK 0xFFFF
+
+#define FREE_13_ADDRESS 0x090E
+#define FREE_13_OFFSET 0
+#define FREE_13_LENGTH 16
+#define FREE_13_MASK 0xFFFF
 
-#define NV_SPD_D_ADDRESS 0x139C
-#define NV_SPD_D_OFFSET 0
-#define NV_SPD_D_LENGTH 8
-#define NV_SPD_D_MASK 0x00FF
+#define FREE_12_ADDRESS 0x090C
+#define FREE_12_OFFSET 0
+#define FREE_12_LENGTH 16
+#define FREE_12_MASK 0xFFFF
+
+#define FREE_11_ADDRESS 0x090A
+#define FREE_11_OFFSET 0
+#define FREE_11_LENGTH 16
+#define FREE_11_MASK 0xFFFF
+
+#define FREE_10_ADDRESS 0x0908
+#define FREE_10_OFFSET 0
+#define FREE_10_LENGTH 16
+#define FREE_10_MASK 0xFFFF
+
+#define FREE_9_ADDRESS 0x0906
+#define FREE_9_OFFSET 0
+#define FREE_9_LENGTH 16
+#define FREE_9_MASK 0xFFFF
 
-#define NV_SPD_MAX_2_ADDRESS 0x139C
-#define NV_SPD_MAX_2_OFFSET 0
-#define NV_SPD_MAX_2_LENGTH 8
-#define NV_SPD_MAX_2_MASK 0x00FF
+#define FREE_8_ADDRESS 0x0904
+#define FREE_8_OFFSET 0
+#define FREE_8_LENGTH 16
+#define FREE_8_MASK 0xFFFF
+
+#define FREE_7_ADDRESS 0x0902
+#define FREE_7_OFFSET 0
+#define FREE_7_LENGTH 16
+#define FREE_7_MASK 0xFFFF
+
+#define FREE_6_ADDRESS 0x0900
+#define FREE_6_OFFSET 0
+#define FREE_6_LENGTH 16
+#define FREE_6_MASK 0xFFFF
+
+#define FREE_5_ADDRESS 0x08FE
+#define FREE_5_OFFSET 0
+#define FREE_5_LENGTH 16
+#define FREE_5_MASK 0xFFFF
 
-#define NV_RPM_C_ADDRESS 0x139A
-#define NV_RPM_C_OFFSET 8
-#define NV_RPM_C_LENGTH 8
-#define NV_RPM_C_MASK 0xFF00
+#define FREE_4_ADDRESS 0x08FC
+#define FREE_4_OFFSET 0
+#define FREE_4_LENGTH 16
+#define FREE_4_MASK 0xFFFF
+
+#define FREE_3_ADDRESS 0x08FA
+#define FREE_3_OFFSET 0
+#define FREE_3_LENGTH 16
+#define FREE_3_MASK 0xFFFF
+
+#define FREE_2_ADDRESS 0x08F8
+#define FREE_2_OFFSET 0
+#define FREE_2_LENGTH 16
+#define FREE_2_MASK 0xFFFF
+
+#define FREE_1_ADDRESS 0x08F6
+#define FREE_1_OFFSET 0
+#define FREE_1_LENGTH 16
+#define FREE_1_MASK 0xFFFF
+
+#define FREE_0_ADDRESS 0x08F4
+#define FREE_0_OFFSET 0
+#define FREE_0_LENGTH 16
+#define FREE_0_MASK 0xFFFF
+
+#define PATCH_3_1_ADDRESS 0x08F2
+#define PATCH_3_1_OFFSET 0
+#define PATCH_3_1_LENGTH 16
+#define PATCH_3_1_MASK 0xFFFF
+
+#define PATCH_3_0_ADDRESS 0x08F0
+#define PATCH_3_0_OFFSET 0
+#define PATCH_3_0_LENGTH 16
+#define PATCH_3_0_MASK 0xFFFF
 
-#define NV_RPM_MIN_2_ADDRESS 0x139A
-#define NV_RPM_MIN_2_OFFSET 8
-#define NV_RPM_MIN_2_LENGTH 8
-#define NV_RPM_MIN_2_MASK 0xFF00
+#define PATCH_2_1_ADDRESS 0x08EE
+#define PATCH_2_1_OFFSET 0
+#define PATCH_2_1_LENGTH 16
+#define PATCH_2_1_MASK 0xFFFF
+
+#define PATCH_2_0_ADDRESS 0x08EC
+#define PATCH_2_0_OFFSET 0
+#define PATCH_2_0_LENGTH 16
+#define PATCH_2_0_MASK 0xFFFF
+
+#define PATCH_1_1_ADDRESS 0x08EA
+#define PATCH_1_1_OFFSET 0
+#define PATCH_1_1_LENGTH 16
+#define PATCH_1_1_MASK 0xFFFF
+
+#define PATCH_1_0_ADDRESS 0x08E8
+#define PATCH_1_0_OFFSET 0
+#define PATCH_1_0_LENGTH 16
+#define PATCH_1_0_MASK 0xFFFF
+
+#define PATCH_0_1_ADDRESS 0x08E6
+#define PATCH_0_1_OFFSET 0
+#define PATCH_0_1_LENGTH 16
+#define PATCH_0_1_MASK 0xFFFF
+
+#define PATCH_0_0_ADDRESS 0x08E4
+#define PATCH_0_0_OFFSET 0
+#define PATCH_0_0_LENGTH 16
+#define PATCH_0_0_MASK 0xFFFF
+
+#define MTP_USE_ZONE2_ADDRESS 0x08E2
+#define MTP_USE_ZONE2_OFFSET 0
+#define MTP_USE_ZONE2_LENGTH 16
+#define MTP_USE_ZONE2_MASK 0xFFFF
+
+#define CRC_ZONE_2_ADDRESS 0x08E0
+#define CRC_ZONE_2_OFFSET 0
+#define CRC_ZONE_2_LENGTH 16
+#define CRC_ZONE_2_MASK 0xFFFF
 
-#define NV_SPD_C_ADDRESS 0x139A
-#define NV_SPD_C_OFFSET 0
-#define NV_SPD_C_LENGTH 8
-#define NV_SPD_C_MASK 0x00FF
+#define copy_zone1_35_ADDRESS 0x08DE
+#define copy_zone1_35_OFFSET 0
+#define copy_zone1_35_LENGTH 16
+#define copy_zone1_35_MASK 0xFFFF
+
+#define copy_zone1_34_ADDRESS 0x08DC
+#define copy_zone1_34_OFFSET 0
+#define copy_zone1_34_LENGTH 16
+#define copy_zone1_34_MASK 0xFFFF
+
+#define copy_zone1_33_ADDRESS 0x08DA
+#define copy_zone1_33_OFFSET 0
+#define copy_zone1_33_LENGTH 16
+#define copy_zone1_33_MASK 0xFFFF
+
+#define copy_zone1_32_ADDRESS 0x08D8
+#define copy_zone1_32_OFFSET 0
+#define copy_zone1_32_LENGTH 16
+#define copy_zone1_32_MASK 0xFFFF
+
+#define copy_zone1_31_ADDRESS 0x08D6
+#define copy_zone1_31_OFFSET 0
+#define copy_zone1_31_LENGTH 16
+#define copy_zone1_31_MASK 0xFFFF
+
+#define copy_zone1_30_ADDRESS 0x08D4
+#define copy_zone1_30_OFFSET 0
+#define copy_zone1_30_LENGTH 16
+#define copy_zone1_30_MASK 0xFFFF
+
+#define copy_zone1_29_ADDRESS 0x08D2
+#define copy_zone1_29_OFFSET 0
+#define copy_zone1_29_LENGTH 16
+#define copy_zone1_29_MASK 0xFFFF
+
+#define copy_zone1_28_ADDRESS 0x08D0
+#define copy_zone1_28_OFFSET 0
+#define copy_zone1_28_LENGTH 16
+#define copy_zone1_28_MASK 0xFFFF
 
-#define NV_SPD_MIN_2_ADDRESS 0x139A
-#define NV_SPD_MIN_2_OFFSET 0
-#define NV_SPD_MIN_2_LENGTH 8
-#define NV_SPD_MIN_2_MASK 0x00FF
+#define copy_zone1_27_ADDRESS 0x08CE
+#define copy_zone1_27_OFFSET 0
+#define copy_zone1_27_LENGTH 16
+#define copy_zone1_27_MASK 0xFFFF
+
+#define copy_zone1_26_ADDRESS 0x08CC
+#define copy_zone1_26_OFFSET 0
+#define copy_zone1_26_LENGTH 16
+#define copy_zone1_26_MASK 0xFFFF
+
+#define copy_zone1_25_ADDRESS 0x08CA
+#define copy_zone1_25_OFFSET 0
+#define copy_zone1_25_LENGTH 16
+#define copy_zone1_25_MASK 0xFFFF
+
+#define copy_zone1_24_ADDRESS 0x08C8
+#define copy_zone1_24_OFFSET 0
+#define copy_zone1_24_LENGTH 16
+#define copy_zone1_24_MASK 0xFFFF
+
+#define copy_zone1_23_ADDRESS 0x08C6
+#define copy_zone1_23_OFFSET 0
+#define copy_zone1_23_LENGTH 16
+#define copy_zone1_23_MASK 0xFFFF
+
+#define copy_zone1_22_ADDRESS 0x08C4
+#define copy_zone1_22_OFFSET 0
+#define copy_zone1_22_LENGTH 16
+#define copy_zone1_22_MASK 0xFFFF
+
+#define copy_zone1_21_ADDRESS 0x08C2
+#define copy_zone1_21_OFFSET 0
+#define copy_zone1_21_LENGTH 16
+#define copy_zone1_21_MASK 0xFFFF
+
+#define copy_zone1_20_ADDRESS 0x08C0
+#define copy_zone1_20_OFFSET 0
+#define copy_zone1_20_LENGTH 16
+#define copy_zone1_20_MASK 0xFFFF
 
-#define NV_RPM_B_ADDRESS 0x1398
-#define NV_RPM_B_OFFSET 8
-#define NV_RPM_B_LENGTH 8
-#define NV_RPM_B_MASK 0xFF00
+#define copy_zone1_19_ADDRESS 0x08BE
+#define copy_zone1_19_OFFSET 0
+#define copy_zone1_19_LENGTH 16
+#define copy_zone1_19_MASK 0xFFFF
+
+#define copy_zone1_18_ADDRESS 0x08BC
+#define copy_zone1_18_OFFSET 0
+#define copy_zone1_18_LENGTH 16
+#define copy_zone1_18_MASK 0xFFFF
+
+#define copy_zone1_17_ADDRESS 0x08BA
+#define copy_zone1_17_OFFSET 0
+#define copy_zone1_17_LENGTH 16
+#define copy_zone1_17_MASK 0xFFFF
+
+#define copy_zone1_16_ADDRESS 0x08B8
+#define copy_zone1_16_OFFSET 0
+#define copy_zone1_16_LENGTH 16
+#define copy_zone1_16_MASK 0xFFFF
+
+#define copy_zone1_15_ADDRESS 0x08B6
+#define copy_zone1_15_OFFSET 0
+#define copy_zone1_15_LENGTH 16
+#define copy_zone1_15_MASK 0xFFFF
+
+#define copy_zone1_14_ADDRESS 0x08B4
+#define copy_zone1_14_OFFSET 0
+#define copy_zone1_14_LENGTH 16
+#define copy_zone1_14_MASK 0xFFFF
+
+#define copy_zone1_13_ADDRESS 0x08B2
+#define copy_zone1_13_OFFSET 0
+#define copy_zone1_13_LENGTH 16
+#define copy_zone1_13_MASK 0xFFFF
+
+#define copy_zone1_12_ADDRESS 0x08B0
+#define copy_zone1_12_OFFSET 0
+#define copy_zone1_12_LENGTH 16
+#define copy_zone1_12_MASK 0xFFFF
 
-#define NV_SPD_B_ADDRESS 0x1398
-#define NV_SPD_B_OFFSET 0
-#define NV_SPD_B_LENGTH 8
-#define NV_SPD_B_MASK 0x00FF
+#define copy_zone1_11_ADDRESS 0x08AE
+#define copy_zone1_11_OFFSET 0
+#define copy_zone1_11_LENGTH 16
+#define copy_zone1_11_MASK 0xFFFF
+
+#define copy_zone1_10_ADDRESS 0x08AC
+#define copy_zone1_10_OFFSET 0
+#define copy_zone1_10_LENGTH 16
+#define copy_zone1_10_MASK 0xFFFF
+
+#define copy_zone1_9_ADDRESS 0x08AA
+#define copy_zone1_9_OFFSET 0
+#define copy_zone1_9_LENGTH 16
+#define copy_zone1_9_MASK 0xFFFF
+
+#define copy_zone1_8_ADDRESS 0x08A8
+#define copy_zone1_8_OFFSET 0
+#define copy_zone1_8_LENGTH 16
+#define copy_zone1_8_MASK 0xFFFF
+
+#define copy_zone1_7_ADDRESS 0x08A6
+#define copy_zone1_7_OFFSET 0
+#define copy_zone1_7_LENGTH 16
+#define copy_zone1_7_MASK 0xFFFF
+
+#define copy_zone1_6_ADDRESS 0x08A4
+#define copy_zone1_6_OFFSET 0
+#define copy_zone1_6_LENGTH 16
+#define copy_zone1_6_MASK 0xFFFF
+
+#define copy_zone1_5_ADDRESS 0x08A2
+#define copy_zone1_5_OFFSET 0
+#define copy_zone1_5_LENGTH 16
+#define copy_zone1_5_MASK 0xFFFF
+
+#define copy_zone1_4_ADDRESS 0x08A0
+#define copy_zone1_4_OFFSET 0
+#define copy_zone1_4_LENGTH 16
+#define copy_zone1_4_MASK 0xFFFF
 
-#define NV_SLOPE_2_ADDRESS 0x1398
-#define NV_SLOPE_2_OFFSET 0
-#define NV_SLOPE_2_LENGTH 16
-#define NV_SLOPE_2_MASK 0xFFFF
+#define copy_zone1_3_ADDRESS 0x089E
+#define copy_zone1_3_OFFSET 0
+#define copy_zone1_3_LENGTH 16
+#define copy_zone1_3_MASK 0xFFFF
+
+#define copy_zone1_2_ADDRESS 0x089C
+#define copy_zone1_2_OFFSET 0
+#define copy_zone1_2_LENGTH 16
+#define copy_zone1_2_MASK 0xFFFF
+
+#define copy_zone1_1_ADDRESS 0x089A
+#define copy_zone1_1_OFFSET 0
+#define copy_zone1_1_LENGTH 16
+#define copy_zone1_1_MASK 0xFFFF
+
+#define copy_zone1_0_ADDRESS 0x0898
+#define copy_zone1_0_OFFSET 0
+#define copy_zone1_0_LENGTH 16
+#define copy_zone1_0_MASK 0xFFFF
+
+#define MTP_USE_ZONE1_ADDRESS 0x0896
+#define MTP_USE_ZONE1_OFFSET 0
+#define MTP_USE_ZONE1_LENGTH 16
+#define MTP_USE_ZONE1_MASK 0xFFFF
+
+#define CRC_ZONE_1_ADDRESS 0x0894
+#define CRC_ZONE_1_OFFSET 0
+#define CRC_ZONE_1_LENGTH 16
+#define CRC_ZONE_1_MASK 0xFFFF
+
+#define copy_zone0_35_ADDRESS 0x0892
+#define copy_zone0_35_OFFSET 0
+#define copy_zone0_35_LENGTH 16
+#define copy_zone0_35_MASK 0xFFFF
+
+#define copy_zone0_34_ADDRESS 0x0890
+#define copy_zone0_34_OFFSET 0
+#define copy_zone0_34_LENGTH 16
+#define copy_zone0_34_MASK 0xFFFF
 
-#define NV_RPM_A_ADDRESS 0x1396
-#define NV_RPM_A_OFFSET 8
-#define NV_RPM_A_LENGTH 8
-#define NV_RPM_A_MASK 0xFF00
+#define copy_zone0_33_ADDRESS 0x088E
+#define copy_zone0_33_OFFSET 0
+#define copy_zone0_33_LENGTH 16
+#define copy_zone0_33_MASK 0xFFFF
+
+#define copy_zone0_32_ADDRESS 0x088C
+#define copy_zone0_32_OFFSET 0
+#define copy_zone0_32_LENGTH 16
+#define copy_zone0_32_MASK 0xFFFF
+
+#define copy_zone0_31_ADDRESS 0x088A
+#define copy_zone0_31_OFFSET 0
+#define copy_zone0_31_LENGTH 16
+#define copy_zone0_31_MASK 0xFFFF
+
+#define copy_zone0_30_ADDRESS 0x0888
+#define copy_zone0_30_OFFSET 0
+#define copy_zone0_30_LENGTH 16
+#define copy_zone0_30_MASK 0xFFFF
 
-#define NV_SPD_A_ADDRESS 0x1396
-#define NV_SPD_A_OFFSET 0
-#define NV_SPD_A_LENGTH 8
-#define NV_SPD_A_MASK 0x00FF
+#define copy_zone0_29_ADDRESS 0x0886
+#define copy_zone0_29_OFFSET 0
+#define copy_zone0_29_LENGTH 16
+#define copy_zone0_29_MASK 0xFFFF
+
+#define copy_zone0_28_ADDRESS 0x0884
+#define copy_zone0_28_OFFSET 0
+#define copy_zone0_28_LENGTH 16
+#define copy_zone0_28_MASK 0xFFFF
+
+#define copy_zone0_27_ADDRESS 0x0882
+#define copy_zone0_27_OFFSET 0
+#define copy_zone0_27_LENGTH 16
+#define copy_zone0_27_MASK 0xFFFF
+
+#define copy_zone0_26_ADDRESS 0x0880
+#define copy_zone0_26_OFFSET 0
+#define copy_zone0_26_LENGTH 16
+#define copy_zone0_26_MASK 0xFFFF
 
-#define NV_SLOPE_ADDRESS 0x1396
-#define NV_SLOPE_OFFSET 0
-#define NV_SLOPE_LENGTH 16
-#define NV_SLOPE_MASK 0xFFFF
+#define copy_zone0_25_ADDRESS 0x087E
+#define copy_zone0_25_OFFSET 0
+#define copy_zone0_25_LENGTH 16
+#define copy_zone0_25_MASK 0xFFFF
+
+#define copy_zone0_24_ADDRESS 0x087C
+#define copy_zone0_24_OFFSET 0
+#define copy_zone0_24_LENGTH 16
+#define copy_zone0_24_MASK 0xFFFF
+
+#define copy_zone0_23_ADDRESS 0x087A
+#define copy_zone0_23_OFFSET 0
+#define copy_zone0_23_LENGTH 16
+#define copy_zone0_23_MASK 0xFFFF
+
+#define copy_zone0_22_ADDRESS 0x0878
+#define copy_zone0_22_OFFSET 0
+#define copy_zone0_22_LENGTH 16
+#define copy_zone0_22_MASK 0xFFFF
+
+#define copy_zone0_21_ADDRESS 0x0876
+#define copy_zone0_21_OFFSET 0
+#define copy_zone0_21_LENGTH 16
+#define copy_zone0_21_MASK 0xFFFF
+
+#define copy_zone0_20_ADDRESS 0x0874
+#define copy_zone0_20_OFFSET 0
+#define copy_zone0_20_LENGTH 16
+#define copy_zone0_20_MASK 0xFFFF
+
+#define copy_zone0_19_ADDRESS 0x0872
+#define copy_zone0_19_OFFSET 0
+#define copy_zone0_19_LENGTH 16
+#define copy_zone0_19_MASK 0xFFFF
 
-#define NV_SLOPE_1_ADDRESS 0x1396
-#define NV_SLOPE_1_OFFSET 0
-#define NV_SLOPE_1_LENGTH 16
-#define NV_SLOPE_1_MASK 0xFFFF
+#define copy_zone0_18_ADDRESS 0x0870
+#define copy_zone0_18_OFFSET 0
+#define copy_zone0_18_LENGTH 16
+#define copy_zone0_18_MASK 0xFFFF
+
+#define copy_zone0_17_ADDRESS 0x086E
+#define copy_zone0_17_OFFSET 0
+#define copy_zone0_17_LENGTH 16
+#define copy_zone0_17_MASK 0xFFFF
+
+#define copy_zone0_16_ADDRESS 0x086C
+#define copy_zone0_16_OFFSET 0
+#define copy_zone0_16_LENGTH 16
+#define copy_zone0_16_MASK 0xFFFF
+
+#define copy_zone0_15_ADDRESS 0x086A
+#define copy_zone0_15_OFFSET 0
+#define copy_zone0_15_LENGTH 16
+#define copy_zone0_15_MASK 0xFFFF
+
+#define copy_zone0_14_ADDRESS 0x0868
+#define copy_zone0_14_OFFSET 0
+#define copy_zone0_14_LENGTH 16
+#define copy_zone0_14_MASK 0xFFFF
+
+#define copy_zone0_13_ADDRESS 0x0866
+#define copy_zone0_13_OFFSET 0
+#define copy_zone0_13_LENGTH 16
+#define copy_zone0_13_MASK 0xFFFF
+
+#define copy_zone0_12_ADDRESS 0x0864
+#define copy_zone0_12_OFFSET 0
+#define copy_zone0_12_LENGTH 16
+#define copy_zone0_12_MASK 0xFFFF
+
+#define copy_zone0_11_ADDRESS 0x0862
+#define copy_zone0_11_OFFSET 0
+#define copy_zone0_11_LENGTH 16
+#define copy_zone0_11_MASK 0xFFFF
 
-#define NV_RPM_MAX_ADDRESS 0x1394
-#define NV_RPM_MAX_OFFSET 8
-#define NV_RPM_MAX_LENGTH 8
-#define NV_RPM_MAX_MASK 0xFF00
+#define copy_zone0_10_ADDRESS 0x0860
+#define copy_zone0_10_OFFSET 0
+#define copy_zone0_10_LENGTH 16
+#define copy_zone0_10_MASK 0xFFFF
+
+#define copy_zone0_9_ADDRESS 0x085E
+#define copy_zone0_9_OFFSET 0
+#define copy_zone0_9_LENGTH 16
+#define copy_zone0_9_MASK 0xFFFF
+
+#define copy_zone0_8_ADDRESS 0x085C
+#define copy_zone0_8_OFFSET 0
+#define copy_zone0_8_LENGTH 16
+#define copy_zone0_8_MASK 0xFFFF
+
+#define copy_zone0_7_ADDRESS 0x085A
+#define copy_zone0_7_OFFSET 0
+#define copy_zone0_7_LENGTH 16
+#define copy_zone0_7_MASK 0xFFFF
+
+#define copy_zone0_6_ADDRESS 0x0858
+#define copy_zone0_6_OFFSET 0
+#define copy_zone0_6_LENGTH 16
+#define copy_zone0_6_MASK 0xFFFF
+
+#define copy_zone0_5_ADDRESS 0x0856
+#define copy_zone0_5_OFFSET 0
+#define copy_zone0_5_LENGTH 16
+#define copy_zone0_5_MASK 0xFFFF
+
+#define copy_zone0_4_ADDRESS 0x0854
+#define copy_zone0_4_OFFSET 0
+#define copy_zone0_4_LENGTH 16
+#define copy_zone0_4_MASK 0xFFFF
+
+#define copy_zone0_3_ADDRESS 0x0852
+#define copy_zone0_3_OFFSET 0
+#define copy_zone0_3_LENGTH 16
+#define copy_zone0_3_MASK 0xFFFF
 
-#define NV_RPM_MAX_1_ADDRESS 0x1394
-#define NV_RPM_MAX_1_OFFSET 8
-#define NV_RPM_MAX_1_LENGTH 8
-#define NV_RPM_MAX_1_MASK 0xFF00
+#define copy_zone0_2_ADDRESS 0x0850
+#define copy_zone0_2_OFFSET 0
+#define copy_zone0_2_LENGTH 16
+#define copy_zone0_2_MASK 0xFFFF
+
+#define copy_zone0_1_ADDRESS 0x084E
+#define copy_zone0_1_OFFSET 0
+#define copy_zone0_1_LENGTH 16
+#define copy_zone0_1_MASK 0xFFFF
+
+#define copy_zone0_0_ADDRESS 0x084C
+#define copy_zone0_0_OFFSET 0
+#define copy_zone0_0_LENGTH 16
+#define copy_zone0_0_MASK 0xFFFF
+
+#define MTP_USE_ZONE0_ADDRESS 0x084A
+#define MTP_USE_ZONE0_OFFSET 0
+#define MTP_USE_ZONE0_LENGTH 16
+#define MTP_USE_ZONE0_MASK 0xFFFF
 
-#define NV_SPD_MAX_ADDRESS 0x1394
-#define NV_SPD_MAX_OFFSET 0
-#define NV_SPD_MAX_LENGTH 8
-#define NV_SPD_MAX_MASK 0x00FF
+#define CRC_ZONE_0_ADDRESS 0x0848
+#define CRC_ZONE_0_OFFSET 0
+#define CRC_ZONE_0_LENGTH 16
+#define CRC_ZONE_0_MASK 0xFFFF
+
+#define CUST_ID0_ADDRESS 0x0846
+#define CUST_ID0_OFFSET 0
+#define CUST_ID0_LENGTH 16
+#define CUST_ID0_MASK 0xFFFF
+
+#define CUST_ID1_ADDRESS 0x0844
+#define CUST_ID1_OFFSET 0
+#define CUST_ID1_LENGTH 16
+#define CUST_ID1_MASK 0xFFFF
+
+#define CUST_ID2_ADDRESS 0x0842
+#define CUST_ID2_OFFSET 0
+#define CUST_ID2_LENGTH 16
+#define CUST_ID2_MASK 0xFFFF
 
-#define NV_SPD_MAX_1_ADDRESS 0x1394
-#define NV_SPD_MAX_1_OFFSET 0
-#define NV_SPD_MAX_1_LENGTH 8
-#define NV_SPD_MAX_1_MASK 0x00FF
+#define CUST_ID3_ADDRESS 0x0840
+#define CUST_ID3_OFFSET 0
+#define CUST_ID3_LENGTH 16
+#define CUST_ID3_MASK 0xFFFF
+
+#define MTP_ZONE0_RES1_ADDRESS 0x083E
+#define MTP_ZONE0_RES1_OFFSET 0
+#define MTP_ZONE0_RES1_LENGTH 16
+#define MTP_ZONE0_RES1_MASK 0xFFFF
+
+#define MTP_ZONE0_RES2_ADDRESS 0x083C
+#define MTP_ZONE0_RES2_OFFSET 0
+#define MTP_ZONE0_RES2_LENGTH 16
+#define MTP_ZONE0_RES2_MASK 0xFFFF
+
+#define MTP_ZONE0_RES3_ADDRESS 0x083A
+#define MTP_ZONE0_RES3_OFFSET 0
+#define MTP_ZONE0_RES3_LENGTH 16
+#define MTP_ZONE0_RES3_MASK 0xFFFF
+
+#define MTP_ZONE0_RES4_ADDRESS 0x0838
+#define MTP_ZONE0_RES4_OFFSET 0
+#define MTP_ZONE0_RES4_LENGTH 16
+#define MTP_ZONE0_RES4_MASK 0xFFFF
+
+#define MTP_ZONE0_RES5_ADDRESS 0x0836
+#define MTP_ZONE0_RES5_OFFSET 0
+#define MTP_ZONE0_RES5_LENGTH 16
+#define MTP_ZONE0_RES5_MASK 0xFFFF
+
+#define MTP_ZONE0_RES6_ADDRESS 0x0834
+#define MTP_ZONE0_RES6_OFFSET 0
+#define MTP_ZONE0_RES6_LENGTH 16
+#define MTP_ZONE0_RES6_MASK 0xFFFF
+
+#define MTP_ZONE0_RES7_ADDRESS 0x0832
+#define MTP_ZONE0_RES7_OFFSET 0
+#define MTP_ZONE0_RES7_LENGTH 16
+#define MTP_ZONE0_RES7_MASK 0xFFFF
 
-#define NV_RPM_MIN_ADDRESS 0x1392
-#define NV_RPM_MIN_OFFSET 8
-#define NV_RPM_MIN_LENGTH 8
-#define NV_RPM_MIN_MASK 0xFF00
+#define MTP_ZONE0_RES8_ADDRESS 0x0830
+#define MTP_ZONE0_RES8_OFFSET 0
+#define MTP_ZONE0_RES8_LENGTH 16
+#define MTP_ZONE0_RES8_MASK 0xFFFF
+
+#define MTP_ZONE0_RES9_ADDRESS 0x082E
+#define MTP_ZONE0_RES9_OFFSET 0
+#define MTP_ZONE0_RES9_LENGTH 16
+#define MTP_ZONE0_RES9_MASK 0xFFFF
+
+#define MTP_ZONE0_RES10_ADDRESS 0x082C
+#define MTP_ZONE0_RES10_OFFSET 0
+#define MTP_ZONE0_RES10_LENGTH 16
+#define MTP_ZONE0_RES10_MASK 0xFFFF
+
+#define MTP_ZONE0_RES11_ADDRESS 0x082A
+#define MTP_ZONE0_RES11_OFFSET 0
+#define MTP_ZONE0_RES11_LENGTH 16
+#define MTP_ZONE0_RES11_MASK 0xFFFF
+
+#define MTP_ZONE0_RES12_ADDRESS 0x0828
+#define MTP_ZONE0_RES12_OFFSET 0
+#define MTP_ZONE0_RES12_LENGTH 16
+#define MTP_ZONE0_RES12_MASK 0xFFFF
+
+#define MTP_ZONE0_RES13_ADDRESS 0x0826
+#define MTP_ZONE0_RES13_OFFSET 0
+#define MTP_ZONE0_RES13_LENGTH 16
+#define MTP_ZONE0_RES13_MASK 0xFFFF
+
+#define MTP_ZONE0_RES14_ADDRESS 0x0824
+#define MTP_ZONE0_RES14_OFFSET 0
+#define MTP_ZONE0_RES14_LENGTH 16
+#define MTP_ZONE0_RES14_MASK 0xFFFF
+
+#define MTP_ZONE0_RES15_ADDRESS 0X0822
+#define MTP_ZONE0_RES15_OFFSET 0
+#define MTP_ZONE0_RES15_LENGTH 16
+#define MTP_ZONE0_RES15_MASK 0xFFFF
 
-#define NV_RPM_MIN_1_ADDRESS 0x1392
-#define NV_RPM_MIN_1_OFFSET 8
-#define NV_RPM_MIN_1_LENGTH 8
-#define NV_RPM_MIN_1_MASK 0xFF00
+#define NV_RPM_F_ADDRESS 0X0820
+#define NV_RPM_F_OFFSET 7
+#define NV_RPM_F_LENGTH 9
+#define NV_RPM_F_MASK 0xFF80
+
+#define NV_SPD_F_ADDRESS 0X0820
+#define NV_SPD_F_OFFSET 0
+#define NV_SPD_F_LENGTH 7
+#define NV_SPD_F_MASK 0x007F
+
+#define NV_RPM_E_ADDRESS 0x081E
+#define NV_RPM_E_OFFSET 7
+#define NV_RPM_E_LENGTH 9
+#define NV_RPM_E_MASK 0xFF80
+
+#define NV_SPD_E_ADDRESS 0x081E
+#define NV_SPD_E_OFFSET 0
+#define NV_SPD_E_LENGTH 7
+#define NV_SPD_E_MASK 0x007F
+
+#define NV_RPM_D_ADDRESS 0x081C
+#define NV_RPM_D_OFFSET 7
+#define NV_RPM_D_LENGTH 9
+#define NV_RPM_D_MASK 0xFF80
+
+#define NV_SPD_D_ADDRESS 0x081C
+#define NV_SPD_D_OFFSET 0
+#define NV_SPD_D_LENGTH 7
+#define NV_SPD_D_MASK 0x007F
+
+#define NV_RPM_C_ADDRESS 0x081A
+#define NV_RPM_C_OFFSET 7
+#define NV_RPM_C_LENGTH 9
+#define NV_RPM_C_MASK 0xFF80
 
-#define NV_SPD_MIN_ADDRESS 0x1392
+#define NV_SPD_C_ADDRESS 0x081A
+#define NV_SPD_C_OFFSET 0
+#define NV_SPD_C_LENGTH 7
+#define NV_SPD_C_MASK 0x007F
+
+#define NV_RPM_B_ADDRESS 0x0818
+#define NV_RPM_B_OFFSET 7
+#define NV_RPM_B_LENGTH 9
+#define NV_RPM_B_MASK 0xFF80
+
+#define NV_SPD_B_ADDRESS 0x0818
+#define NV_SPD_B_OFFSET 0
+#define NV_SPD_B_LENGTH 7
+#define NV_SPD_B_MASK 0x007F
+
+#define NV_RPM_A_ADDRESS 0x0816
+#define NV_RPM_A_OFFSET 7
+#define NV_RPM_A_LENGTH 9
+#define NV_RPM_A_MASK 0xFF80
+
+#define NV_SPD_A_ADDRESS 0x0816
+#define NV_SPD_A_OFFSET 0
+#define NV_SPD_A_LENGTH 7
+#define NV_SPD_A_MASK 0x007F
+
+#define NV_RPM_MAX_ADDRESS 0x0814
+#define NV_RPM_MAX_OFFSET 7
+#define NV_RPM_MAX_LENGTH 9
+#define NV_RPM_MAX_MASK 0xFF80
+
+#define NV_SPD_MAX_ADDRESS 0x0814
+#define NV_SPD_MAX_OFFSET 0
+#define NV_SPD_MAX_LENGTH 7
+#define NV_SPD_MAX_MASK 0x007F
+
+#define NV_RPM_MIN_ADDRESS 0x0812
+#define NV_RPM_MIN_OFFSET 7
+#define NV_RPM_MIN_LENGTH 9
+#define NV_RPM_MIN_MASK 0xFF80
+
+#define NV_SPD_MIN_ADDRESS 0x0812
 #define NV_SPD_MIN_OFFSET 0
-#define NV_SPD_MIN_LENGTH 8
-#define NV_SPD_MIN_MASK 0x00FF
+#define NV_SPD_MIN_LENGTH 7
+#define NV_SPD_MIN_MASK 0x007F
 
-#define NV_SPD_MIN_1_ADDRESS 0x1392
-#define NV_SPD_MIN_1_OFFSET 0
-#define NV_SPD_MIN_1_LENGTH 8
-#define NV_SPD_MIN_1_MASK 0x00FF
-
-#define NV_DUTY_RAMPING_ADDRESS 0x1390
+#define NV_DUTY_RAMPING_ADDRESS 0x0810
 #define NV_DUTY_RAMPING_OFFSET 15
 #define NV_DUTY_RAMPING_LENGTH 1
 #define NV_DUTY_RAMPING_MASK 0x8000
 
-#define NV_ILIM_RAMPING_ADDRESS 0x1390
+#define NV_ILIM_RAMPING_ADDRESS 0x0810
 #define NV_ILIM_RAMPING_OFFSET 14
 #define NV_ILIM_RAMPING_LENGTH 1
 #define NV_ILIM_RAMPING_MASK 0x4000
 
-#define NV_SPD_CTRL_1_RESERVED3_ADDRESS 0x1390
-#define NV_SPD_CTRL_1_RESERVED3_OFFSET 13
-#define NV_SPD_CTRL_1_RESERVED3_LENGTH 1
-#define NV_SPD_CTRL_1_RESERVED3_MASK 0x2000
+#define NV_DC_OPENLOOP_SR_ADDRESS 0x0810
+#define NV_DC_OPENLOOP_SR_OFFSET 12
+#define NV_DC_OPENLOOP_SR_LENGTH 2
+#define NV_DC_OPENLOOP_SR_MASK 0x3000
 
-#define NV_DC_OPENLOOP_INI_ADDRESS 0x1390
-#define NV_DC_OPENLOOP_INI_OFFSET 11
+#define NV_DC_OPENLOOP_INI_ADDRESS 0x0810
+#define NV_DC_OPENLOOP_INI_OFFSET 10
 #define NV_DC_OPENLOOP_INI_LENGTH 2
-#define NV_DC_OPENLOOP_INI_MASK 0x1800
+#define NV_DC_OPENLOOP_INI_MASK 0x0C00
 
-#define NV_DC_OPENLOOP_SR_ADDRESS 0x1390
-#define NV_DC_OPENLOOP_SR_OFFSET 10
-#define NV_DC_OPENLOOP_SR_LENGTH 1
-#define NV_DC_OPENLOOP_SR_MASK 0x0400
-
-#define NV_SPD_KI_ADDRESS 0x1390
+#define NV_SPD_KI_ADDRESS 0x0810
 #define NV_SPD_KI_OFFSET 7
 #define NV_SPD_KI_LENGTH 3
 #define NV_SPD_KI_MASK 0x0380
 
-#define NV_SPD_KP_ADDRESS 0x1390
+#define NV_SPD_KP_ADDRESS 0x0810
 #define NV_SPD_KP_OFFSET 4
 #define NV_SPD_KP_LENGTH 3
 #define NV_SPD_KP_MASK 0x0070
 
-#define NV_SPD_HC_HYST_ADDRESS 0x1390
+#define NV_SPD_HC_HYST_ADDRESS 0x0810
 #define NV_SPD_HC_HYST_OFFSET 2
 #define NV_SPD_HC_HYST_LENGTH 2
 #define NV_SPD_HC_HYST_MASK 0x000C
 
-#define NV_SPD_LC_HYST_ADDRESS 0x1390
+#define NV_SPD_LC_HYST_ADDRESS 0x0810
 #define NV_SPD_LC_HYST_OFFSET 0
 #define NV_SPD_LC_HYST_LENGTH 2
 #define NV_SPD_LC_HYST_MASK 0x0003
 
-#define NV_SPDIN_MODE_ADDRESS 0x138E
+#define NV_SPDIN_MODE_ADDRESS 0x080E
 #define NV_SPDIN_MODE_OFFSET 14
 #define NV_SPDIN_MODE_LENGTH 2
 #define NV_SPDIN_MODE_MASK 0xC000
 
-#define NV_SPD_CTRL_1_RESERVED2_ADDRESS 0x138E
-#define NV_SPD_CTRL_1_RESERVED2_OFFSET 13
-#define NV_SPD_CTRL_1_RESERVED2_LENGTH 1
-#define NV_SPD_CTRL_1_RESERVED2_MASK 0x2000
+#define NV_SPD_BOOST_ADDRESS 0x080E
+#define NV_SPD_BOOST_OFFSET 13
+#define NV_SPD_BOOST_LENGTH 1
+#define NV_SPD_BOOST_MASK 0x2000
 
-#define NV_PWM_IN_INV_ADDRESS 0x138E
-#define NV_PWM_IN_INV_OFFSET 12
-#define NV_PWM_IN_INV_LENGTH 1
-#define NV_PWM_IN_INV_MASK 0x1000
+#define NV_SPD_BOOST_SS_ADDRESS 0x080E
+#define NV_SPD_BOOST_SS_OFFSET 12
+#define NV_SPD_BOOST_SS_LENGTH 1
+#define NV_SPD_BOOST_SS_MASK 0x1000
 
-#define NV_PWM_IN_INT_EN_ADDRESS 0x138E
-#define NV_PWM_IN_INT_EN_OFFSET 11
-#define NV_PWM_IN_INT_EN_LENGTH 1
-#define NV_PWM_IN_INT_EN_MASK 0x0800
+#define NV_SPD_CTRL_1_RESERVED_ADDRESS 0x080E
+#define NV_SPD_CTRL_1_RESERVED_OFFSET 11
+#define NV_SPD_CTRL_1_RESERVED_LENGTH 1
+#define NV_SPD_CTRL_1_RESERVED_MASK 0x0800
 
-#define NV_SPD_LOOP_MODE_ADDRESS 0x138E
+#define NV_SPD_LOOP_MODE_ADDRESS 0x080E
 #define NV_SPD_LOOP_MODE_OFFSET 10
 #define NV_SPD_LOOP_MODE_LENGTH 1
 #define NV_SPD_LOOP_MODE_MASK 0x0400
 
-#define NV_RPM_LC_ADDRESS 0x138E
+#define NV_RPM_LC_ADDRESS 0x080E
 #define NV_RPM_LC_OFFSET 9
 #define NV_RPM_LC_LENGTH 1
 #define NV_RPM_LC_MASK 0x0200
 
-#define NV_RPM_HC_ADDRESS 0x138E
+#define NV_RPM_HC_ADDRESS 0x080E
 #define NV_RPM_HC_OFFSET 8
 #define NV_RPM_HC_LENGTH 1
 #define NV_RPM_HC_MASK 0x0100
 
-#define NV_SPD_LC_VAL_ADDRESS 0x138E
+#define NV_SPD_LC_VAL_ADDRESS 0x080E
 #define NV_SPD_LC_VAL_OFFSET 6
 #define NV_SPD_LC_VAL_LENGTH 2
 #define NV_SPD_LC_VAL_MASK 0x00C0
 
-#define NV_SPD_HC_VAL_ADDRESS 0x138E
+#define NV_SPD_HC_VAL_ADDRESS 0x080E
 #define NV_SPD_HC_VAL_OFFSET 4
 #define NV_SPD_HC_VAL_LENGTH 2
 #define NV_SPD_HC_VAL_MASK 0x0030
 
-#define NV_CURVE_MODE_ADDRESS 0x138E
+#define NV_CURVE_MODE_ADDRESS 0x080E
 #define NV_CURVE_MODE_OFFSET 2
 #define NV_CURVE_MODE_LENGTH 2
 #define NV_CURVE_MODE_MASK 0x000C
 
-#define NV_SPD_CTRL_1_RESERVED1_ADDRESS 0x138E
-#define NV_SPD_CTRL_1_RESERVED1_OFFSET 0
-#define NV_SPD_CTRL_1_RESERVED1_LENGTH 2
-#define NV_SPD_CTRL_1_RESERVED1_MASK 0x0003
+#define NV_SPD_TICK_ADDRESS 0x080E
+#define NV_SPD_TICK_OFFSET 0
+#define NV_SPD_TICK_LENGTH 2
+#define NV_SPD_TICK_MASK 0x0003
 
-#define NV_MIN_EHP_RESERVED_ADDRESS 0x138C
+#define NV_MIN_EHP_RESERVED_ADDRESS 0x080C
 #define NV_MIN_EHP_RESERVED_OFFSET 15
 #define NV_MIN_EHP_RESERVED_LENGTH 1
 #define NV_MIN_EHP_RESERVED_MASK 0x8000
 
-#define NV_EHP_TIMER_PRESCALER_ADDRESS 0x138C
+#define NV_EHP_TIMER_PRESCALER_ADDRESS 0x080C
 #define NV_EHP_TIMER_PRESCALER_OFFSET 13
 #define NV_EHP_TIMER_PRESCALER_LENGTH 2
 #define NV_EHP_TIMER_PRESCALER_MASK 0x6000
 
-#define NV_EHP_FULL_RANGE_ADDRESS 0x138C
+#define NV_EHP_FULL_RANGE_ADDRESS 0x080C
 #define NV_EHP_FULL_RANGE_OFFSET 0
 #define NV_EHP_FULL_RANGE_LENGTH 13
 #define NV_EHP_FULL_RANGE_MASK 0x1FFF
 
-#define NV_RESERVED2_ADDRESS 0x138A
+#define NV_RESERVED2_ADDRESS 0x080A
 #define NV_RESERVED2_OFFSET 0
 #define NV_RESERVED2_LENGTH 16
 #define NV_RESERVED2_MASK 0xFFFF
 
-#define NV_I_ZC_TH_HIGH_ADDRESS 0x1388
+#define NV_I_ZC_TH_HIGH_ADDRESS 0x0808
 #define NV_I_ZC_TH_HIGH_OFFSET 12
 #define NV_I_ZC_TH_HIGH_LENGTH 4
 #define NV_I_ZC_TH_HIGH_MASK 0xF000
 
-#define NV_I_ZC_TH_LOW_ADDRESS 0x1388
+#define NV_I_ZC_TH_LOW_ADDRESS 0x0808
 #define NV_I_ZC_TH_LOW_OFFSET 8
 #define NV_I_ZC_TH_LOW_LENGTH 4
 #define NV_I_ZC_TH_LOW_MASK 0x0F00
 
-#define NV_DI_TH_1ST_ADDRESS 0x1388
+#define NV_DI_TH_1ST_ADDRESS 0x0808
 #define NV_DI_TH_1ST_OFFSET 4
 #define NV_DI_TH_1ST_LENGTH 4
 #define NV_DI_TH_1ST_MASK 0x00F0
 
-#define NV_DI_TH_2ND_ADDRESS 0x1388
+#define NV_DI_TH_2ND_ADDRESS 0x0808
 #define NV_DI_TH_2ND_OFFSET 0
 #define NV_DI_TH_2ND_LENGTH 4
 #define NV_DI_TH_2ND_MASK 0x000F
 
-#define NV_QUICK_START_ADDRESS 0x1386
+#define NV_QUICK_START_ADDRESS 0x0806
 #define NV_QUICK_START_OFFSET 15
 #define NV_QUICK_START_LENGTH 1
 #define NV_QUICK_START_MASK 0x8000
 
-#define NV_WIND_START_ADDRESS 0x1386
+#define NV_WIND_START_ADDRESS 0x0806
 #define NV_WIND_START_OFFSET 14
 #define NV_WIND_START_LENGTH 1
 #define NV_WIND_START_MASK 0x4000
 
-#define NV_WIND_BRAKE_RESERVED_ADDRESS 0x1386
+#define NV_WIND_BRAKE_RESERVED_ADDRESS 0x0806
 #define NV_WIND_BRAKE_RESERVED_OFFSET 9
 #define NV_WIND_BRAKE_RESERVED_LENGTH 5
 #define NV_WIND_BRAKE_RESERVED_MASK 0x3E00
 
-#define NV_SOFT_NUM_STEP_ADDRESS 0x1386
+#define NV_SOFT_NUM_STEP_ADDRESS 0x0806
 #define NV_SOFT_NUM_STEP_OFFSET 6
 #define NV_SOFT_NUM_STEP_LENGTH 3
 #define NV_SOFT_NUM_STEP_MASK 0x01C0
 
-#define NV_WIND_WINDOW_ADDRESS 0x1386
+#define NV_WIND_WINDOW_ADDRESS 0x0806
 #define NV_WIND_WINDOW_OFFSET 3
 #define NV_WIND_WINDOW_LENGTH 3
 #define NV_WIND_WINDOW_MASK 0x0038
 
-#define NV_BRAKE_WINDOW_ADDRESS 0x1386
+#define NV_BRAKE_WINDOW_ADDRESS 0x0806
 #define NV_BRAKE_WINDOW_OFFSET 0
 #define NV_BRAKE_WINDOW_LENGTH 3
 #define NV_BRAKE_WINDOW_MASK 0x0007
 
-#define NV_SINGLE_PULSE_START_ADDRESS 0x1384
+#define NV_SINGLE_PULSE_START_ADDRESS 0x0804
 #define NV_SINGLE_PULSE_START_OFFSET 15
 #define NV_SINGLE_PULSE_START_LENGTH 1
 #define NV_SINGLE_PULSE_START_MASK 0x8000
 
-#define NV_LONG_START_ADDRESS 0x1384
+#define NV_LONG_START_ADDRESS 0x0804
 #define NV_LONG_START_OFFSET 14
 #define NV_LONG_START_LENGTH 1
 #define NV_LONG_START_MASK 0x4000
 
-#define NV_SOFT_START_ADDRESS 0x1384
+#define NV_SOFT_START_ADDRESS 0x0804
 #define NV_SOFT_START_OFFSET 13
 #define NV_SOFT_START_LENGTH 1
 #define NV_SOFT_START_MASK 0x2000
 
-#define NV_COMM_START_NUM_ADDRESS 0x1384
+#define NV_COMM_START_NUM_ADDRESS 0x0804
 #define NV_COMM_START_NUM_OFFSET 11
 #define NV_COMM_START_NUM_LENGTH 2
 #define NV_COMM_START_NUM_MASK 0x1800
 
-#define NV_START_DUTY_ADDRESS 0x1384
+#define NV_START_DUTY_ADDRESS 0x0804
 #define NV_START_DUTY_OFFSET 9
 #define NV_START_DUTY_LENGTH 2
 #define NV_START_DUTY_MASK 0x0600
 
-#define NV_SOFT_STEP_SIZE_ADDRESS 0x1384
+#define NV_SOFT_STEP_SIZE_ADDRESS 0x0804
 #define NV_SOFT_STEP_SIZE_OFFSET 6
 #define NV_SOFT_STEP_SIZE_LENGTH 3
 #define NV_SOFT_STEP_SIZE_MASK 0x01C0
 
-#define NV_START_UP_TIME_ADDRESS 0x1384
+#define NV_START_UP_TIME_ADDRESS 0x0804
 #define NV_START_UP_TIME_OFFSET 0
 #define NV_START_UP_TIME_LENGTH 6
 #define NV_START_UP_TIME_MASK 0x003F
 
-#define NV_POSITION_DUTY_ADDRESS 0x1382
+#define NV_POSITION_DUTY_ADDRESS 0x0802
 #define NV_POSITION_DUTY_OFFSET 14
 #define NV_POSITION_DUTY_LENGTH 2
 #define NV_POSITION_DUTY_MASK 0xC000
 
-#define NV_POSITION_PULSE_TIME_ADDRESS 0x1382
+#define NV_POSITION_PULSE_TIME_ADDRESS 0x0802
 #define NV_POSITION_PULSE_TIME_OFFSET 9
 #define NV_POSITION_PULSE_TIME_LENGTH 5
 #define NV_POSITION_PULSE_TIME_MASK 0x3E00
 
-#define NV_POSI_MAJO_VOTE_ADDRESS 0x1382
+#define NV_POSI_MAJO_VOTE_ADDRESS 0x0802
 #define NV_POSI_MAJO_VOTE_OFFSET 8
 #define NV_POSI_MAJO_VOTE_LENGTH 1
 #define NV_POSI_MAJO_VOTE_MASK 0x0100
 
-#define NV_ANTI_COG_ADDRESS 0x1382
+#define NV_ANTI_COG_ADDRESS 0x0802
 #define NV_ANTI_COG_OFFSET 7
 #define NV_ANTI_COG_LENGTH 1
 #define NV_ANTI_COG_MASK 0x0080
 
-#define NV_POSITION_RESERVED_ADDRESS 0x1382
+#define NV_POSITION_RESERVED_ADDRESS 0x0802
 #define NV_POSITION_RESERVED_OFFSET 6
 #define NV_POSITION_RESERVED_LENGTH 1
 #define NV_POSITION_RESERVED_MASK 0x0040
 
-#define NV_FIRST_NON_FLAT_TIME_ADDRESS 0x1382
+#define NV_FIRST_NON_FLAT_TIME_ADDRESS 0x0802
 #define NV_FIRST_NON_FLAT_TIME_OFFSET 0
 #define NV_FIRST_NON_FLAT_TIME_LENGTH 6
 #define NV_FIRST_NON_FLAT_TIME_MASK 0x003F
 
-#define NV_FG_FILTER_ADDRESS 0x1380
+#define NV_FG_FILTER_ADDRESS 0x0800
 #define NV_FG_FILTER_OFFSET 15
 #define NV_FG_FILTER_LENGTH 1
 #define NV_FG_FILTER_MASK 0x8000
 
-#define NV_RD_ADDRESS 0x1380
+#define NV_RD_ADDRESS 0x0800
 #define NV_RD_OFFSET 14
 #define NV_RD_LENGTH 1
 #define NV_RD_MASK 0x4000
 
-#define NV_ADC_FLAT_FILT_DEP_ADDRESS 0x1380
+#define NV_ADC_FLAT_FILT_DEP_ADDRESS 0x0800
 #define NV_ADC_FLAT_FILT_DEP_OFFSET 12
 #define NV_ADC_FLAT_FILT_DEP_LENGTH 2
 #define NV_ADC_FLAT_FILT_DEP_MASK 0x3000
 
-#define NV_EHP_REG_GAIN_ADDRESS 0x1380
+#define NV_EHP_REG_GAIN_ADDRESS 0x0800
 #define NV_EHP_REG_GAIN_OFFSET 10
 #define NV_EHP_REG_GAIN_LENGTH 2
 #define NV_EHP_REG_GAIN_MASK 0x0C00
 
-#define NV_ROUGH_GAIN_ADDRESS 0x1380
+#define NV_ROUGH_GAIN_ADDRESS 0x0800
 #define NV_ROUGH_GAIN_OFFSET 9
 #define NV_ROUGH_GAIN_LENGTH 1
 #define NV_ROUGH_GAIN_MASK 0x0200
 
-#define NV_PWM_MOD_ADDRESS 0x1380
+#define NV_PWM_MOD_ADDRESS 0x0800
 #define NV_PWM_MOD_OFFSET 8
 #define NV_PWM_MOD_LENGTH 1
 #define NV_PWM_MOD_MASK 0x0100
 
-#define NV_PWM_36K_ADDRESS 0x1380
+#define NV_PWM_36K_ADDRESS 0x0800
 #define NV_PWM_36K_OFFSET 7
 #define NV_PWM_36K_LENGTH 1
 #define NV_PWM_36K_MASK 0x0080
 
-#define NV_FG_DIV_MODE_ADDRESS 0x1380
+#define NV_FG_DIV_MODE_ADDRESS 0x0800
 #define NV_FG_DIV_MODE_OFFSET 5
 #define NV_FG_DIV_MODE_LENGTH 2
 #define NV_FG_DIV_MODE_MASK 0x0060
 
-#define NV_BEMF_ZC_HYST_ADDRESS 0x1380
+#define NV_BEMF_ZC_HYST_ADDRESS 0x0800
 #define NV_BEMF_ZC_HYST_OFFSET 3
 #define NV_BEMF_ZC_HYST_LENGTH 2
 #define NV_BEMF_ZC_HYST_MASK 0x0018
 
-#define NV_FLAT_BANK_ADDRESS 0x1380
+#define NV_FLAT_BANK_ADDRESS 0x0800
 #define NV_FLAT_BANK_OFFSET 0
 #define NV_FLAT_BANK_LENGTH 3
 #define NV_FLAT_BANK_MASK 0x0007
 
+
--- a/nv_defaults.h	Tue Jan 26 11:13:25 2021 +0000
+++ b/nv_defaults.h	Fri Feb 26 08:45:13 2021 +0000
@@ -1,7 +1,8 @@
 #define NV_POSITION_DEFUALT (17<<NV_POSITION_PULSE_TIME_OFFSET)|(3<<NV_POSITION_DUTY_OFFSET)|(0<<NV_POSI_MAJO_VOTE_OFFSET)|(0<<NV_ANTI_COG_OFFSET)|(1<<NV_FIRST_NON_FLAT_TIME_OFFSET)
 #define NV_START_UP_DEFAULT (0<<NV_SOFT_START_OFFSET)|(0<<NV_SINGLE_PULSE_START_OFFSET)|(0<<NV_LONG_START_OFFSET)|(3<<NV_COMM_START_NUM_OFFSET)|(3<<NV_START_DUTY_OFFSET)|(3<<NV_SOFT_STEP_SIZE_OFFSET)|(36<<NV_START_UP_TIME_OFFSET) 
 #define NV_WIND_BRAKE_DEFAULT (1<<NV_QUICK_START_OFFSET)|(0<<NV_WIND_START_OFFSET)|(1<<NV_SOFT_NUM_STEP_OFFSET)|(1<<NV_WIND_WINDOW_OFFSET)|(0<<NV_BRAKE_WINDOW_OFFSET)
-                                    
-                                   
+#define NV_SPD_CONTROL_1_VAL 0                                    
+
+#define RAM_OPEN_DUTY_VAL 65535                                   
                                    
                                     
--- a/nv_defines.h	Tue Jan 26 11:13:25 2021 +0000
+++ b/nv_defines.h	Fri Feb 26 08:45:13 2021 +0000
@@ -1,33 +1,257 @@
-// Generated by 90418_OTPmap.xlsm on 2021-01-21 09:27
-#define NV_TRACEABILITY_3 5054
-#define NV_TRACEABILITY_2 5052
-#define NV_TRACEABILITY_1 5050
-#define NV_RESERVED_12 5048
-#define NV_RESERVED_11 5046
-#define NV_RESERVED_10 5044
-#define NV_RESERVED_9 5042
-#define NV_RESERVED_8 5040
-#define NV_RESERVED_7 5038
-#define NV_RESERVED_6 5036
-#define NV_RESERVED_5 5034
-#define NV_RESERVED_4 5032
-#define NV_RESERVED_3 5030
-#define NV_PASSWORD 5028
-#define NV_CUST_ID2 5026
-#define NV_CUST_ID1 5024
-#define NV_RESERVED_2 5022
-#define NV_CURVE_PAR_D 5020
-#define NV_CURVE_PAR_C 5018
-#define NV_CURVE_PAR_B 5016
-#define NV_CURVE_PAR_A 5014
-#define NV_CURVE_PNT_MAX 5012
-#define NV_CURVE_PNT_MIN 5010
-#define NV_SPD_CTRL_2 5008
-#define NV_SPD_CTRL_1 5006
-#define NV_MIN_EHP 5004
-#define NV_RESERVED2 5002
-#define NV_COMM 5000
-#define NV_WIND_BRAKE 4998
-#define NV_START_UP 4996
-#define NV_POSITION 4994
-#define NV_GEN_CTRL 4992
+#define NVADDR_NV_TRACEABILITY_3    5208
+#define NVADDR_NV_TRACEABILITY_2    5206
+#define NVADDR_NV_TRACEABILITY_1    5204
+#define NVADDR_NV_TRACEABILITY_0    5202
+#define NVADDR_MLX_TRIM_15  5200
+#define NVADDR_MLX_TRIM_14  5198
+#define NVADDR_MLX_TRIM_13  5196
+#define NVADDR_MLX_TRIM_12  5194
+#define NVADDR_MLX_TRIM_11  5192
+#define NVADDR_MLX_TRIM_10  5190
+#define NVADDR_MLX_TRIM_9   5188
+#define NVADDR_MLX_TRIM_8   5186
+#define NVADDR_MLX_TRIM_7   5184
+#define NVADDR_MLX_TRIM_6   5182
+#define NVADDR_MLX_TRIM_5   5180
+#define NVADDR_MLX_TRIM_4   5178
+#define NVADDR_MLX_TRIM_3   5176
+#define NVADDR_MLX_TRIM_2   5174
+#define NVADDR_MLX_TRIM_1   5172
+#define NVADDR_MLX_TRIM_0   5170
+#define NVADDR_MLX_CALIB_23 5168
+#define NVADDR_MLX_CALIB_22 5166
+#define NVADDR_MLX_CALIB_21 5164
+#define NVADDR_MLX_CALIB_20 5162
+#define NVADDR_MLX_CALIB_19 5160
+#define NVADDR_MLX_CALIB_18 5158
+#define NVADDR_MLX_CALIB_17 5156
+#define NVADDR_MLX_CALIB_16 5154
+#define NVADDR_MLX_CALIB_15 5152
+#define NVADDR_MLX_CALIB_14 5150
+#define NVADDR_MLX_CALIB_13 5148
+#define NVADDR_MLX_CALIB_12 5146
+#define NVADDR_MLX_CALIB_11 5144
+#define NVADDR_MLX_CALIB_10 5142
+#define NVADDR_MLX_CALIB_9  5140
+#define NVADDR_MLX_CALIB_8  5138
+#define NVADDR_MLX_CALIB_7  5136
+#define NVADDR_MLX_CALIB_6  5134
+#define NVADDR_MLX_CALIB_5  5132
+#define NVADDR_MLX_CALIB_4  5130
+#define NVADDR_MLX_CALIB_3  5128
+#define NVADDR_MLX_CALIB_2  5126
+#define NVADDR_MLX_CALIB_1  5124
+#define NVADDR_MLX_CALIB_0  5122
+#define NVADDR_FREE_89  5120
+#define NVADDR_FREE_88  5118
+#define NVADDR_FREE_87  5116
+#define NVADDR_FREE_86  5114
+#define NVADDR_FREE_85  5112
+#define NVADDR_FREE_84  5110
+#define NVADDR_FREE_83  5108
+#define NVADDR_FREE_82  5106
+#define NVADDR_FREE_81  5104
+#define NVADDR_FREE_80  5102
+#define NVADDR_FREE_79  5100
+#define NVADDR_FREE_78  5098
+#define NVADDR_FREE_77  5096
+#define NVADDR_FREE_76  5094
+#define NVADDR_FREE_75  5092
+#define NVADDR_FREE_74  5090
+#define NVADDR_FREE_73  5088
+#define NVADDR_FREE_72  5086
+#define NVADDR_FREE_71  5084
+#define NVADDR_FREE_70  5082
+#define NVADDR_FREE_69  5080
+#define NVADDR_FREE_68  5078
+#define NVADDR_FREE_67  5076
+#define NVADDR_FREE_66  5074
+#define NVADDR_FREE_65  5072
+#define NVADDR_FREE_64  5070
+#define NVADDR_FREE_63  5068
+#define NVADDR_FREE_62  5066
+#define NVADDR_FREE_61  5064
+#define NVADDR_FREE_60  5062
+#define NVADDR_FREE_59  5060
+#define NVADDR_FREE_58  5058
+#define NVADDR_FREE_57  5056
+#define NVADDR_FREE_56  5054
+#define NVADDR_FREE_55  5052
+#define NVADDR_FREE_54  5050
+#define NVADDR_FREE_53  5048
+#define NVADDR_FREE_52  5046
+#define NVADDR_FREE_51  5044
+#define NVADDR_FREE_50  5042
+#define NVADDR_FREE_49  5040
+#define NVADDR_FREE_48  5038
+#define NVADDR_FREE_47  5036
+#define NVADDR_FREE_46  5034
+#define NVADDR_FREE_45  5032
+#define NVADDR_FREE_44  5030
+#define NVADDR_FREE_43  5028
+#define NVADDR_FREE_42  5026
+#define NVADDR_FREE_41  5024
+#define NVADDR_FREE_40  5022
+#define NVADDR_FREE_39  5020
+#define NVADDR_FREE_38  5018
+#define NVADDR_FREE_37  5016
+#define NVADDR_FREE_36  5014
+#define NVADDR_FREE_35  5012
+#define NVADDR_FREE_34  5010
+#define NVADDR_FREE_33  5008
+#define NVADDR_FREE_32  5006
+#define NVADDR_FREE_31  5004
+#define NVADDR_FREE_30  5002
+#define NVADDR_FREE_29  5000
+#define NVADDR_FREE_28  4998
+#define NVADDR_FREE_27  4996
+#define NVADDR_FREE_26  4994
+#define NVADDR_FREE_25  4992
+#define NVADDR_FREE_24  4990
+#define NVADDR_FREE_23  4988
+#define NVADDR_FREE_22  4986
+#define NVADDR_FREE_21  4984
+#define NVADDR_FREE_20  4982
+#define NVADDR_FREE_19  4980
+#define NVADDR_FREE_18  4978
+#define NVADDR_FREE_17  4976
+#define NVADDR_FREE_16  4974
+#define NVADDR_FREE_15  4972
+#define NVADDR_FREE_14  4970
+#define NVADDR_FREE_13  4968
+#define NVADDR_FREE_12  4966
+#define NVADDR_FREE_11  4964
+#define NVADDR_FREE_10  4962
+#define NVADDR_FREE_9   4960
+#define NVADDR_FREE_8   4958
+#define NVADDR_FREE_7   4956
+#define NVADDR_FREE_6   4954
+#define NVADDR_FREE_5   4952
+#define NVADDR_FREE_4   4950
+#define NVADDR_FREE_3   4948
+#define NVADDR_FREE_2   4946
+#define NVADDR_FREE_1   4944
+#define NVADDR_FREE_0   4942
+#define NVADDR_NV_PATCH_3_INSTRUCTION   4940
+#define NVADDR_NV_PATCH_3_ADDRESS   4938
+#define NVADDR_NV_PATCH_2_INSTRUCTION   4936
+#define NVADDR_NV_PATCH_2_ADDRESS   4934
+#define NVADDR_NV_PATCH_1_INSTRUCTION   4932
+#define NVADDR_MV_PATCH_1_ADDRESS   4930
+#define NVADDR_NV_PATCH_0_INSTRUCTION   4928
+#define NVADDR_NV_PATCH_0_ADDRESS   4926
+#define NVADDR_MTP_USE_ZONE2    4924
+#define NVADDR_CRC_ZONE_2   4922
+#define NVADDR_copy_zone1_35    4920
+#define NVADDR_copy_zone1_34    4918
+#define NVADDR_copy_zone1_33    4916
+#define NVADDR_copy_zone1_32    4914
+#define NVADDR_copy_zone1_31    4912
+#define NVADDR_copy_zone1_30    4910
+#define NVADDR_copy_zone1_29    4908
+#define NVADDR_copy_zone1_28    4906
+#define NVADDR_copy_zone1_27    4904
+#define NVADDR_copy_zone1_26    4902
+#define NVADDR_copy_zone1_25    4900
+#define NVADDR_copy_zone1_24    4898
+#define NVADDR_copy_zone1_23    4896
+#define NVADDR_copy_zone1_22    4894
+#define NVADDR_copy_zone1_21    4892
+#define NVADDR_copy_zone1_20    4890
+#define NVADDR_copy_zone1_19    4888
+#define NVADDR_copy_zone1_18    4886
+#define NVADDR_copy_zone1_17    4884
+#define NVADDR_copy_zone1_16    4882
+#define NVADDR_copy_zone1_15    4880
+#define NVADDR_copy_zone1_14    4878
+#define NVADDR_copy_zone1_13    4876
+#define NVADDR_copy_zone1_12    4874
+#define NVADDR_copy_zone1_11    4872
+#define NVADDR_copy_zone1_10    4870
+#define NVADDR_copy_zone1_9 4868
+#define NVADDR_copy_zone1_8 4866
+#define NVADDR_copy_zone1_7 4864
+#define NVADDR_copy_zone1_6 4862
+#define NVADDR_copy_zone1_5 4860
+#define NVADDR_copy_zone1_4 4858
+#define NVADDR_copy_zone1_3 4856
+#define NVADDR_copy_zone1_2 4854
+#define NVADDR_copy_zone1_1 4852
+#define NVADDR_copy_zone1_0 4850
+#define NVADDR_MTP_USE_ZONE1    4848
+#define NVADDR_CRC_ZONE_1   4846
+#define NVADDR_copy_zone0_35    4844
+#define NVADDR_copy_zone0_34    4842
+#define NVADDR_copy_zone0_33    4840
+#define NVADDR_copy_zone0_32    4838
+#define NVADDR_copy_zone0_31    4836
+#define NVADDR_copy_zone0_30    4834
+#define NVADDR_copy_zone0_29    4832
+#define NVADDR_copy_zone0_28    4830
+#define NVADDR_copy_zone0_27    4828
+#define NVADDR_copy_zone0_26    4826
+#define NVADDR_copy_zone0_25    4824
+#define NVADDR_copy_zone0_24    4822
+#define NVADDR_copy_zone0_23    4820
+#define NVADDR_copy_zone0_22    4818
+#define NVADDR_copy_zone0_21    4816
+#define NVADDR_copy_zone0_20    4814
+#define NVADDR_copy_zone0_19    4812
+#define NVADDR_copy_zone0_18    4810
+#define NVADDR_copy_zone0_17    4808
+#define NVADDR_copy_zone0_16    4806
+#define NVADDR_copy_zone0_15    4804
+#define NVADDR_copy_zone0_14    4802
+#define NVADDR_copy_zone0_13    4800
+#define NVADDR_copy_zone0_12    4798
+#define NVADDR_copy_zone0_11    4796
+#define NVADDR_copy_zone0_10    4794
+#define NVADDR_copy_zone0_9 4792
+#define NVADDR_copy_zone0_8 4790
+#define NVADDR_copy_zone0_7 4788
+#define NVADDR_copy_zone0_6 4786
+#define NVADDR_copy_zone0_5 4784
+#define NVADDR_copy_zone0_4 4782
+#define NVADDR_copy_zone0_3 4780
+#define NVADDR_copy_zone0_2 4778
+#define NVADDR_copy_zone0_1 4776
+#define NVADDR_copy_zone0_0 4774
+#define NVADDR_MTP_USE_ZONE0    4772
+#define NVADDR_CRC_ZONE_0   4770
+#define NVADDR_CUST_ID0 4768
+#define NVADDR_CUST_ID1 4766
+#define NVADDR_CUST_ID2 4764
+#define NVADDR_CUST_ID3 4762
+#define NVADDR_NV_DIGITAL_CFG   4760
+#define NVADDR_MTP_ZONE0_RES2   4758
+#define NVADDR_MTP_ZONE0_RES3   4756
+#define NVADDR_MTP_ZONE0_RES4   4754
+#define NVADDR_MTP_ZONE0_RES5   4752
+#define NVADDR_NV_APPLICATION_CFG3  4750
+#define NVADDR_NV_APPLCATION_CFG2   4748
+#define NVADDR_NV_APPLICATION_CFG   4746
+#define NVADDR_MTP_ZONE0_RES9   4744
+#define NVADDR_MTP_ZONE0_RES10  4742
+#define NVADDR_MTP_ZONE0_RES11  4740
+#define NVADDR_MTP_ZONE0_RES12  4738
+#define NVADDR_MTP_ZONE0_RES13  4736
+#define NVADDR_MTP_ZONE0_RES14  4734
+#define NVADDR_MTP_ZONE0_RES15  4732
+#define NVADDR_NV_CURVE_PAR_F   4730
+#define NVADDR_NV_CURVE_PAR_E   4728
+#define NVADDR_NV_CURVE_PAR_D   4726
+#define NVADDR_NV_CURVE_PAR_C   4724
+#define NVADDR_NV_CURVE_PAR_B   4722
+#define NVADDR_NV_CURVE_PAR_A   4720
+#define NVADDR_NV_CURVE_PNT_MAX 4718
+#define NVADDR_NV_CURVE_PNT_MIN 4716
+#define NVADDR_NV_SPD_CTRL_2    4714
+#define NVADDR_NV_SPD_CTRL_1    4712
+#define NVADDR_NV_MIN_EHP   4710
+#define NVADDR_NV_RESERVED2 4708
+#define NVADDR_NV_COMM  4706
+#define NVADDR_NV_WIND_BRAKE    4704
+#define NVADDR_NV_START_UP  4702
+#define NVADDR_NV_POSITION  4700
+#define NVADDR_NV_GEN_CTRL  4698
+