diff --git a/FEE/smile_fee_cmd.c b/FEE/smile_fee_cmd.c
index 7e60920c3e7c4074db6408a005b5191eb1adeb31..e710447f092ee94c6633e62475422bc743d480fb 100644
--- a/FEE/smile_fee_cmd.c
+++ b/FEE/smile_fee_cmd.c
@@ -392,6 +392,22 @@ int fee_read_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd)
 }
 
 
+/**
+ * @brief create a command to read the FEE configuration register 23
+ *
+ * @param trans_id a transaction identifier
+ *
+ * @param cmd the command buffer; if NULL, the function returns the needed size
+ *
+ * @returns the size of the command data buffer or 0 on error
+ */
+
+int fee_read_cmd_cfg_reg_23(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_23);
+}
+
+
 /**
  * @brief create a command to read the FEE configuration register 24
  *
@@ -408,6 +424,22 @@ int fee_read_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd)
 }
 
 
+/**
+ * @brief create a command to read the FEE configuration register 25
+ *
+ * @param trans_id a transaction identifier
+ *
+ * @param cmd the command buffer; if NULL, the function returns the needed size
+ *
+ * @returns the size of the command data buffer or 0 on error
+ */
+
+int fee_read_cmd_cfg_reg_25(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_25);
+}
+
+
 /**
  * @brief create a command to write the FEE configuration register 0
  *
@@ -584,6 +616,22 @@ int fee_write_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd)
 }
 
 
+/**
+ * @brief create a command to write the FEE configuration register 23
+ *
+ * @param trans_id a transaction identifier
+ *
+ * @param cmd the command buffer; if NULL, the function returns the needed size
+ *
+ * @returns the size of the command data buffer or 0 on error
+ */
+
+int fee_write_cmd_cfg_reg_23(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_write_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_23);
+}
+
+
 /**
  * @brief create a command to write the FEE configuration register 24
  *
@@ -600,6 +648,22 @@ int fee_write_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd)
 }
 
 
+/**
+ * @brief create a command to write the FEE configuration register 25
+ *
+ * @param trans_id a transaction identifier
+ *
+ * @param cmd the command buffer; if NULL, the function returns the needed size
+ *
+ * @returns the size of the command data buffer or 0 on error
+ */
+
+int fee_write_cmd_cfg_reg_25(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_write_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_25);
+}
+
+
 /**
 * @brief create a command to read the FEE HK register 3
 *
diff --git a/FEE/smile_fee_cmd.h b/FEE/smile_fee_cmd.h
index 1defd645efc74f8f380c2d95edaee5f93220bc32..23a67220e6d4125c8bda1c36cd1dcb8b84c3b304 100644
--- a/FEE/smile_fee_cmd.h
+++ b/FEE/smile_fee_cmd.h
@@ -22,7 +22,7 @@
 
 #include <stdint.h>
 
-/* FEE RW registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */
+/* FEE RW registers (SMILE-MSSL-PL-Register_map_v0.14_Draft) */
 
 #define FEE_CFG_REG_0		0x00000000UL
 #define FEE_CFG_REG_1		0x00000004UL
@@ -47,11 +47,12 @@
 #define FEE_CFG_REG_20		0x00000050UL
 #define FEE_CFG_REG_21		0x00000054UL
 #define FEE_CFG_REG_22		0x00000058UL
-#define FEE_CFG_REG_23		0x0000005CUL	/* reserved */
+#define FEE_CFG_REG_23		0x0000005CUL
 #define FEE_CFG_REG_24		0x00000060UL
+#define FEE_CFG_REG_25		0x00000064UL
 
 
-/* FEE  RO registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */
+/* FEE  RO registers (SMILE-MSSL-PL-Register_map_v0.14_Draft) */
 
 #define FEE_HK_REG_0		0x00000700	/* reserved */
 #define FEE_HK_REG_1		0x00000704	/* reserved */
