diff --git a/boot/zephyr/flash_map.c b/boot/zephyr/flash_map.c
index 502e30d..872c80d 100644
--- a/boot/zephyr/flash_map.c
+++ b/boot/zephyr/flash_map.c
@@ -104,9 +104,14 @@
 
 int flash_area_erase(const struct flash_area *area, uint32_t off, uint32_t len)
 {
+	int rc;
+
 	BOOT_LOG_DBG("%s: area=%d, off=%x, len=%x", __func__,
-		     area->fa_id, off, len);
-	return flash_erase(boot_flash_device, area->fa_off + off, len);
+			area->fa_id, off, len);
+	flash_write_protection_set(boot_flash_device, false);
+	rc = flash_erase(boot_flash_device, area->fa_off + off, len);
+	flash_write_protection_set(boot_flash_device, true);
+	return rc;
 }
 
 uint8_t flash_area_align(const struct flash_area *area)
diff --git a/boot/zephyr/hal_flash.c b/boot/zephyr/hal_flash.c
index cebf161..9a78163 100644
--- a/boot/zephyr/hal_flash.c
+++ b/boot/zephyr/hal_flash.c
@@ -23,7 +23,6 @@
 
 #include "hal/hal_flash.h"
 
-/* All of the currently supported devices allow single byte writes. */
 uint8_t hal_flash_align(uint8_t flash_id)
 {
 	return FLASH_ALIGN;
diff --git a/boot/zephyr/include/flash_map/flash_map.h b/boot/zephyr/include/flash_map/flash_map.h
index c0c9489..271c50c 100644
--- a/boot/zephyr/include/flash_map/flash_map.h
+++ b/boot/zephyr/include/flash_map/flash_map.h
@@ -51,15 +51,6 @@
     uint32_t fa_size;
 };
 
-extern const struct flash_area *flash_map;
-extern int flash_map_entries;
-
-/*
- * Initializes flash map. Memory will be referenced by flash_map code
- * from this on.
- */
-void flash_map_init(void);
-
 /*
  * Start using flash area.
  */
diff --git a/boot/zephyr/targets/96b_carbon.h b/boot/zephyr/targets/96b_carbon.h
index 6d8b248..8243f35 100644
--- a/boot/zephyr/targets/96b_carbon.h
+++ b/boot/zephyr/targets/96b_carbon.h
@@ -19,7 +19,12 @@
  * @brief Bootloader device specific configuration.
  */
 
+/* TEMP: maintain compatibility with old STM flash driver */
+#ifndef CONFIG_SOC_FLASH_STM32_DEV_NAME
 #define FLASH_DRIVER_NAME		"STM32F4_FLASH"
+#else
+#define FLASH_DRIVER_NAME		CONFIG_SOC_FLASH_STM32_DEV_NAME
+#endif
 #define FLASH_ALIGN			1
 #define FLASH_AREA_IMAGE_0_OFFSET	0x20000
 #define FLASH_AREA_IMAGE_0_SIZE		0x20000
diff --git a/boot/zephyr/targets/96b_nitrogen.h b/boot/zephyr/targets/96b_nitrogen.h
index 9a0443d..9982ec0 100644
--- a/boot/zephyr/targets/96b_nitrogen.h
+++ b/boot/zephyr/targets/96b_nitrogen.h
@@ -19,7 +19,7 @@
  * @brief Bootloader device specific configuration.
  */
 
-#define FLASH_DRIVER_NAME		"NRF5_FLASH"
+#define FLASH_DRIVER_NAME		CONFIG_SOC_FLASH_NRF5_DEV_NAME
 #define FLASH_ALIGN			4
 #define FLASH_AREA_IMAGE_0_OFFSET	0x08000
 #define FLASH_AREA_IMAGE_0_SIZE		0x3A000
diff --git a/boot/zephyr/targets/frdm_k64f.h b/boot/zephyr/targets/frdm_k64f.h
index 590b1cb..9270399 100644
--- a/boot/zephyr/targets/frdm_k64f.h
+++ b/boot/zephyr/targets/frdm_k64f.h
@@ -19,7 +19,7 @@
  * @brief Bootloader device specific configuration.
  */
 
-#define FLASH_DRIVER_NAME		"MCUX_FLASH"
+#define FLASH_DRIVER_NAME		CONFIG_SOC_FLASH_MCUX_DEV_NAME
 #define FLASH_ALIGN			8
 #define FLASH_AREA_IMAGE_0_OFFSET	0x20000
 #define FLASH_AREA_IMAGE_0_SIZE		0x20000
diff --git a/boot/zephyr/targets/nucleo_f401re.h b/boot/zephyr/targets/nucleo_f401re.h
index 6d8b248..b8328be 100644
--- a/boot/zephyr/targets/nucleo_f401re.h
+++ b/boot/zephyr/targets/nucleo_f401re.h
@@ -19,7 +19,7 @@
  * @brief Bootloader device specific configuration.
  */
 
-#define FLASH_DRIVER_NAME		"STM32F4_FLASH"
+#define FLASH_DRIVER_NAME		CONFIG_SOC_FLASH_STM32_DEV_NAME
 #define FLASH_ALIGN			1
 #define FLASH_AREA_IMAGE_0_OFFSET	0x20000
 #define FLASH_AREA_IMAGE_0_SIZE		0x20000
diff --git a/scripts/zep2newt.py b/scripts/zep2newt.py
index e9904f8..efa4b66 100755
--- a/scripts/zep2newt.py
+++ b/scripts/zep2newt.py
@@ -16,8 +16,7 @@
 DEBUG = False
 
 def get_args():
-    parser = ArgumentParser(description='Script to create images on a format \
-                            that Mynewts bootloader expects')
+    parser = ArgumentParser(description='Convert Zephyr binaries to mcuboot format')
 
     parser.add_argument('--bin', required=True, dest='binary_file', \
                         help='Name of *.bin file (input)')
@@ -33,11 +32,6 @@
                         default='SHA256', \
                         help='Type of signature <SHA256|RSA|EC>')
 
-    parser.add_argument('--off', required=False, dest='flash_offs_addr', \
-                        default='0x08020000', \
-                        help='Offset for the binary in flash (at what address \
-                        should it be flashed?)')
-
     parser.add_argument('--word-size', required=False, dest='word_size',
             default=1,
             help='Writable size of flash device (1, 2, 4, or 8)')
@@ -215,7 +209,6 @@
 
 def main(argv):
     args = get_args()
-    erase = False
 
     conv = Convert(args)
 
