REG_WR16
REG_WR16(qlt, reg, data);
REG_WR16(qlt, REG_MBOX0, MBC_STOP_FIRMWARE);
REG_WR16(qlt, REG_MBOX(1), 0);
REG_WR16(qlt, REG_MBOX(2), 0);
REG_WR16(qlt, REG_MBOX(3), 0);
REG_WR16(qlt, REG_MBOX(4), 0);
REG_WR16(qlt, REG_MBOX(5), 0);
REG_WR16(qlt, REG_MBOX(6), 0);
REG_WR16(qlt, REG_MBOX(7), 0);
REG_WR16(qlt, REG_MBOX(8), 0);
REG_WR16(qlt, REG_MBOX(0), MBC_GET_RESOURCE_COUNTS);
REG_WR16(qlt, REG_MBOX(0), MBC_SET_ADDITIONAL_FIRMWARE_OPT);
REG_WR16(qlt, REG_MBOX(1), OPT_PUREX_ENABLE);
REG_WR16(qlt, REG_MBOX(2), 0x0);
REG_WR16(qlt, REG_MBOX(3), 0x0);
REG_WR16(qlt, REG_MBOX(0), MBC_SET_PARAMETERS);
REG_WR16(qlt, REG_MBOX(1), PARAM_TYPE(PUREX_ELS_CMDS));
REG_WR16(qlt, REG_MBOX(3), LSW(LSD(da)));
REG_WR16(qlt, REG_MBOX(2), MSW(LSD(da)));
REG_WR16(qlt, REG_MBOX(7), LSW(MSD(da)));
REG_WR16(qlt, REG_MBOX(6), MSW(MSD(da)));
REG_WR16(qlt, REG_MBOX(0), MBC_VERIFY_CHECKSUM);
REG_WR16(qlt, REG_MBOX(1), MSW(start_addr));
REG_WR16(qlt, REG_MBOX(2), LSW(start_addr));
REG_WR16(qlt, REG_MBOX(0), MBC_EXECUTE_FIRMWARE);
REG_WR16(qlt, REG_MBOX(1), MSW(start_addr));
REG_WR16(qlt, REG_MBOX(2), LSW(start_addr));
REG_WR16(qlt, REG_MBOX(3), 0);
REG_WR16(qlt, REG_MBOX(4), 1);
REG_WR16(qlt, REG_MBOX(4), 0);
REG_WR16(qlt, REG_MBOX(4), 0);
REG_WR16(qlt, REG_MBOX(0), MBC_ABOUT_FIRMWARE);
REG_WR16(qlt, REG_MBOX(0), MBC_LOAD_RAM_EXTENDED);
REG_WR16(qlt, REG_MBOX(1), LSW(risc_addr));
REG_WR16(qlt, REG_MBOX(8), MSW(cur_risc_addr));
REG_WR16(qlt, REG_MBOX(3), LSW(LSD(da)));
REG_WR16(qlt, REG_MBOX(2), MSW(LSD(da)));
REG_WR16(qlt, REG_MBOX(7), LSW(MSD(da)));
REG_WR16(qlt, REG_MBOX(6), MSW(MSD(da)));
REG_WR16(qlt, REG_MBOX(5), LSW(words_being_sent));
REG_WR16(qlt, REG_MBOX(4), MSW(words_being_sent));
REG_WR16(qlt, REG_MBOX(i), mcp->to_fw[i]);
REG_WR16(qlt, REG_MBOX(0), MBC_DUMP_RAM_EXTENDED);
REG_WR16(qlt, REG_MBOX(3), LSW(LSD(da)));
REG_WR16(qlt, REG_MBOX(2), MSW(LSD(da)));
REG_WR16(qlt, REG_MBOX(7), LSW(MSD(da)));
REG_WR16(qlt, REG_MBOX(6), MSW(MSD(da)));
REG_WR16(qlt, REG_MBOX(5), LSW(words));
REG_WR16(qlt, REG_MBOX(4), MSW(words));
REG_WR16(qlt, REG_MBOX(1), LSW(addr));
REG_WR16(qlt, REG_MBOX(8), MSW(addr));
REG_WR16(qlt, REG_MBOX(0), MBC_MPI_RAM);
REG_WR16(qlt, REG_MBOX(3), LSW(LSD(da)));
REG_WR16(qlt, REG_MBOX(2), MSW(LSD(da)));
REG_WR16(qlt, REG_MBOX(7), LSW(MSD(da)));
REG_WR16(qlt, REG_MBOX(6), MSW(MSD(da)));
REG_WR16(qlt, REG_MBOX(5), LSW(words));
REG_WR16(qlt, REG_MBOX(4), MSW(words));
REG_WR16(qlt, REG_MBOX(1), LSW(addr));
REG_WR16(qlt, REG_MBOX(8), MSW(addr));
REG_WR16(qlt, REG_MBOX(9), direction);
REG_WR16(qlt, REG_MBOX(0), MBC_WRITE_RAM_EXTENDED);
REG_WR16(qlt, REG_MBOX(1), LSW(risc_address));
REG_WR16(qlt, REG_MBOX(2), LSW(data));
REG_WR16(qlt, REG_MBOX(3), MSW(data));
REG_WR16(qlt, REG_MBOX(8), MSW(risc_address));
REG_WR16(qlt, REG_MBOX(0), MBC_READ_RAM_EXTENDED);
REG_WR16(qlt, REG_MBOX(1), LSW(risc_address));
REG_WR16(qlt, REG_MBOX(2), MSW(risc_address));
REG_WR16(p_hwfn, addr, prod);