@@ -114,7 +115,9 @@ int fee_read_cmd_cfg_reg_19(uint16_t trans_id, uint8_t *cmd);
 int fee_read_cmd_cfg_reg_20(uint16_t trans_id, uint8_t *cmd);
 int fee_read_cmd_cfg_reg_21(uint16_t trans_id, uint8_t *cmd);
 int fee_read_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_cfg_reg_23(uint16_t trans_id, uint8_t *cmd);
 int fee_read_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_cfg_reg_25(uint16_t trans_id, uint8_t *cmd);
 
 
 /* FEE configuration register write accessors */
@@ -129,7 +132,9 @@ int fee_write_cmd_cfg_reg_19(uint16_t trans_id, uint8_t *cmd);
 int fee_write_cmd_cfg_reg_20(uint16_t trans_id, uint8_t *cmd);
 int fee_write_cmd_cfg_reg_21(uint16_t trans_id, uint8_t *cmd);
 int fee_write_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd);
+int fee_write_cmd_cfg_reg_23(uint16_t trans_id, uint8_t *cmd);
 int fee_write_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd);
+int fee_write_cmd_cfg_reg_25(uint16_t trans_id, uint8_t *cmd);
 
 
 /* FEE housekeeping register read accessors */
diff --git a/FEE/smile_fee_ctrl.c b/FEE/smile_fee_ctrl.c
index 08415e8a270f79bb744bafc850f48cbfa084e654..849b954620d958d161b432ee8d965f0f375ef648 100644
--- a/FEE/smile_fee_ctrl.c
+++ b/FEE/smile_fee_ctrl.c
@@ -48,7 +48,6 @@
  *	    development process. Make sure to inspect the latest register
  *	    map for changes.
  */
-#define FEE_SIM 1	/* XXX */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -584,6 +583,35 @@ void smile_fee_set_correction_bypass(uint32_t mode)
 }
 
 
+/**
+ * @brief get DG en
+ *
+ * @returns 0 if DG operate as per mode
+ */
+
+uint32_t smile_fee_get_dg_en(void)
+{
+	return (smile_fee->cfg_reg_5 >> 25) & 0x1UL;
+}
+
+
+/**
+ * @brief set DG en
+ *
+ * @param mode set 0 to operate DG as per mode
+ */
+
+void smile_fee_set_dg_en(uint32_t mode)
+{
+	if (mode)
+		mode = 1;
+
+
+	smile_fee->cfg_reg_5 &= ~(0x1UL << 25);
+	smile_fee->cfg_reg_5 |=  (mode  << 25);
+}
+
+
 /**
  * @brief get vod_config
  *
@@ -851,12 +879,18 @@ void smile_fee_set_h_start(uint16_t row)
  *
  * @note as per register map document, the following return values
  *	 are currently valid:
- *	 0x0	on mode
- *	 0x1	full frame pattern mode
- *	 0x4	stand-by mode
- *	 0xd	immediate on mode (this is a command, not a mode)
- *	 0xf	frame transfer mode
- *	 0xe	full frame mode
+ *
+ *	 0x0 (On-Mode)
+ *	 0x1 (Frame Transfer (FT) Mode Pattern Mode)
+ *	 0x2 (Stand-By-Mode)
+ *	 0x3 (Frame Transfer Mode(FT))
+ *	 0x4 (Full Frame Mode(FF))
+ *	 0x5 (Parallel trap pumping mode 1 (FF))
+ *	 0x6 (Parallel trap pumping mode 2 (FF))
+ *	 0x7 (Serial trap pumping mode 1 (FF))
+ *	 0x8 (Serial trap pumping mode 2 (FF))
+ *	 0xd (Immediate On-Mode)  (this is a command and not a mode)
+ *
  */
 
 uint8_t smile_fee_get_ccd_mode_config(void)
@@ -872,12 +906,17 @@ uint8_t smile_fee_get_ccd_mode_config(void)
  *
  * @note as per register map document, the following return values
  *	 are currently valid:
