diff options
Diffstat (limited to 'sound/pci/oxygen')
| -rw-r--r-- | sound/pci/oxygen/oxygen_io.c | 11 | ||||
| -rw-r--r-- | sound/pci/oxygen/oxygen_lib.c | 3 | ||||
| -rw-r--r-- | sound/pci/oxygen/oxygen_pcm.c | 2 |
3 files changed, 6 insertions, 10 deletions
diff --git a/sound/pci/oxygen/oxygen_io.c b/sound/pci/oxygen/oxygen_io.c index c1eb923f2ac9..09b2b2a36df5 100644 --- a/sound/pci/oxygen/oxygen_io.c +++ b/sound/pci/oxygen/oxygen_io.c | |||
| @@ -215,17 +215,8 @@ EXPORT_SYMBOL(oxygen_write_spi); | |||
| 215 | 215 | ||
| 216 | void oxygen_write_i2c(struct oxygen *chip, u8 device, u8 map, u8 data) | 216 | void oxygen_write_i2c(struct oxygen *chip, u8 device, u8 map, u8 data) |
| 217 | { | 217 | { |
| 218 | unsigned long timeout; | ||
| 219 | |||
| 220 | /* should not need more than about 300 us */ | 218 | /* should not need more than about 300 us */ |
| 221 | timeout = jiffies + msecs_to_jiffies(1); | 219 | msleep(1); |
| 222 | do { | ||
| 223 | if (!(oxygen_read16(chip, OXYGEN_2WIRE_BUS_STATUS) | ||
| 224 | & OXYGEN_2WIRE_BUSY)) | ||
| 225 | break; | ||
| 226 | udelay(1); | ||
| 227 | cond_resched(); | ||
| 228 | } while (time_after_eq(timeout, jiffies)); | ||
| 229 | 220 | ||
| 230 | oxygen_write8(chip, OXYGEN_2WIRE_MAP, map); | 221 | oxygen_write8(chip, OXYGEN_2WIRE_MAP, map); |
| 231 | oxygen_write8(chip, OXYGEN_2WIRE_DATA, data); | 222 | oxygen_write8(chip, OXYGEN_2WIRE_DATA, data); |
diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c index 312251d39696..9a8936e20744 100644 --- a/sound/pci/oxygen/oxygen_lib.c +++ b/sound/pci/oxygen/oxygen_lib.c | |||
| @@ -260,6 +260,9 @@ oxygen_search_pci_id(struct oxygen *chip, const struct pci_device_id ids[]) | |||
| 260 | * chip didn't if the first EEPROM word was overwritten. | 260 | * chip didn't if the first EEPROM word was overwritten. |
| 261 | */ | 261 | */ |
| 262 | subdevice = oxygen_read_eeprom(chip, 2); | 262 | subdevice = oxygen_read_eeprom(chip, 2); |
| 263 | /* use default ID if EEPROM is missing */ | ||
| 264 | if (subdevice == 0xffff) | ||
| 265 | subdevice = 0x8788; | ||
| 263 | /* | 266 | /* |
| 264 | * We use only the subsystem device ID for searching because it is | 267 | * We use only the subsystem device ID for searching because it is |
| 265 | * unique even without the subsystem vendor ID, which may have been | 268 | * unique even without the subsystem vendor ID, which may have been |
diff --git a/sound/pci/oxygen/oxygen_pcm.c b/sound/pci/oxygen/oxygen_pcm.c index 3b5ca70c9d4d..ef2345d82b86 100644 --- a/sound/pci/oxygen/oxygen_pcm.c +++ b/sound/pci/oxygen/oxygen_pcm.c | |||
| @@ -469,9 +469,11 @@ static int oxygen_multich_hw_params(struct snd_pcm_substream *substream, | |||
| 469 | oxygen_write16_masked(chip, OXYGEN_I2S_MULTICH_FORMAT, | 469 | oxygen_write16_masked(chip, OXYGEN_I2S_MULTICH_FORMAT, |
| 470 | oxygen_rate(hw_params) | | 470 | oxygen_rate(hw_params) | |
| 471 | chip->model.dac_i2s_format | | 471 | chip->model.dac_i2s_format | |
| 472 | oxygen_i2s_mclk(hw_params) | | ||
| 472 | oxygen_i2s_bits(hw_params), | 473 | oxygen_i2s_bits(hw_params), |
| 473 | OXYGEN_I2S_RATE_MASK | | 474 | OXYGEN_I2S_RATE_MASK | |
| 474 | OXYGEN_I2S_FORMAT_MASK | | 475 | OXYGEN_I2S_FORMAT_MASK | |
| 476 | OXYGEN_I2S_MCLK_MASK | | ||
| 475 | OXYGEN_I2S_BITS_MASK); | 477 | OXYGEN_I2S_BITS_MASK); |
| 476 | oxygen_update_dac_routing(chip); | 478 | oxygen_update_dac_routing(chip); |
| 477 | oxygen_update_spdif_source(chip); | 479 | oxygen_update_spdif_source(chip); |
