Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 255d01af authored by Pierre Ossman's avatar Pierre Ossman
Browse files

mmc: remove BYTEBLOCK capability



Remove the BYTEBLOCK capability and let the broken hosts fail the
requests with -EINVAL instead.

Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
parent b146d26a
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -834,7 +834,6 @@ static int __init at91_mci_probe(struct platform_device *pdev)
	mmc->f_min = 375000;
	mmc->f_max = 25000000;
	mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
	mmc->caps = MMC_CAP_BYTEBLOCK;

	mmc->max_blk_size = 4095;
	mmc->max_blk_count = mmc->max_req_size;
+1 −1
Original line number Diff line number Diff line
@@ -963,7 +963,7 @@ static int imxmci_probe(struct platform_device *pdev)
	mmc->f_min = 150000;
	mmc->f_max = CLK_RATE/2;
	mmc->ocr_avail = MMC_VDD_32_33;
	mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_BYTEBLOCK;
	mmc->caps = MMC_CAP_4_BIT_DATA;

	/* MMC core transfer sizes tunable parameters */
	mmc->max_hw_segs = 64;
+8 −0
Original line number Diff line number Diff line
@@ -391,6 +391,14 @@ static void mmci_request(struct mmc_host *mmc, struct mmc_request *mrq)

	WARN_ON(host->mrq != NULL);

	if (mrq->data && (hweight32(mrq->data->blksz) > 1)) {
		printk(KERN_ERR "%s: Unsupported block size (%d bytes)\n",
			mmc_hostname(mmc), mrq->data->blksz);
		mrq->cmd->error = -EINVAL;
		mmc_request_done(mmc, mrq);
		return;
	}

	spin_lock_irq(&host->lock);

	host->mrq = mrq;
+1 −1
Original line number Diff line number Diff line
@@ -1309,7 +1309,7 @@ static int __devinit sdhci_probe_slot(struct pci_dev *pdev, int slot)
	mmc->ops = &sdhci_ops;
	mmc->f_min = host->max_clk / 256;
	mmc->f_max = host->max_clk;
	mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_MULTIWRITE | MMC_CAP_BYTEBLOCK;
	mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_MULTIWRITE;

	if (caps & SDHCI_CAN_DO_HISPD)
		mmc->caps |= MMC_CAP_SD_HIGHSPEED;
+10 −3
Original line number Diff line number Diff line
@@ -626,14 +626,21 @@ static void tifm_sd_request(struct mmc_host *mmc, struct mmc_request *mrq)

	spin_lock_irqsave(&sock->lock, flags);
	if (host->eject) {
		spin_unlock_irqrestore(&sock->lock, flags);
		mrq->cmd->error = -ENOMEDIUM;
		goto err_out;
	}

	if (host->req) {
		printk(KERN_ERR "%s : unfinished request detected\n",
		       sock->dev.bus_id);
		spin_unlock_irqrestore(&sock->lock, flags);
		mrq->cmd->error = -ETIMEDOUT;
		goto err_out;
	}

	if (mrq->data && (hweight32(mrq->data->blksz) > 1)) {
		printk(KERN_ERR "%s: Unsupported block size (%d bytes)\n",
			sock->dev.bus_id, mrq->data->blksz);
		mrq->cmd->error = -EINVAL;
		goto err_out;
	}

@@ -722,7 +729,7 @@ static void tifm_sd_request(struct mmc_host *mmc, struct mmc_request *mrq)
	return;

err_out:
	mrq->cmd->error = -ETIMEDOUT;
	spin_unlock_irqrestore(&sock->lock, flags);
	mmc_request_done(mmc, mrq);
}

Loading