- *	 0x0	on mode
- *	 0x1	full frame pattern mode
- *	 0x4	stand-by mode
- *	 0xd	immediate on mode (this is a command, not a mode)
- *	 0xf	frame transfer mode
- *	 0xe	full frame mode
+ *
+ *	 0x0 (On-Mode)
+ *	 0x1 (Frame Transfer (FT) Mode Pattern Mode)
+ *	 0x2 (Stand-By-Mode)
+ *	 0x3 (Frame Transfer Mode(FT))
+ *	 0x4 (Full Frame Mode(FF))
+ *	 0x5 (Parallel trap pumping mode 1 (FF))
+ *	 0x6 (Parallel trap pumping mode 2 (FF))
+ *	 0x7 (Serial trap pumping mode 1 (FF))
+ *	 0x8 (Serial trap pumping mode 2 (FF))
+ *	 0xd (Immediate On-Mode)  (this is a command and not a mode)
  *
  * @warn input parameter is not checked for validity
  */
@@ -990,59 +1029,163 @@ void smile_fee_set_clear_error_flag(uint32_t mode)
 
 
 /**
- * @brief get ccd1 single pixel threshold
+ * @brief get ccd2 E single pixel threshold
  *
  * @note this is the threshold above which a pixel may be considered a possible
  *	 soft X-ray event
  */
 
-uint16_t smile_fee_get_ccd1_single_pixel_treshold(void)
+uint16_t smile_fee_get_ccd2_e_pix_treshold(void)
 {
-	return (uint16_t) (smile_fee->cfg_reg_22 & 0xFFFUL);
+	return (uint16_t) (smile_fee->cfg_reg_22 & 0xFFFFUL);
 }
 
 
 /**
- * @brief set ccd1 single pixel threshold
+ * @brief set ccd2 E single pixel threshold
  *
  * @param threshold the threshold above which a pixel may be considered
  *		    a possible soft X-ray event
  */
 
-void smile_fee_set_ccd1_single_pixel_treshold(uint16_t threshold)
+void smile_fee_set_ccd2_e_pix_treshold(uint16_t threshold)
 {
-	smile_fee->cfg_reg_22 &= ~0xFFFUL;
-	smile_fee->cfg_reg_22 |=  0xFFFUL & ((uint32_t) threshold);
+	smile_fee->cfg_reg_22 &= ~0xFFFFUL;
+	smile_fee->cfg_reg_22 |=  0xFFFFUL & ((uint32_t) threshold);
 }
 
 
 /**
- * @brief get ccd2 single pixel threshold
+ * @brief get ccd2 F single pixel threshold
  *
  * @note this is the threshold above which a pixel may be considered a possible
  *	 soft X-ray event
  */
 
-uint16_t smile_fee_get_ccd2_single_pixel_treshold(void)
+uint16_t smile_fee_get_ccd2_f_pix_treshold(void)
 {
 	return (uint16_t) ((smile_fee->cfg_reg_22 >> 16) & 0xFFFFUL);
 }
 
 
 /**
- * @brief set ccd2 single pixel threshold
+ * @brief set ccd2 F single pixel threshold
  *
  * @param threshold the threshold above which a pixel may be considered
  *		    a possible soft X-ray event
  */
 
-void smile_fee_set_ccd2_single_pixel_treshold(uint16_t threshold)
+void smile_fee_set_ccd2_f_pix_treshold(uint16_t threshold)
 {
 	smile_fee->cfg_reg_22 &= ~(0xFFFFUL << 16);
 	smile_fee->cfg_reg_22 |=  (0xFFFFUL & ((uint32_t) threshold)) << 16;
 }
 
 
+/**
+ * @brief get ccd4 E single pixel threshold
+ *
+ * @note this is the threshold above which a pixel may be considered a possible
+ *	 soft X-ray event
+ */
+
+uint16_t smile_fee_get_ccd4_e_pix_treshold(void)
+{
+	return (uint16_t) (smile_fee->cfg_reg_23 & 0xFFFFUL);
+}
+
+
+/**
+ * @brief set ccd4 E single pixel threshold
+ *
+ * @param threshold the threshold above which a pixel may be considered
+ *		    a possible soft X-ray event
+ */
+
+void smile_fee_set_ccd4_e_pix_treshold(uint16_t threshold)
+{
+	smile_fee->cfg_reg_23 &= ~0xFFFFUL;
+	smile_fee->cfg_reg_23 |=  0xFFFFUL & ((uint32_t) threshold);
+}
+
+
+/**
+ * @brief get ccd4 F single pixel threshold
+ *
+ * @note this is the threshold above which a pixel may be considered a possible
+ *	 soft X-ray event
+ */
+
+uint16_t smile_fee_get_ccd4_f_pix_treshold(void)
+{
+	return (uint16_t) ((smile_fee->cfg_reg_23 >> 16) & 0xFFFFUL);
+}
+
+
+/**
+ * @brief set ccd4 F single pixel threshold
+ *
+ * @param threshold the threshold above which a pixel may be considered
+ *		    a possible soft X-ray event
+ */
+
+void smile_fee_set_ccd4_f_pix_treshold(uint16_t threshold)
+{
+	smile_fee->cfg_reg_23 &= ~(0xFFFFUL << 16);
+	smile_fee->cfg_reg_23 |=  (0xFFFFUL & ((uint32_t) threshold)) << 16;
+}
+
+
+/**
+ * @brief get pixel offset value
+ *
+ * @note his offset value is added to the average incoming pixel value
+ */
+
+uint8_t smile_fee_get_pix_offset(void)
+{
+	return (uint8_t) (smile_fee->cfg_reg_24 & 0xFFUL);
+}
+
+
+/**
+ * @brief set pixel offset value
+ *
+ * @offset  the offset value to be added to the average incoming pixel value
+ */
+
+void smile_fee_set_pix_offset(uint8_t offset)
+{
+	smile_fee->cfg_reg_24 &= ~0xFFUL;
+	smile_fee->cfg_reg_24 |=  0xFFUL & ((uint32_t) offset);
+}
+
+
+/**
+ * @brief get event packet limit
+ *
+ * @note this is the total number of even packet per CCD that will be transmitted
+ */
+
+uint32_t smile_fee_get_event_pkt_limit(void)
+{
+	return (uint32_t) ((smile_fee->cfg_reg_24 >> 8) & 0xFFFFFUL);
+}
+
+
+/**
+ * @brief set event packet limit
+ *
+ * @param pkt_limit the total number of even packet per CCD that will be transmitted
+ */
+
+void smile_fee_set_event_pkt_limit(uint32_t pkt_limit)
+{
+	smile_fee->cfg_reg_24 &= ~(0xFFFFFFUL << 8);
+	smile_fee->cfg_reg_23 |=  (0xFFFFFFUL & ((uint32_t) pkt_limit)) << 8;
+}
+
+
 /**
  * @brief get execute op flag
  *
@@ -1056,7 +1199,7 @@ void smile_fee_set_ccd2_single_pixel_treshold(uint16_t threshold)
 
 uint32_t smile_fee_get_execute_op(void)
 {
-	return smile_fee->cfg_reg_24 & 0x1UL;
+	return smile_fee->cfg_reg_25 & 0x1UL;
 }
 
 
@@ -1079,8 +1222,8 @@ void smile_fee_set_execute_op(uint32_t mode)
 		mode = 1;
 
 
-	smile_fee->cfg_reg_24 &= ~0x1UL;
-	smile_fee->cfg_reg_24 |= mode;
+	smile_fee->cfg_reg_25 &= ~0x1UL;
+	smile_fee->cfg_reg_25 |= mode;
 }
 
 
@@ -2600,6 +2743,90 @@ void smile_fee_set_hk_error_flag_spw_link_parity_error(uint32_t error_flag_spw_l
 #endif /* FEE_SIM */
 
 
