diff options
Diffstat (limited to 'sound/soc/codecs/rt5514-spi.c')
| -rw-r--r-- | sound/soc/codecs/rt5514-spi.c | 16 | 
1 files changed, 10 insertions, 6 deletions
| diff --git a/sound/soc/codecs/rt5514-spi.c b/sound/soc/codecs/rt5514-spi.c index 2df91db765ac..2144edca97b0 100644 --- a/sound/soc/codecs/rt5514-spi.c +++ b/sound/soc/codecs/rt5514-spi.c @@ -289,6 +289,8 @@ static int rt5514_spi_pcm_probe(struct snd_soc_platform *platform)  			dev_err(&rt5514_spi->dev,  				"%s Failed to reguest IRQ: %d\n", __func__,  				ret); +		else +			device_init_wakeup(rt5514_dsp->dev, true);  	}  	return 0; @@ -379,6 +381,7 @@ int rt5514_spi_burst_read(unsigned int addr, u8 *rxbuf, size_t len)  	return true;  } +EXPORT_SYMBOL_GPL(rt5514_spi_burst_read);  /**   * rt5514_spi_burst_write - Write data to SPI by rt5514 address. @@ -456,8 +459,6 @@ static int rt5514_spi_probe(struct spi_device *spi)  		return ret;  	} -	device_init_wakeup(&spi->dev, true); -  	return 0;  } @@ -482,10 +483,13 @@ static int __maybe_unused rt5514_resume(struct device *dev)  	if (device_may_wakeup(dev))  		disable_irq_wake(irq); -	if (rt5514_dsp->substream) { -		rt5514_spi_burst_read(RT5514_IRQ_CTRL, (u8 *)&buf, sizeof(buf)); -		if (buf[0] & RT5514_IRQ_STATUS_BIT) -			rt5514_schedule_copy(rt5514_dsp); +	if (rt5514_dsp) { +		if (rt5514_dsp->substream) { +			rt5514_spi_burst_read(RT5514_IRQ_CTRL, (u8 *)&buf, +				sizeof(buf)); +			if (buf[0] & RT5514_IRQ_STATUS_BIT) +				rt5514_schedule_copy(rt5514_dsp); +		}  	}  	return 0; |