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

Commit 16a34574 authored by Jaehoon Chung's avatar Jaehoon Chung Committed by Ulf Hansson
Browse files

mmc: dw_mmc: remove the quirks flags



Remove the quirks flag. (DW_MCI_QUIRK_BROKEN_DTO)
For removing this, enabled the dto_timer by defaults.
It doesn't see any I/O performance degression.
In future, dwmmc controller should not use the quirks flag.

Signed-off-by: default avatarJaehoon Chung <jh80.chung@samsung.com>
Reviewed-by: default avatarShawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent e5a61353
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -285,9 +285,6 @@ static int dw_mci_rockchip_init(struct dw_mci *host)
	/* It is slot 8 on Rockchip SoCs */
	host->sdio_id0 = 8;

	/* It needs this quirk on all Rockchip SoCs */
	host->pdata->quirks |= DW_MCI_QUIRK_BROKEN_DTO;

	if (of_device_is_compatible(host->dev->of_node,
				    "rockchip,rk3288-dw-mshc"))
		host->bus_hz /= RK3288_CLKGEN_DIV;
+5 −11
Original line number Diff line number Diff line
@@ -1824,8 +1824,7 @@ static void dw_mci_tasklet_func(unsigned long priv)
				 * If all data-related interrupts don't come
				 * within the given time in reading data state.
				 */
				if ((host->quirks & DW_MCI_QUIRK_BROKEN_DTO) &&
				    (host->dir_status == DW_MCI_RECV_STATUS))
				if (host->dir_status == DW_MCI_RECV_STATUS)
					dw_mci_set_drto(host);
				break;
			}
@@ -1867,8 +1866,7 @@ static void dw_mci_tasklet_func(unsigned long priv)
				 * interrupt doesn't come within the given time.
				 * in reading data state.
				 */
				if ((host->quirks & DW_MCI_QUIRK_BROKEN_DTO) &&
				    (host->dir_status == DW_MCI_RECV_STATUS))
				if (host->dir_status == DW_MCI_RECV_STATUS)
					dw_mci_set_drto(host);
				break;
			}
@@ -2434,7 +2432,6 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
		}

		if (pending & SDMMC_INT_DATA_OVER) {
			if (host->quirks & DW_MCI_QUIRK_BROKEN_DTO)
			del_timer(&host->dto_timer);

			mci_writel(host, RINTSTS, SDMMC_INT_DATA_OVER);
@@ -3026,9 +3023,6 @@ int dw_mci_probe(struct dw_mci *host)
	setup_timer(&host->cmd11_timer,
		    dw_mci_cmd11_timer, (unsigned long)host);

	host->quirks = host->pdata->quirks;

	if (host->quirks & DW_MCI_QUIRK_BROKEN_DTO)
	setup_timer(&host->dto_timer,
		    dw_mci_dto_timer, (unsigned long)host);

+0 −9
Original line number Diff line number Diff line
@@ -112,7 +112,6 @@ struct dw_mci_dma_slave {
 * @part_buf: Simple buffer for partial fifo reads/writes.
 * @push_data: Pointer to FIFO push function.
 * @pull_data: Pointer to FIFO pull function.
 * @quirks: Set of quirks that apply to specific versions of the IP.
 * @vqmmc_enabled: Status of vqmmc, should be true or false.
 * @irq_flags: The flags to be passed to request_irq.
 * @irq: The irq value to be passed to request_irq.
@@ -218,9 +217,6 @@ struct dw_mci {
	void (*push_data)(struct dw_mci *host, void *buf, int cnt);
	void (*pull_data)(struct dw_mci *host, void *buf, int cnt);

	/* Workaround flags */
	u32			quirks;

	bool			vqmmc_enabled;
	unsigned long		irq_flags; /* IRQ flags */
	int			irq;
@@ -242,17 +238,12 @@ struct dw_mci_dma_ops {
	void (*exit)(struct dw_mci *host);
};

/* IP Quirks/flags. */
/* Timer for broken data transfer over scheme */
#define DW_MCI_QUIRK_BROKEN_DTO			BIT(0)

struct dma_pdata;

/* Board platform data */
struct dw_mci_board {
	u32 num_slots;

	u32 quirks; /* Workaround / Quirk flags */
	unsigned int bus_hz; /* Clock speed at the cclk_in pad */

	u32 caps;	/* Capabilities */