uint32_t dwords)
 {
        int ret;
-       uint32_t liter, miter;
+       uint32_t liter;
        uint32_t sec_mask, rest_addr;
        uint32_t fdata;
        dma_addr_t optrom_dma;
        void *optrom = NULL;
-       uint32_t *s, *d;
        struct qla_hw_data *ha = vha->hw;
 
        ret = QLA_SUCCESS;
                /* Go with burst-write. */
                if (optrom && (liter + OPTROM_BURST_DWORDS) <= dwords) {
                        /* Copy data to DMA'ble buffer. */
-                       for (miter = 0, s = optrom, d = dwptr;
-                           miter < OPTROM_BURST_DWORDS; miter++, s++, d++)
-                               *s = cpu_to_le32(*d);
+                       memcpy(optrom, dwptr, OPTROM_BURST_SIZE);
 
                        ret = qla2x00_load_ram(vha, optrom_dma,
                            flash_data_addr(ha, faddr),