|
@@ -897,8 +897,8 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd)
|
|
|
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);
|
|
|
}
|
|
|
|
|
@@ -2037,6 +2037,7 @@ static void sdhci_send_tuning(struct sdhci_host *host, u32 opcode)
|
|
|
struct mmc_command cmd = {};
|
|
|
struct mmc_request mrq = {};
|
|
|
unsigned long flags;
|
|
|
+ u32 b = host->sdma_boundary;
|
|
|
|
|
|
spin_lock_irqsave(&host->lock, flags);
|
|
|
|
|
@@ -2052,9 +2053,9 @@ static void sdhci_send_tuning(struct sdhci_host *host, u32 opcode)
|
|
|
*/
|
|
|
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.
|
|
@@ -2995,7 +2996,7 @@ void sdhci_cqe_enable(struct mmc_host *mmc)
|
|
|
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 */
|
|
@@ -3116,6 +3117,8 @@ struct sdhci_host *sdhci_alloc_host(struct device *dev,
|
|
|
|
|
|
host->tuning_delay = -1;
|
|
|
|
|
|
+ host->sdma_boundary = SDHCI_DEFAULT_BOUNDARY_ARG;
|
|
|
+
|
|
|
return host;
|
|
|
}
|
|
|
|