mmc: core: add a 'doing_init_tune' flag and a 'mmc_doing_tune' helper
Our driver needs to know when tuning is in progress. 'doing_retune' only covers re-tuning, not the initial tuning. Add another flag to detect the initial tuning state and add a helper which tells us if any kind of tuning is going on. Only implemented for MMC currently because that's where we need it. SD can be added later if it becomes necessary. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Link: https://lore.kernel.org/r/20200901150250.26236-3-wsa+renesas@sang-engineering.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
		
							parent
							
								
									24fdcb3778
								
							
						
					
					
						commit
						97a7d87e96
					
				| @ -1763,6 +1763,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, | ||||
| 		goto free_card; | ||||
| 
 | ||||
| 	if (mmc_card_hs200(card)) { | ||||
| 		host->doing_init_tune = 1; | ||||
| 
 | ||||
| 		err = mmc_hs200_tuning(card); | ||||
| 		if (err) | ||||
| 			goto free_card; | ||||
| @ -1770,6 +1772,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, | ||||
| 		err = mmc_select_hs400(card); | ||||
| 		if (err) | ||||
| 			goto free_card; | ||||
| 
 | ||||
| 		host->doing_init_tune = 0; | ||||
| 	} else if (!mmc_card_hs400es(card)) { | ||||
| 		/* Select the desired bus width optionally */ | ||||
| 		err = mmc_select_bus_width(card); | ||||
|  | ||||
| @ -400,6 +400,7 @@ struct mmc_host { | ||||
| 	unsigned int		use_spi_crc:1; | ||||
| 	unsigned int		claimed:1;	/* host exclusively claimed */ | ||||
| 	unsigned int		bus_dead:1;	/* bus has been released */ | ||||
| 	unsigned int		doing_init_tune:1; /* initial tuning in progress */ | ||||
| 	unsigned int		can_retune:1;	/* re-tuning can be used */ | ||||
| 	unsigned int		doing_retune:1;	/* re-tuning in progress */ | ||||
| 	unsigned int		retune_now:1;	/* do re-tuning at next req */ | ||||
| @ -595,6 +596,11 @@ static inline bool mmc_doing_retune(struct mmc_host *host) | ||||
| 	return host->doing_retune == 1; | ||||
| } | ||||
| 
 | ||||
| static inline bool mmc_doing_tune(struct mmc_host *host) | ||||
| { | ||||
| 	return host->doing_retune == 1 || host->doing_init_tune == 1; | ||||
| } | ||||
| 
 | ||||
| static inline enum dma_data_direction mmc_get_dma_dir(struct mmc_data *data) | ||||
| { | ||||
| 	return data->flags & MMC_DATA_WRITE ? DMA_TO_DEVICE : DMA_FROM_DEVICE; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user