Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'sound-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"Just two minor bug fixes: a fix for a regression in oxygen driver that
was introduced in 3.14-rc1, and a stable fix for the return value of
compress offload open callback"

* tag 'sound-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: compress: Pass through return value of open ops callback
ALSA: oxygen: Xonar DG(X): fix Stereo Upmixing regression

+25 -7
+1 -1
sound/core/compress_offload.c
··· 133 133 kfree(data); 134 134 } 135 135 snd_card_unref(compr->card); 136 - return 0; 136 + return ret; 137 137 } 138 138 139 139 static int snd_compr_free(struct inode *inode, struct file *f)
+24 -6
sound/pci/oxygen/xonar_dg.c
··· 238 238 cs4245_write_spi(chip, CS4245_MCLK_FREQ); 239 239 } 240 240 241 + static inline unsigned int shift_bits(unsigned int value, 242 + unsigned int shift_from, 243 + unsigned int shift_to, 244 + unsigned int mask) 245 + { 246 + if (shift_from < shift_to) 247 + return (value << (shift_to - shift_from)) & mask; 248 + else 249 + return (value >> (shift_from - shift_to)) & mask; 250 + } 251 + 241 252 unsigned int adjust_dg_dac_routing(struct oxygen *chip, 242 253 unsigned int play_routing) 243 254 { 244 255 struct dg *data = chip->model_data; 245 - unsigned int routing = 0; 246 256 247 257 switch (data->output_sel) { 248 258 case PLAYBACK_DST_HP: ··· 262 252 OXYGEN_PLAY_MUTE67, OXYGEN_PLAY_MUTE_MASK); 263 253 break; 264 254 case PLAYBACK_DST_MULTICH: 265 - routing = (0 << OXYGEN_PLAY_DAC0_SOURCE_SHIFT) | 266 - (2 << OXYGEN_PLAY_DAC1_SOURCE_SHIFT) | 267 - (1 << OXYGEN_PLAY_DAC2_SOURCE_SHIFT) | 268 - (0 << OXYGEN_PLAY_DAC3_SOURCE_SHIFT); 269 255 oxygen_write8_masked(chip, OXYGEN_PLAY_ROUTING, 270 256 OXYGEN_PLAY_MUTE01, OXYGEN_PLAY_MUTE_MASK); 271 257 break; 272 258 } 273 - return routing; 259 + return (play_routing & OXYGEN_PLAY_DAC0_SOURCE_MASK) | 260 + shift_bits(play_routing, 261 + OXYGEN_PLAY_DAC2_SOURCE_SHIFT, 262 + OXYGEN_PLAY_DAC1_SOURCE_SHIFT, 263 + OXYGEN_PLAY_DAC1_SOURCE_MASK) | 264 + shift_bits(play_routing, 265 + OXYGEN_PLAY_DAC1_SOURCE_SHIFT, 266 + OXYGEN_PLAY_DAC2_SOURCE_SHIFT, 267 + OXYGEN_PLAY_DAC2_SOURCE_MASK) | 268 + shift_bits(play_routing, 269 + OXYGEN_PLAY_DAC0_SOURCE_SHIFT, 270 + OXYGEN_PLAY_DAC3_SOURCE_SHIFT, 271 + OXYGEN_PLAY_DAC3_SOURCE_MASK); 274 272 } 275 273 276 274 void dump_cs4245_registers(struct oxygen *chip,