+/**
+ * @brief get FPGA minor version HK value
+ *
+ * @returns the FPGA minor version
+ */
+
+uint8_t smile_fee_get_hk_fpga_minor_version(void)
+{
+	return (uint8_t) (smile_fee->hk_reg_35 & 0xFFUL);
+}
+
+
+#ifdef FEE_SIM
+
+/**
+ * @brief set FPGA minor version HK value
+ *
+ * @param minor the FPGA minor version
+ */
+
+void smile_fee_set_hk_fpga_minor_version(uint8_t minor)
+{
+	smile_fee->hk_reg_35 &= ~0xFFUL;
+	smile_fee->hk_reg_35 |=  0xFFUL & ((uint32_t) minor);
+}
+#endif /* FEE_SIM */
+
+
+/**
+ * @brief get FPGA major version HK value
+ *
+ * @returns the FPGA major version
+ */
+
+uint8_t smile_fee_get_hk_fpga_major_version(void)
+{
+	return (uint8_t) ((smile_fee->hk_reg_35 >> 8) & 0xFUL);
+}
+
+
+#ifdef FEE_SIM
+
+/**
+ * @brief set FPGA major version HK value
+ *
+ * @param minor the FPGA minor version
+ */
+
+void smile_fee_set_hk_fpga_major_version(uint8_t major)
+{
+	smile_fee->hk_reg_35 &= ~(0xFUL << 8);
+	smile_fee->hk_reg_35 |=  (0xFUL & ((uint32_t) major)) << 8;
+}
+#endif /* FEE_SIM */
+
+
+/**
+ * @brief get the board id the FPGA is housed on
+ *
+ * @returns the FPGA board id
+ */
+
+uint16_t smile_fee_get_hk_board_id(void)
+{
+	return (uint16_t) ((smile_fee->hk_reg_35 >> 20) & 0xFUL);
+}
+
+
+#ifdef FEE_SIM
+
+/**
+ * @brief set the board id the FPGA is housed on
+ *
+ * @param id the FPGA board id
+ */
+
+void smile_fee_set_hk_board_id(uint16_t id)
+{
+	smile_fee->hk_reg_35 &= ~(0x1FFUL << 20);
+	smile_fee->hk_reg_35 |=  (0x1FFUL & ((uint32_t) id)) << 20;
+}
+#endif /* FEE_SIM */
+
+
 /**
  * @brief sync configuration register 0
  *
@@ -2831,6 +3058,27 @@ int smile_fee_sync_cfg_reg_22(enum sync_direction dir)
 }
 
 
+/**
+ * @brief sync configuration register 23
+ *
+ * @param dir the syncronisation direction
+ *
+ * @returns 0 on success, otherwise error
+ */
+int smile_fee_sync_cfg_reg_23(enum sync_direction dir)
+{
+	if (dir == FEE2DPU)
+		return smile_fee_sync(fee_read_cmd_cfg_reg_23,
+				      &smile_fee->cfg_reg_23, 0);
+
+	if (dir == DPU2FEE)
+		return smile_fee_sync(fee_write_cmd_cfg_reg_23,
+				      &smile_fee->cfg_reg_23, 4);
+
+	return -1;
+}
+
+
 /**
  * @brief sync configuration register 24
  *
@@ -2852,6 +3100,27 @@ int smile_fee_sync_cfg_reg_24(enum sync_direction dir)
 }
 
 
+/**
+ * @brief sync configuration register 25
+ *
+ * @param dir the syncronisation direction
+ *
+ * @returns 0 on success, otherwise error
+ */
+int smile_fee_sync_cfg_reg_25(enum sync_direction dir)
+{
+	if (dir == FEE2DPU)
+		return smile_fee_sync(fee_read_cmd_cfg_reg_25,
+				      &smile_fee->cfg_reg_25, 0);
+
+	if (dir == DPU2FEE)
+		return smile_fee_sync(fee_write_cmd_cfg_reg_25,
+				      &smile_fee->cfg_reg_25, 4);
+
+	return -1;
+}
+
+
 /**
  * @brief sync register containing vstart
  *
@@ -3115,6 +3384,21 @@ int smile_fee_sync_correction_bypass(enum sync_direction dir)
 }
 
 
+/**
+ * @brief sync dg enable
+ *
+ * @param dir the syncronisation direction
+ *
+ * @returns 0 on success, otherwise error
+ */
+
+int smile_fee_sync_dg_en(enum sync_direction dir)
+{
+	return smile_fee_sync_cfg_reg_5(dir);
+}
+
+
+
 /**
  * @brief sync vod_config
  * @note no description available in register map document
@@ -3333,33 +3617,89 @@ int smile_fee_sync_clear_error_flag(enum sync_direction dir)
 
 
 /**
- * @brief sync ccd1 single pixel threshold
+ * @brief sync ccd2 E single pixel threshold
  *
  * @param dir the syncronisation direction
  *
  * @returns 0 on success, otherwise error
  */
 
