Commit 10dd44dc authored by Roman Volkov's avatar Roman Volkov Committed by Clemens Ladisch

ALSA: oxygen: add the separate SPI waiting function

The oxygen_wait_spi() function now performs waiting when the
SPI bus completes a transaction. Introduce the timeout error
checking and increase timeout to 200 from 40.
Signed-off-by: default avatarRoman Volkov <v1ron@mail.ru>
Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
parent d8ec26d7
...@@ -194,6 +194,24 @@ void oxygen_write_ac97_masked(struct oxygen *chip, unsigned int codec, ...@@ -194,6 +194,24 @@ void oxygen_write_ac97_masked(struct oxygen *chip, unsigned int codec,
} }
EXPORT_SYMBOL(oxygen_write_ac97_masked); EXPORT_SYMBOL(oxygen_write_ac97_masked);
static int oxygen_wait_spi(struct oxygen *chip)
{
unsigned int count;
/*
* Higher timeout to be sure: 200 us;
* actual transaction should not need more than 40 us.
*/
for (count = 50; count > 0; count--) {
udelay(4);
if ((oxygen_read8(chip, OXYGEN_SPI_CONTROL) &
OXYGEN_SPI_BUSY) == 0)
return 0;
}
snd_printk(KERN_ERR "oxygen: SPI wait timeout\n");
return -EIO;
}
void oxygen_write_spi(struct oxygen *chip, u8 control, unsigned int data) void oxygen_write_spi(struct oxygen *chip, u8 control, unsigned int data)
{ {
unsigned int count; unsigned int count;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment