sdhci_set_transfer_irqs(host);
 
        /* Set the DMA boundary value and block size */
-       sdhci_writew(host, SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG,
-               data->blksz), SDHCI_BLOCK_SIZE);
+       sdhci_writew(host, SDHCI_MAKE_BLKSZ(host->sdma_boundary, data->blksz),
+                    SDHCI_BLOCK_SIZE);
        sdhci_writew(host, data->blocks, SDHCI_BLOCK_COUNT);
 }
 
        struct mmc_command cmd = {};
        struct mmc_request mrq = {};
        unsigned long flags;
+       u32 b = host->sdma_boundary;
 
        spin_lock_irqsave(&host->lock, flags);
 
         */
        if (cmd.opcode == MMC_SEND_TUNING_BLOCK_HS200 &&
            mmc->ios.bus_width == MMC_BUS_WIDTH_8)
-               sdhci_writew(host, SDHCI_MAKE_BLKSZ(7, 128), SDHCI_BLOCK_SIZE);
+               sdhci_writew(host, SDHCI_MAKE_BLKSZ(b, 128), SDHCI_BLOCK_SIZE);
        else
-               sdhci_writew(host, SDHCI_MAKE_BLKSZ(7, 64), SDHCI_BLOCK_SIZE);
+               sdhci_writew(host, SDHCI_MAKE_BLKSZ(b, 64), SDHCI_BLOCK_SIZE);
 
        /*
         * The tuning block is sent by the card to the host controller.
                ctrl |= SDHCI_CTRL_ADMA32;
        sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
 
-       sdhci_writew(host, SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, 512),
+       sdhci_writew(host, SDHCI_MAKE_BLKSZ(host->sdma_boundary, 512),
                     SDHCI_BLOCK_SIZE);
 
        /* Set maximum timeout */
 
        host->tuning_delay = -1;
 
+       host->sdma_boundary = SDHCI_DEFAULT_BOUNDARY_ARG;
+
        return host;
 }