mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 06:33:34 +00:00
ALSA: oxygen: modify the SPI writing function
Modify the oxygen_write_spi() function to use the newly introduced oxygen_wait_spi() function. Change return value from void to int, so it can return error codes. Older drivers just ignore that return value, new drivers can check this value. We need to wait AFTER initiating the SPI transaction, otherwise read operation will not work. Signed-off-by: Roman Volkov <v1ron@mail.ru> Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
This commit is contained in:
parent
10dd44dc88
commit
303cff30d3
@ -198,7 +198,7 @@ void oxygen_write_ac97(struct oxygen *chip, unsigned int codec,
|
||||
void oxygen_write_ac97_masked(struct oxygen *chip, unsigned int codec,
|
||||
unsigned int index, u16 data, u16 mask);
|
||||
|
||||
void oxygen_write_spi(struct oxygen *chip, u8 control, unsigned int data);
|
||||
int oxygen_write_spi(struct oxygen *chip, u8 control, unsigned int data);
|
||||
void oxygen_write_i2c(struct oxygen *chip, u8 device, u8 map, u8 data);
|
||||
|
||||
void oxygen_reset_uart(struct oxygen *chip);
|
||||
|
@ -212,23 +212,18 @@ static int oxygen_wait_spi(struct oxygen *chip)
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
void oxygen_write_spi(struct oxygen *chip, u8 control, unsigned int data)
|
||||
int oxygen_write_spi(struct oxygen *chip, u8 control, unsigned int data)
|
||||
{
|
||||
unsigned int count;
|
||||
|
||||
/* should not need more than 30.72 us (24 * 1.28 us) */
|
||||
count = 10;
|
||||
while ((oxygen_read8(chip, OXYGEN_SPI_CONTROL) & OXYGEN_SPI_BUSY)
|
||||
&& count > 0) {
|
||||
udelay(4);
|
||||
--count;
|
||||
}
|
||||
|
||||
/*
|
||||
* We need to wait AFTER initiating the SPI transaction,
|
||||
* otherwise read operations will not work.
|
||||
*/
|
||||
oxygen_write8(chip, OXYGEN_SPI_DATA1, data);
|
||||
oxygen_write8(chip, OXYGEN_SPI_DATA2, data >> 8);
|
||||
if (control & OXYGEN_SPI_DATA_LENGTH_3)
|
||||
oxygen_write8(chip, OXYGEN_SPI_DATA3, data >> 16);
|
||||
oxygen_write8(chip, OXYGEN_SPI_CONTROL, control);
|
||||
return oxygen_wait_spi(chip);
|
||||
}
|
||||
EXPORT_SYMBOL(oxygen_write_spi);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user