diff options
Diffstat (limited to 'include/linux/mmc')
| -rw-r--r-- | include/linux/mmc/card.h | 3 | ||||
| -rw-r--r-- | include/linux/mmc/dw_mmc.h | 9 | ||||
| -rw-r--r-- | include/linux/mmc/host.h | 3 | 
3 files changed, 9 insertions, 6 deletions
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 4d3776d25925..fdd0779ccdfa 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h @@ -279,10 +279,13 @@ struct mmc_card {  #define MMC_QUIRK_LONG_READ_TIME (1<<9)		/* Data read time > CSD says */  #define MMC_QUIRK_SEC_ERASE_TRIM_BROKEN (1<<10)	/* Skip secure for erase/trim */  #define MMC_QUIRK_BROKEN_IRQ_POLLING	(1<<11)	/* Polling SDIO_CCCR_INTx could create a fake interrupt */ +#define MMC_QUIRK_TRIM_BROKEN	(1<<12)		/* Skip trim */ +  	unsigned int		erase_size;	/* erase size in sectors */   	unsigned int		erase_shift;	/* if erase unit is power 2 */   	unsigned int		pref_erase;	/* in sectors */ +	unsigned int		eg_boundary;	/* don't cross erase-group boundaries */   	u8			erased_byte;	/* value of erased bytes */  	u32			raw_cid[4];	/* raw card CID */ diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h index 5be97676f1fa..134c57422740 100644 --- a/include/linux/mmc/dw_mmc.h +++ b/include/linux/mmc/dw_mmc.h @@ -98,6 +98,7 @@ struct mmc_data;   * @irq_flags: The flags to be passed to request_irq.   * @irq: The irq value to be passed to request_irq.   * @sdio_id0: Number of slot0 in the SDIO interrupt registers. + * @dto_timer: Timer for broken data transfer over scheme.   *   * Locking   * ======= @@ -153,11 +154,7 @@ struct dw_mci {  	dma_addr_t		sg_dma;  	void			*sg_cpu;  	const struct dw_mci_dma_ops	*dma_ops; -#ifdef CONFIG_MMC_DW_IDMAC  	unsigned int		ring_size; -#else -	struct dw_mci_dma_data	*dma_data; -#endif  	u32			cmd_status;  	u32			data_status;  	u32			stop_cmdr; @@ -204,6 +201,7 @@ struct dw_mci {  	int			sdio_id0;  	struct timer_list       cmd11_timer; +	struct timer_list       dto_timer;  };  /* DMA ops for Internal/External DMAC interface */ @@ -226,6 +224,8 @@ struct dw_mci_dma_ops {  #define DW_MCI_QUIRK_HIGHSPEED			BIT(2)  /* Unreliable card detection */  #define DW_MCI_QUIRK_BROKEN_CARD_DETECTION	BIT(3) +/* Timer for broken data transfer over scheme */ +#define DW_MCI_QUIRK_BROKEN_DTO			BIT(4)  struct dma_pdata; @@ -259,7 +259,6 @@ struct dw_mci_board {  	struct dw_mci_dma_ops *dma_ops;  	struct dma_pdata *data; -	struct block_settings *blk_settings;  };  #endif /* LINUX_MMC_DW_MMC_H */ diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index 1369e54faeb7..83b81fd865f3 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h @@ -412,7 +412,8 @@ static inline void mmc_signal_sdio_irq(struct mmc_host *host)  {  	host->ops->enable_sdio_irq(host, 0);  	host->sdio_irq_pending = true; -	wake_up_process(host->sdio_irq_thread); +	if (host->sdio_irq_thread) +		wake_up_process(host->sdio_irq_thread);  }  void sdio_run_irqs(struct mmc_host *host);  |