-int smile_fee_sync_ccd1_single_pixel_treshold(enum sync_direction dir)
+int smile_fee_sync_ccd2_e_pix_treshold(enum sync_direction dir)
 {
 	return smile_fee_sync_cfg_reg_22(dir);
 }
 
 
 /**
- * @brief sync ccd2 single pixel threshold
+ * @brief sync ccd2 F single pixel threshold
  *
  * @param dir the syncronisation direction
  *
  * @returns 0 on success, otherwise error
  */
 
-int smile_fee_sync_ccd2_single_pixel_treshold(enum sync_direction dir)
+int smile_fee_sync_ccd2_f_pix_treshold(enum sync_direction dir)
 {
 	return smile_fee_sync_cfg_reg_22(dir);
 }
 
 
+/**
+ * @brief sync ccd4 E single pixel threshold
+ *
+ * @param dir the syncronisation direction
+ *
+ * @returns 0 on success, otherwise error
+ */
+
+int smile_fee_sync_ccd4_e_pix_treshold(enum sync_direction dir)
+{
+	return smile_fee_sync_cfg_reg_23(dir);
+}
+
+
+/**
+ * @brief sync ccd4 F single pixel threshold
+ *
+ * @param dir the syncronisation direction
+ *
+ * @returns 0 on success, otherwise error
+ */
+
+int smile_fee_sync_ccd4_f_pix_treshold(enum sync_direction dir)
+{
+	return smile_fee_sync_cfg_reg_23(dir);
+}
+
+
+/**
+ * @brief sync pix offset
+ *
+ * @param dir the syncronisation direction
+ *
+ * @returns 0 on success, otherwise error
+ */
+
+int smile_fee_sync_pix_offset(enum sync_direction dir)
+{
+	return smile_fee_sync_cfg_reg_24(dir);
+}
+
+
+/**
+ * @brief sync event pkt limit
+ *
+ * @param dir the syncronisation direction
+ *
+ * @returns 0 on success, otherwise error
+ */
+
+int smile_fee_sync_event_pkt_limit(enum sync_direction dir)
+{
+	return smile_fee_sync_cfg_reg_24(dir);
+}
+
+
 /**
  * @brief sync execute op flag
  *
@@ -3370,7 +3710,7 @@ int smile_fee_sync_ccd2_single_pixel_treshold(enum sync_direction dir)
 
 int smile_fee_sync_execute_op(enum sync_direction dir)
 {
-	return smile_fee_sync_cfg_reg_24(dir);
+	return smile_fee_sync_cfg_reg_25(dir);
 }
 
 
diff --git a/FEE/smile_fee_ctrl.h b/FEE/smile_fee_ctrl.h
index 30753617d9e197f8676b83c6bf3991bdf8d78a2b..b1abf03a924ced791a85d8f7d87a7d07c4ee9664 100644
--- a/FEE/smile_fee_ctrl.h
+++ b/FEE/smile_fee_ctrl.h
@@ -23,7 +23,7 @@
 __extension__
 struct smile_fee_mirror {
 
-	/* FEE RW registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */
+	/* FEE RW registers (SMILE-MSSL-PL-Register_map_v0.14_Draft) */
 	/* (includes unused) */
 	uint32_t cfg_reg_0;
 	uint32_t cfg_reg_1;
