drivers/interrupt_controller: Fix command write in VT-D

A surprising issue: while sys_set_bit() on VTD_GCMD_REG work on
apollo_lake, it seems to create border effect on elkhart_lake: it may
reset some previous bit to 0.

So switching to full write of the register at once, which works for
both.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
diff --git a/drivers/interrupt_controller/intc_intel_vtd.c b/drivers/interrupt_controller/intc_intel_vtd.c
index 7ba8391..77c036f 100644
--- a/drivers/interrupt_controller/intc_intel_vtd.c
+++ b/drivers/interrupt_controller/intc_intel_vtd.c
@@ -68,8 +68,12 @@
 			 uint16_t cmd_bit, uint16_t status_bit)
 {
 	uintptr_t base_address = DEVICE_MMIO_GET(dev);
+	uint32_t value;
 
-	sys_set_bit((base_address + VTD_GCMD_REG), cmd_bit);
+	value = vtd_read_reg32(dev, VTD_GSTS_REG);
+	value |= BIT(cmd_bit);
+
+	vtd_write_reg32(dev, VTD_GCMD_REG, value);
 
 	while (!sys_test_bit((base_address + VTD_GSTS_REG),
 			     status_bit)) {