diff --git a/src/drivers/bmm150/bmm150.cpp b/src/drivers/bmm150/bmm150.cpp
index 12cedc97183b2686231029985dd1fe1d8d520d56..bbf697f574aeda93194ef56759d50dbc3492c973 100644
--- a/src/drivers/bmm150/bmm150.cpp
+++ b/src/drivers/bmm150/bmm150.cpp
@@ -247,7 +247,6 @@ usage()
 
 BMM150 :: BMM150(int bus, const char *path, bool external, enum Rotation rotation) :
 	I2C("BMM150", path, bus, BMM150_SLAVE_ADDRESS, BMM150_BUS_SPEED),
-	_work{},
 	_external(false),
 	_running(false),
 	_call_interval(0),
@@ -279,8 +278,7 @@ BMM150 :: BMM150(int bus, const char *path, bool external, enum Rotation rotatio
 	_comms_errors(perf_alloc(PC_COUNT, "bmp280_comms_errors")),
 	_duplicates(perf_alloc(PC_COUNT, "bmm150_duplicates")),
 	_rotation(rotation),
-	_got_duplicate(false),
-	_last_report{0}
+	_got_duplicate(false)
 {
 	_device_id.devid_s.devtype = DRV_MAG_DEVTYPE_BMM150;
 
diff --git a/src/drivers/bmm150/bmm150.hpp b/src/drivers/bmm150/bmm150.hpp
index 8598b9ad4dc13ce8b635c2be6bd548142f1a4b24..0ab1295f1a4ba27a5c8fb1a38165d568b9ae9f0c 100644
--- a/src/drivers/bmm150/bmm150.hpp
+++ b/src/drivers/bmm150/bmm150.hpp
@@ -219,7 +219,7 @@ protected:
 	virtual int       probe();
 
 private:
-	work_s            _work;
+	work_s            _work{};
 	bool _external;
 
 	bool _running;
@@ -228,6 +228,7 @@ private:
 	unsigned        _call_interval;
 
 
+	mag_report _report {};
 	ringbuffer::RingBuffer  *_reports;
 
 	bool            _collect_phase;
@@ -268,7 +269,7 @@ private:
 	enum Rotation       _rotation;
 	bool            _got_duplicate;
 
-	struct mag_report   _last_report;           /**< used for info() */
+	mag_report   _last_report {};          /**< used for info() */
 
 	int             init_trim_registers(void);
 
diff --git a/src/drivers/device/cdev.cpp b/src/drivers/device/cdev.cpp
index ea989bad5a52779e675e4fcf68eb5ffcd51f7010..3eaf278f321842d7236257eae9e54f66b0bc6fd1 100644
--- a/src/drivers/device/cdev.cpp
+++ b/src/drivers/device/cdev.cpp
@@ -85,7 +85,7 @@ read	: cdev_read,
 write	: cdev_write,
 seek	: cdev_seek,
 ioctl	: cdev_ioctl,
-poll	: cdev_poll,
+poll	: cdev_poll
 };
 
 CDev::CDev(const char *name,
diff --git a/src/drivers/hmc5883/hmc5883.cpp b/src/drivers/hmc5883/hmc5883.cpp
index 153a9bcc5f0f9bbd92adae0324c6b58c4c039e33..0190bd1308c9498bd6b29486a9d02d2820423983 100644
--- a/src/drivers/hmc5883/hmc5883.cpp
+++ b/src/drivers/hmc5883/hmc5883.cpp
@@ -153,7 +153,7 @@ protected:
 	Device			*_interface;
 
 private:
-	work_s			_work;
+	work_s			_work{};
 	unsigned		_measure_ticks;
 
 	ringbuffer::RingBuffer	*_reports;
@@ -177,7 +177,7 @@ private:
 
 	enum Rotation		_rotation;
 
-	struct mag_report	_last_report;           /**< used for info() */
+	struct mag_report	_last_report {};         /**< used for info() */
 
 	uint8_t			_range_bits;
 	uint8_t			_conf_reg;
@@ -345,7 +345,6 @@ extern "C" __EXPORT int hmc5883_main(int argc, char *argv[]);
 HMC5883::HMC5883(device::Device *interface, const char *path, enum Rotation rotation) :
 	CDev("HMC5883", path),
 	_interface(interface),
-	_work{},
 	_measure_ticks(0),
 	_reports(nullptr),
 	_scale{},
@@ -362,7 +361,6 @@ HMC5883::HMC5883(device::Device *interface, const char *path, enum Rotation rota
 	_sensor_ok(false),
 	_calibrated(false),
 	_rotation(rotation),
-	_last_report{0},
 	_range_bits(0),
 	_conf_reg(0),
 	_temperature_counter(0),
diff --git a/src/drivers/lis3mdl/lis3mdl.cpp b/src/drivers/lis3mdl/lis3mdl.cpp
index b5735da35e2512477104b7c5bcab38a12317709a..692e5a516cb743ae70a444a2e7a0dba43639ef05 100644
--- a/src/drivers/lis3mdl/lis3mdl.cpp
+++ b/src/drivers/lis3mdl/lis3mdl.cpp
@@ -166,7 +166,7 @@ private:
 
 	enum Rotation		_rotation;
 
-	struct mag_report	_last_report;           /**< used for info() */
+	struct mag_report	_last_report {};          /**< used for info() */
 
 	uint8_t			_range_bits;
 	uint8_t			_cntl_reg1;
@@ -341,7 +341,6 @@ LIS3MDL::LIS3MDL(device::Device *interface, const char *path, enum Rotation rota
 	_sensor_ok(false),
 	_calibrated(false),
 	_rotation(rotation),
-	_last_report{0},
 	_range_bits(0),
 	_cntl_reg1(0),
 	_cntl_reg4(0),
diff --git a/src/drivers/stm32/tone_alarm/tone_alarm.cpp b/src/drivers/stm32/tone_alarm/tone_alarm.cpp
index a5f88e67791ca0df4f0f41f3fda38a7bff89c735..c22aefb3ee8850aec2f4690c1cb0b9707a2f1c24 100644
--- a/src/drivers/stm32/tone_alarm/tone_alarm.cpp
+++ b/src/drivers/stm32/tone_alarm/tone_alarm.cpp
@@ -895,14 +895,14 @@ ToneAlarm::ioctl(file *filp, int cmd, unsigned long arg)
 {
 	int result = OK;
 
-	DEVICE_DEBUG("ioctl %i %u", cmd, arg);
+	DEVICE_DEBUG("ioctl %i %lu", cmd, arg);
 
 //	irqstate_t flags = px4_enter_critical_section();
 
 	/* decide whether to increase the alarm level to cmd or leave it alone */
 	switch (cmd) {
 	case TONE_SET_ALARM:
-		DEVICE_DEBUG("TONE_SET_ALARM %u", arg);
+		DEVICE_DEBUG("TONE_SET_ALARM %lu", arg);
 
 		if (arg < TONE_NUMBER_OF_TUNES) {
 			if (arg == TONE_STOP_TUNE) {
diff --git a/src/drivers/tap_esc/CMakeLists.txt b/src/drivers/tap_esc/CMakeLists.txt
index 18f61ae5f1e2460f2aad3b874f63a026a65c9a27..43c19be3e2cac03bcef4ee8a909dd139447f8253 100644
--- a/src/drivers/tap_esc/CMakeLists.txt
+++ b/src/drivers/tap_esc/CMakeLists.txt
@@ -34,6 +34,7 @@ px4_add_module(
 	MODULE drivers__tap_esc
 	MAIN tap_esc
 	COMPILE_FLAGS
+		-Wno-missing-field-initializers
 	SRCS
 		tap_esc.cpp
 		tap_esc_common.cpp