@@ -48,10 +48,11 @@ struct smile_fee_mirror {
 	uint32_t cfg_reg_20;
 	uint32_t cfg_reg_21;
 	uint32_t cfg_reg_22;
-	uint32_t cfg_reg_23;	/* reserved */
+	uint32_t cfg_reg_23;
 	uint32_t cfg_reg_24;
+	uint32_t cfg_reg_25;
 
-	/* FEE  RO registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */
+	/* FEE  RO registers (SMILE-MSSL-PL-Register_map_v0.14_Draft) */
 
 	uint32_t unused[423];
 
@@ -116,7 +117,9 @@ int smile_fee_sync_cfg_reg_19(enum sync_direction dir);
 int smile_fee_sync_cfg_reg_20(enum sync_direction dir);
 int smile_fee_sync_cfg_reg_21(enum sync_direction dir);
 int smile_fee_sync_cfg_reg_22(enum sync_direction dir);
+int smile_fee_sync_cfg_reg_23(enum sync_direction dir);
 int smile_fee_sync_cfg_reg_24(enum sync_direction dir);
+int smile_fee_sync_cfg_reg_25(enum sync_direction dir);
 
 int smile_fee_sync_hk_regs(void);
 
@@ -141,6 +144,7 @@ int smile_fee_sync_sync_sel(enum sync_direction dir);
 int smile_fee_sync_readout_nodes(enum sync_direction dir);
 int smile_fee_sync_digitise(enum sync_direction dir);
 int smile_fee_sync_correction_bypass(enum sync_direction dir);
+int smile_fee_sync_dg_en(enum sync_direction dir);
 int smile_fee_sync_vod_config(enum sync_direction dir);
 int smile_fee_sync_ccd1_vrd_config(enum sync_direction dir);
 int smile_fee_sync_ccd2_vrd_config(enum sync_direction dir);
@@ -155,8 +159,12 @@ int smile_fee_sync_ccd_mode_config(enum sync_direction dir);
 int smile_fee_sync_ccd_mode2_config(enum sync_direction dir);
 int smile_fee_sync_event_detection(enum sync_direction dir);
 int smile_fee_sync_clear_error_flag(enum sync_direction dir);
-int smile_fee_sync_ccd1_single_pixel_treshold(enum sync_direction dir);
-int smile_fee_sync_ccd2_single_pixel_treshold(enum sync_direction dir);
+int smile_fee_sync_ccd2_e_pix_treshold(enum sync_direction dir);
+int smile_fee_sync_ccd2_f_pix_treshold(enum sync_direction dir);
+int smile_fee_sync_ccd4_e_pix_treshold(enum sync_direction dir);
+int smile_fee_sync_ccd4_f_pix_treshold(enum sync_direction dir);
+int smile_fee_sync_pix_offset(enum sync_direction dir);
+int smile_fee_sync_event_pkt_limit(enum sync_direction dir);
 int smile_fee_sync_execute_op(enum sync_direction dir);
 
 
@@ -181,6 +189,7 @@ uint32_t smile_fee_get_sync_sel(void);
 uint16_t smile_fee_get_readout_nodes(void);
 uint32_t smile_fee_get_digitise(void);
 uint32_t smile_fee_get_correction_bypass(void);
+uint32_t smile_fee_get_dg_en(void);
 uint16_t smile_fee_get_vod_config(void);
 uint16_t smile_fee_get_ccd1_vrd_config(void);
 uint16_t smile_fee_get_ccd2_vrd_config(void);
@@ -195,8 +204,12 @@ uint8_t smile_fee_get_ccd_mode_config(void);
 uint8_t smile_fee_get_ccd_mode2_config(void);
 uint32_t smile_fee_get_event_detection(void);
 uint32_t smile_fee_get_clear_error_flag(void);
-uint16_t smile_fee_get_ccd1_single_pixel_treshold(void);
-uint16_t smile_fee_get_ccd2_single_pixel_treshold(void);
+uint16_t smile_fee_get_ccd2_e_pix_treshold(void);
+uint16_t smile_fee_get_ccd2_f_pix_treshold(void);
+uint16_t smile_fee_get_ccd4_e_pix_treshold(void);
+uint16_t smile_fee_get_ccd4_f_pix_treshold(void);
+uint8_t smile_fee_get_pix_offset(void);
+uint32_t smile_fee_get_event_pkt_limit(void);
 uint32_t smile_fee_get_execute_op(void);
 
 
@@ -221,6 +234,7 @@ uint16_t smile_fee_get_int_period(void);
 void smile_fee_set_readout_nodes(uint32_t nodes);
 void smile_fee_set_digitise(uint32_t mode);
 void smile_fee_set_correction_bypass(uint32_t mode);
+void smile_fee_set_dg_en(uint32_t mode);
 void smile_fee_set_vod_config(uint16_t vod);
 void smile_fee_set_ccd1_vrd_config(uint16_t vrd);
 void smile_fee_set_ccd2_vrd_config(uint16_t vrd);
@@ -235,8 +249,12 @@ void smile_fee_set_ccd_mode_config(uint8_t mode);
 void smile_fee_set_ccd_mode2_config(uint8_t mode);
 void smile_fee_set_event_detection(uint32_t mode);
 void smile_fee_set_clear_error_flag(uint32_t mode);
-void smile_fee_set_ccd1_single_pixel_treshold(uint16_t threshold);
-void smile_fee_set_ccd2_single_pixel_treshold(uint16_t threshold);
+void smile_fee_set_ccd2_e_pix_treshold(uint16_t threshold);
+void smile_fee_set_ccd2_f_pix_treshold(uint16_t threshold);
+void smile_fee_set_ccd4_e_pix_treshold(uint16_t threshold);
+void smile_fee_set_ccd4_f_pix_treshold(uint16_t threshold);
+void smile_fee_set_pix_offset(uint8_t offset);
+void smile_fee_set_event_pkt_limit(uint32_t pkt_limit);
 void smile_fee_set_execute_op(uint32_t mode);
 
 
@@ -300,6 +318,9 @@ uint8_t smile_fee_get_hk_fpga_op_mode(void);
 uint32_t smile_fee_get_hk_error_flag_spw_link_escape_error(void);
 uint32_t smile_fee_get_hk_error_flag_spw_link_credit_error(void);
 uint32_t smile_fee_get_hk_error_flag_spw_link_parity_error(void);
+uint8_t smile_fee_get_hk_fpga_minor_version(void);
+uint8_t smile_fee_get_hk_fpga_major_version(void);//	>> 8 0xf
+uint16_t smile_fee_get_hk_board_id(void);//	>> 12 1ff
 
 
 
@@ -363,6 +384,9 @@ void smile_fee_set_hk_fpga_op_mode(uint8_t fpga_op_mode);
 void smile_fee_set_hk_error_flag_spw_link_escape_error(uint32_t error_flag_spw_link_escape_error);
 void smile_fee_set_hk_error_flag_spw_link_credit_error(uint32_t error_flag_spw_link_credit_error);
 void smile_fee_set_hk_error_flag_spw_link_parity_error(uint32_t error_flag_spw_link_parity_error);
+void smile_fee_set_hk_fpga_minor_version(uint8_t minor);
+void smile_fee_set_hk_fpga_major_version(uint8_t major);
+void smile_fee_set_hk_board_id(uint16_t id);
 
 #endif /* FEE_SIM */