diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2017-02-09 18:01:23 +0300 | 
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2017-02-09 18:01:23 +0300 | 
| commit | 2e751dfb5ffd20d1a31837dbc9718741df69bffe (patch) | |
| tree | 8b7e0e47cf0ef4efda0f1090f0ccbbeb17e5a085 /drivers/mmc/core/mmc_ops.c | |
| parent | a0e136d436ded817c0aade72efdefa56a00b4e5e (diff) | |
| parent | 7b6b46311a8562fb3a9e035ed6ffab6d49c28886 (diff) | |
| download | linux-2e751dfb5ffd20d1a31837dbc9718741df69bffe.tar.xz | |
Merge tag 'kvmarm-for-4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
kvmarm updates for 4.11
- GICv3 save restore
- Cache flushing fixes
- MSI injection fix for GICv3 ITS
- Physical timer emulation support
Diffstat (limited to 'drivers/mmc/core/mmc_ops.c')
| -rw-r--r-- | drivers/mmc/core/mmc_ops.c | 25 | 
1 files changed, 12 insertions, 13 deletions
| diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c index b11c3455b040..e6ea8503f40c 100644 --- a/drivers/mmc/core/mmc_ops.c +++ b/drivers/mmc/core/mmc_ops.c @@ -506,9 +506,6 @@ static int mmc_poll_for_busy(struct mmc_card *card, unsigned int timeout_ms,  		}  	} while (busy); -	if (host->ops->card_busy && send_status) -		return mmc_switch_status(card); -  	return 0;  } @@ -577,24 +574,26 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,  	if (!use_busy_signal)  		goto out; -	/* Switch to new timing before poll and check switch status. */ -	if (timing) -		mmc_set_timing(host, timing); -  	/*If SPI or used HW busy detection above, then we don't need to poll. */  	if (((host->caps & MMC_CAP_WAIT_WHILE_BUSY) && use_r1b_resp) || -		mmc_host_is_spi(host)) { -		if (send_status) -			err = mmc_switch_status(card); +		mmc_host_is_spi(host))  		goto out_tim; -	}  	/* Let's try to poll to find out when the command is completed. */  	err = mmc_poll_for_busy(card, timeout_ms, send_status, retry_crc_err); +	if (err) +		goto out;  out_tim: -	if (err && timing) -		mmc_set_timing(host, old_timing); +	/* Switch to new timing before check switch status. */ +	if (timing) +		mmc_set_timing(host, timing); + +	if (send_status) { +		err = mmc_switch_status(card); +		if (err && timing) +			mmc_set_timing(host, old_timing); +	}  out:  	mmc_retune_release(host); | 
