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-fix-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"Here are a few fixes that have landed after the previous pull request.
All are driver specific fixes including:

- error/int value fixes in OXFW,
- Intel Skylake HD-audio HDMI codec support,
- Additional HD-audio Realtek codecs and AD1986A codec fixes/quirks,
- a few more DSD support and a quirk for Arcam rPAC in usb-audio,
- a typo fix for Scarlett 6i6,
- fixes for new ASIHPI firmware,
- ASoC Exynos7 cleanups,
- Intel ACPI support, and
- a fix for PCM512 register cache sync"

* tag 'sound-fix-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (24 commits)
ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC
ALSA: hda/realtek - New codec support for ALC298
ALSA: asihpi: update to HPI version 4.14
ALSA: asihpi: increase tuner pad cache size
ALSA: asihpi: relax firmware version check
ALSA: usb-audio: Fix Scarlett 6i6 initialization typo
ALSA: hda - Add quirk for Packard Bell EasyNote MX65
ALSA: usb-audio: add native DSD support for Matrix Audio DACs
ALSA: hda/realtek - New codec support for ALC256
ALSA: hda/realtek - Add new Dell desktop for ALC3234 headset mode
ASoC: Intel: fix possible acpi enumeration panic
ALSA: hda/hdmi - apply Haswell fix-ups to Skylake display codec
ASoC: Intel: fix return value check in sst_acpi_probe()
ALSA: hda - Make add_stereo_mix_input flag tristate
ALSA: hda - Create capture source ctls when stereo mix input is added
ALSA: hda - Fix typos in snd_hda_get_int_hint() kerneldoc comments
ALSA: hda - add codec ID for Skylake display audio codec
ALSA: oxfw: some signedness bugs
ALSA: oxfw: fix detect_loud_models() return value
ASoC: rt5677: add REGMAP_I2C and REGMAP_IRQ dependency
...

+139 -51
+3 -3
sound/firewire/oxfw/oxfw-pcm.c
··· 19 19 .min = UINT_MAX, .max = 0, .integer = 1 20 20 }; 21 21 struct snd_oxfw_stream_formation formation; 22 - unsigned int i, err; 22 + int i, err; 23 23 24 24 for (i = 0; i < SND_OXFW_STREAM_FORMAT_ENTRIES; i++) { 25 25 if (formats[i] == NULL) ··· 47 47 const struct snd_interval *r = 48 48 hw_param_interval_c(params, SNDRV_PCM_HW_PARAM_RATE); 49 49 struct snd_oxfw_stream_formation formation; 50 - unsigned int i, j, err; 50 + int i, j, err; 51 51 unsigned int count, list[SND_OXFW_STREAM_FORMAT_ENTRIES] = {0}; 52 52 53 53 count = 0; ··· 80 80 static void limit_channels_and_rates(struct snd_pcm_hardware *hw, u8 **formats) 81 81 { 82 82 struct snd_oxfw_stream_formation formation; 83 - unsigned int i, err; 83 + int i, err; 84 84 85 85 hw->channels_min = UINT_MAX; 86 86 hw->channels_max = 0;
+1 -1
sound/firewire/oxfw/oxfw-proc.c
··· 15 15 struct snd_oxfw_stream_formation formation, curr; 16 16 u8 *format; 17 17 char flag; 18 - unsigned int i, err; 18 + int i, err; 19 19 20 20 /* Show input. */ 21 21 err = snd_oxfw_stream_get_current_formation(oxfw,
+2 -1
sound/firewire/oxfw/oxfw-stream.c
··· 61 61 u8 **formats; 62 62 struct snd_oxfw_stream_formation formation; 63 63 enum avc_general_plug_dir dir; 64 - unsigned int i, err, len; 64 + unsigned int len; 65 + int i, err; 65 66 66 67 if (s == &oxfw->tx_stream) { 67 68 formats = oxfw->tx_stream_formats;
+1 -1
sound/firewire/oxfw/oxfw.c
··· 43 43 err = fw_csr_string(unit->directory, CSR_MODEL, 44 44 model, sizeof(model)); 45 45 if (err < 0) 46 - return err; 46 + return false; 47 47 48 48 for (i = 0; i < ARRAY_SIZE(models); i++) { 49 49 if (strcmp(models[i], model) == 0)
+3 -3
sound/pci/asihpi/hpi_internal.h
··· 1367 1367 struct hpi_control_cache_pad { 1368 1368 struct hpi_control_cache_info i; 1369 1369 u32 field_valid_flags; 1370 - u8 c_channel[8]; 1371 - u8 c_artist[40]; 1372 - u8 c_title[40]; 1370 + u8 c_channel[40]; 1371 + u8 c_artist[100]; 1372 + u8 c_title[100]; 1373 1373 u8 c_comment[200]; 1374 1374 u32 pTY; 1375 1375 u32 pI;
+3 -3
sound/pci/asihpi/hpi_version.h
··· 11 11 /* Use single digits for versions less that 10 to avoid octal. */ 12 12 /* *** HPI_VER is the only edit required to update version *** */ 13 13 /** HPI version */ 14 - #define HPI_VER HPI_VERSION_CONSTRUCTOR(4, 10, 1) 14 + #define HPI_VER HPI_VERSION_CONSTRUCTOR(4, 14, 3) 15 15 16 16 /** HPI version string in dotted decimal format */ 17 - #define HPI_VER_STRING "4.10.01" 17 + #define HPI_VER_STRING "4.14.03" 18 18 19 19 /** Library version as documented in hpi-api-versions.txt */ 20 - #define HPI_LIB_VER HPI_VERSION_CONSTRUCTOR(10, 2, 0) 20 + #define HPI_LIB_VER HPI_VERSION_CONSTRUCTOR(10, 4, 0) 21 21 22 22 /** Construct hpi version number from major, minor, release numbers */ 23 23 #define HPI_VERSION_CONSTRUCTOR(maj, min, r) ((maj << 16) + (min << 8) + r)
+12 -14
sound/pci/asihpi/hpidspcd.c
··· 1 - /***********************************************************************/ 2 - /** 1 + /*********************************************************************** 3 2 4 3 AudioScience HPI driver 5 - Copyright (C) 1997-2011 AudioScience Inc. <support@audioscience.com> 4 + Functions for reading DSP code using hotplug firmware loader 5 + 6 + Copyright (C) 1997-2014 AudioScience Inc. <support@audioscience.com> 6 7 7 8 This program is free software; you can redistribute it and/or modify 8 9 it under the terms of version 2 of the GNU General Public License as ··· 18 17 along with this program; if not, write to the Free Software 19 18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 19 21 - \file 22 - Functions for reading DSP code using 23 - hotplug firmware loader from individual dsp code files 24 - */ 25 - /***********************************************************************/ 20 + ***********************************************************************/ 26 21 #define SOURCEFILE_NAME "hpidspcd.c" 27 22 #include "hpidspcd.h" 28 23 #include "hpidebug.h" ··· 65 68 goto error2; 66 69 } 67 70 68 - if ((header.version >> 9) != (HPI_VER >> 9)) { 69 - /* Consider even and subsequent odd minor versions to be compatible */ 70 - dev_err(&dev->dev, "Incompatible firmware version DSP image %X != Driver %X\n", 71 + if (HPI_VER_MAJOR(header.version) != HPI_VER_MAJOR(HPI_VER)) { 72 + /* Major version change probably means Host-DSP protocol change */ 73 + dev_err(&dev->dev, 74 + "Incompatible firmware version DSP image %X != Driver %X\n", 71 75 header.version, HPI_VER); 72 76 goto error2; 73 77 } 74 78 75 79 if (header.version != HPI_VER) { 76 - dev_info(&dev->dev, 77 - "Firmware: release version mismatch DSP image %X != Driver %X\n", 78 - header.version, HPI_VER); 80 + dev_warn(&dev->dev, 81 + "Firmware version mismatch: DSP image %X != Driver %X\n", 82 + header.version, HPI_VER); 79 83 } 80 84 81 85 HPI_DEBUG_LOG(DEBUG, "dsp code %s opened\n", fw_name);
+5 -5
sound/pci/hda/hda_generic.c
··· 3218 3218 } 3219 3219 3220 3220 /* add stereo mix when explicitly enabled via hint */ 3221 - if (mixer && spec->add_stereo_mix_input && 3222 - snd_hda_get_bool_hint(codec, "add_stereo_mix_input") > 0) { 3221 + if (mixer && spec->add_stereo_mix_input == HDA_HINT_STEREO_MIX_ENABLE) { 3223 3222 err = parse_capture_source(codec, mixer, CFG_IDX_MIX, num_adcs, 3224 3223 "Stereo Mix", 0); 3225 3224 if (err < 0) 3226 3225 return err; 3226 + else 3227 + spec->suppress_auto_mic = 1; 3227 3228 } 3228 3229 3229 3230 return 0; ··· 4543 4542 4544 4543 /* add stereo mix if available and not enabled yet */ 4545 4544 if (!spec->auto_mic && spec->mixer_nid && 4546 - spec->add_stereo_mix_input && 4547 - spec->input_mux.num_items > 1 && 4548 - snd_hda_get_bool_hint(codec, "add_stereo_mix_input") < 0) { 4545 + spec->add_stereo_mix_input == HDA_HINT_STEREO_MIX_AUTO && 4546 + spec->input_mux.num_items > 1) { 4549 4547 err = parse_capture_source(codec, spec->mixer_nid, 4550 4548 CFG_IDX_MIX, spec->num_all_adcs, 4551 4549 "Stereo Mix", 0);
+8 -1
sound/pci/hda/hda_generic.h
··· 222 222 unsigned int vmaster_mute_enum:1; /* add vmaster mute mode enum */ 223 223 unsigned int indep_hp:1; /* independent HP supported */ 224 224 unsigned int prefer_hp_amp:1; /* enable HP amp for speaker if any */ 225 - unsigned int add_stereo_mix_input:1; /* add aamix as a capture src */ 225 + unsigned int add_stereo_mix_input:2; /* add aamix as a capture src */ 226 226 unsigned int add_jack_modes:1; /* add i/o jack mode enum ctls */ 227 227 unsigned int power_down_unused:1; /* power down unused widgets */ 228 228 unsigned int dac_min_mute:1; /* minimal = mute for DACs */ ··· 289 289 struct hda_jack_callback *cb); 290 290 void (*mic_autoswitch_hook)(struct hda_codec *codec, 291 291 struct hda_jack_callback *cb); 292 + }; 293 + 294 + /* values for add_stereo_mix_input flag */ 295 + enum { 296 + HDA_HINT_STEREO_MIX_DISABLE, /* No stereo mix input */ 297 + HDA_HINT_STEREO_MIX_ENABLE, /* Add stereo mix input */ 298 + HDA_HINT_STEREO_MIX_AUTO, /* Add only if auto-mic is disabled */ 292 299 }; 293 300 294 301 int snd_hda_gen_spec_init(struct hda_gen_spec *spec);
+1 -1
sound/pci/hda/hda_sysfs.c
··· 468 468 EXPORT_SYMBOL_GPL(snd_hda_get_bool_hint); 469 469 470 470 /** 471 - * snd_hda_get_bool_hint - Get a boolean hint value 471 + * snd_hda_get_int_hint - Get an integer hint value 472 472 * @codec: the HDA codec 473 473 * @key: the hint key string 474 474 * @valp: pointer to store a value
+41 -1
sound/pci/hda/patch_analog.c
··· 195 195 codec->no_sticky_stream = 1; 196 196 197 197 spec->gen.indep_hp = indep_hp; 198 - spec->gen.add_stereo_mix_input = 1; 198 + if (!spec->gen.add_stereo_mix_input) 199 + spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_AUTO; 199 200 200 201 err = snd_hda_parse_pin_defcfg(codec, cfg, NULL, 0); 201 202 if (err < 0) ··· 257 256 } 258 257 } 259 258 259 + /* enable stereo-mix input for avoiding regression on KDE (bko#88251) */ 260 + static void ad1986a_fixup_eapd_mix_in(struct hda_codec *codec, 261 + const struct hda_fixup *fix, int action) 262 + { 263 + struct ad198x_spec *spec = codec->spec; 264 + 265 + if (action == HDA_FIXUP_ACT_PRE_PROBE) { 266 + ad1986a_fixup_eapd(codec, fix, action); 267 + spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_ENABLE; 268 + } 269 + } 270 + 260 271 enum { 261 272 AD1986A_FIXUP_INV_JACK_DETECT, 262 273 AD1986A_FIXUP_ULTRA, ··· 277 264 AD1986A_FIXUP_LAPTOP, 278 265 AD1986A_FIXUP_LAPTOP_IMIC, 279 266 AD1986A_FIXUP_EAPD, 267 + AD1986A_FIXUP_EAPD_MIX_IN, 268 + AD1986A_FIXUP_EASYNOTE, 280 269 }; 281 270 282 271 static const struct hda_fixup ad1986a_fixups[] = { ··· 343 328 .type = HDA_FIXUP_FUNC, 344 329 .v.func = ad1986a_fixup_eapd, 345 330 }, 331 + [AD1986A_FIXUP_EAPD_MIX_IN] = { 332 + .type = HDA_FIXUP_FUNC, 333 + .v.func = ad1986a_fixup_eapd_mix_in, 334 + }, 335 + [AD1986A_FIXUP_EASYNOTE] = { 336 + .type = HDA_FIXUP_PINS, 337 + .v.pins = (const struct hda_pintbl[]) { 338 + { 0x1a, 0x0421402f }, /* headphone */ 339 + { 0x1b, 0x90170110 }, /* speaker */ 340 + { 0x1c, 0x411111f0 }, /* N/A */ 341 + { 0x1d, 0x90a70130 }, /* int mic */ 342 + { 0x1e, 0x411111f0 }, /* N/A */ 343 + { 0x1f, 0x04a19040 }, /* mic */ 344 + { 0x20, 0x411111f0 }, /* N/A */ 345 + { 0x21, 0x411111f0 }, /* N/A */ 346 + { 0x22, 0x411111f0 }, /* N/A */ 347 + { 0x23, 0x411111f0 }, /* N/A */ 348 + { 0x24, 0x411111f0 }, /* N/A */ 349 + { 0x25, 0x411111f0 }, /* N/A */ 350 + {} 351 + }, 352 + .chained = true, 353 + .chain_id = AD1986A_FIXUP_EAPD_MIX_IN, 354 + }, 346 355 }; 347 356 348 357 static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { ··· 380 341 SND_PCI_QUIRK(0x144d, 0xc01e, "FSC V2060", AD1986A_FIXUP_LAPTOP), 381 342 SND_PCI_QUIRK_MASK(0x144d, 0xff00, 0xc000, "Samsung", AD1986A_FIXUP_SAMSUNG), 382 343 SND_PCI_QUIRK(0x144d, 0xc027, "Samsung Q1", AD1986A_FIXUP_ULTRA), 344 + SND_PCI_QUIRK(0x1631, 0xc022, "PackardBell EasyNote MX65", AD1986A_FIXUP_EASYNOTE), 383 345 SND_PCI_QUIRK(0x17aa, 0x2066, "Lenovo N100", AD1986A_FIXUP_INV_JACK_DETECT), 384 346 SND_PCI_QUIRK(0x17aa, 0x1011, "Lenovo M55", AD1986A_FIXUP_3STACK), 385 347 SND_PCI_QUIRK(0x17aa, 0x1017, "Lenovo A60", AD1986A_FIXUP_3STACK),
+2 -2
sound/pci/hda/patch_conexant.c
··· 855 855 case 0x14f15045: 856 856 codec->single_adc_amp = 1; 857 857 spec->gen.mixer_nid = 0x17; 858 - spec->gen.add_stereo_mix_input = 1; 858 + spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_AUTO; 859 859 snd_hda_pick_fixup(codec, cxt5045_fixup_models, 860 860 cxt5045_fixups, cxt_fixups); 861 861 break; 862 862 case 0x14f15047: 863 863 codec->pin_amp_workaround = 1; 864 864 spec->gen.mixer_nid = 0x19; 865 - spec->gen.add_stereo_mix_input = 1; 865 + spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_AUTO; 866 866 snd_hda_pick_fixup(codec, cxt5047_fixup_models, 867 867 cxt5047_fixups, cxt_fixups); 868 868 break;
+5 -1
sound/pci/hda/patch_hdmi.c
··· 47 47 48 48 #define is_haswell(codec) ((codec)->vendor_id == 0x80862807) 49 49 #define is_broadwell(codec) ((codec)->vendor_id == 0x80862808) 50 - #define is_haswell_plus(codec) (is_haswell(codec) || is_broadwell(codec)) 50 + #define is_skylake(codec) ((codec)->vendor_id == 0x80862809) 51 + #define is_haswell_plus(codec) (is_haswell(codec) || is_broadwell(codec) \ 52 + || is_skylake(codec)) 51 53 52 54 #define is_valleyview(codec) ((codec)->vendor_id == 0x80862882) 53 55 #define is_cherryview(codec) ((codec)->vendor_id == 0x80862883) ··· 3367 3365 { .id = 0x80862806, .name = "PantherPoint HDMI", .patch = patch_generic_hdmi }, 3368 3366 { .id = 0x80862807, .name = "Haswell HDMI", .patch = patch_generic_hdmi }, 3369 3367 { .id = 0x80862808, .name = "Broadwell HDMI", .patch = patch_generic_hdmi }, 3368 + { .id = 0x80862809, .name = "Skylake HDMI", .patch = patch_generic_hdmi }, 3370 3369 { .id = 0x80862880, .name = "CedarTrail HDMI", .patch = patch_generic_hdmi }, 3371 3370 { .id = 0x80862882, .name = "Valleyview2 HDMI", .patch = patch_generic_hdmi }, 3372 3371 { .id = 0x80862883, .name = "Braswell HDMI", .patch = patch_generic_hdmi }, ··· 3428 3425 MODULE_ALIAS("snd-hda-codec-id:80862806"); 3429 3426 MODULE_ALIAS("snd-hda-codec-id:80862807"); 3430 3427 MODULE_ALIAS("snd-hda-codec-id:80862808"); 3428 + MODULE_ALIAS("snd-hda-codec-id:80862809"); 3431 3429 MODULE_ALIAS("snd-hda-codec-id:80862880"); 3432 3430 MODULE_ALIAS("snd-hda-codec-id:80862882"); 3433 3431 MODULE_ALIAS("snd-hda-codec-id:80862883");
+15
sound/pci/hda/patch_realtek.c
··· 321 321 break; 322 322 case 0x10ec0233: 323 323 case 0x10ec0255: 324 + case 0x10ec0256: 324 325 case 0x10ec0282: 325 326 case 0x10ec0283: 326 327 case 0x10ec0286: 327 328 case 0x10ec0288: 329 + case 0x10ec0298: 328 330 alc_update_coef_idx(codec, 0x10, 1<<9, 0); 329 331 break; 330 332 case 0x10ec0285: ··· 2661 2659 ALC269_TYPE_ALC284, 2662 2660 ALC269_TYPE_ALC285, 2663 2661 ALC269_TYPE_ALC286, 2662 + ALC269_TYPE_ALC298, 2664 2663 ALC269_TYPE_ALC255, 2664 + ALC269_TYPE_ALC256, 2665 2665 }; 2666 2666 2667 2667 /* ··· 2690 2686 case ALC269_TYPE_ALC282: 2691 2687 case ALC269_TYPE_ALC283: 2692 2688 case ALC269_TYPE_ALC286: 2689 + case ALC269_TYPE_ALC298: 2693 2690 case ALC269_TYPE_ALC255: 2691 + case ALC269_TYPE_ALC256: 2694 2692 ssids = alc269_ssids; 2695 2693 break; 2696 2694 default: ··· 4835 4829 SND_PCI_QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_FIXUP_MONO_SPEAKERS_HSJACK), 4836 4830 SND_PCI_QUIRK(0x1028, 0x064a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), 4837 4831 SND_PCI_QUIRK(0x1028, 0x064b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), 4832 + SND_PCI_QUIRK(0x1028, 0x06c7, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE), 4838 4833 SND_PCI_QUIRK(0x1028, 0x06d9, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), 4839 4834 SND_PCI_QUIRK(0x1028, 0x06da, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), 4840 4835 SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), ··· 5424 5417 spec->codec_variant = ALC269_TYPE_ALC286; 5425 5418 spec->shutup = alc286_shutup; 5426 5419 break; 5420 + case 0x10ec0298: 5421 + spec->codec_variant = ALC269_TYPE_ALC298; 5422 + break; 5427 5423 case 0x10ec0255: 5428 5424 spec->codec_variant = ALC269_TYPE_ALC255; 5425 + break; 5426 + case 0x10ec0256: 5427 + spec->codec_variant = ALC269_TYPE_ALC256; 5429 5428 break; 5430 5429 } 5431 5430 ··· 6354 6341 { .id = 0x10ec0233, .name = "ALC233", .patch = patch_alc269 }, 6355 6342 { .id = 0x10ec0235, .name = "ALC233", .patch = patch_alc269 }, 6356 6343 { .id = 0x10ec0255, .name = "ALC255", .patch = patch_alc269 }, 6344 + { .id = 0x10ec0256, .name = "ALC256", .patch = patch_alc269 }, 6357 6345 { .id = 0x10ec0260, .name = "ALC260", .patch = patch_alc260 }, 6358 6346 { .id = 0x10ec0262, .name = "ALC262", .patch = patch_alc262 }, 6359 6347 { .id = 0x10ec0267, .name = "ALC267", .patch = patch_alc268 }, ··· 6374 6360 { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 }, 6375 6361 { .id = 0x10ec0292, .name = "ALC292", .patch = patch_alc269 }, 6376 6362 { .id = 0x10ec0293, .name = "ALC293", .patch = patch_alc269 }, 6363 + { .id = 0x10ec0298, .name = "ALC298", .patch = patch_alc269 }, 6377 6364 { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660", 6378 6365 .patch = patch_alc861 }, 6379 6366 { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
+1 -1
sound/pci/hda/patch_via.c
··· 137 137 spec->gen.indep_hp = 1; 138 138 spec->gen.keep_eapd_on = 1; 139 139 spec->gen.pcm_playback_hook = via_playback_pcm_hook; 140 - spec->gen.add_stereo_mix_input = 1; 140 + spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_AUTO; 141 141 return spec; 142 142 } 143 143
+1 -1
sound/soc/atmel/atmel_ssc_dai.c
··· 267 267 if (!ssc_p->dir_mask) { 268 268 if (ssc_p->initialized) { 269 269 /* Shutdown the SSC clock. */ 270 - pr_debug("atmel_ssc_dau: Stopping clock\n"); 270 + pr_debug("atmel_ssc_dai: Stopping clock\n"); 271 271 clk_disable(ssc_p->ssc->clk); 272 272 273 273 free_irq(ssc_p->ssc->irq, ssc_p);
+2
sound/soc/codecs/Kconfig
··· 520 520 521 521 config SND_SOC_RT5677 522 522 tristate 523 + select REGMAP_I2C 524 + select REGMAP_IRQ 523 525 524 526 config SND_SOC_RT5677_SPI 525 527 tristate
+6 -1
sound/soc/codecs/pcm512x-i2c.c
··· 24 24 const struct i2c_device_id *id) 25 25 { 26 26 struct regmap *regmap; 27 + struct regmap_config config = pcm512x_regmap; 27 28 28 - regmap = devm_regmap_init_i2c(i2c, &pcm512x_regmap); 29 + /* msb needs to be set to enable auto-increment of addresses */ 30 + config.read_flag_mask = 0x80; 31 + config.write_flag_mask = 0x80; 32 + 33 + regmap = devm_regmap_init_i2c(i2c, &config); 29 34 if (IS_ERR(regmap)) 30 35 return PTR_ERR(regmap); 31 36
+4
sound/soc/codecs/rt5645.c
··· 2209 2209 int gpio_state, jack_type = 0; 2210 2210 unsigned int val; 2211 2211 2212 + if (!gpio_is_valid(rt5645->pdata.hp_det_gpio)) { 2213 + dev_err(codec->dev, "invalid gpio\n"); 2214 + return -EINVAL; 2215 + } 2212 2216 gpio_state = gpio_get_value(rt5645->pdata.hp_det_gpio); 2213 2217 2214 2218 dev_dbg(codec->dev, "gpio = %d(%d)\n", rt5645->pdata.hp_det_gpio,
+5 -5
sound/soc/intel/sst/sst_acpi.c
··· 43 43 #include "sst.h" 44 44 45 45 struct sst_machines { 46 - char codec_id[32]; 46 + char *codec_id; 47 47 char board[32]; 48 48 char machine[32]; 49 49 void (*machine_quirk)(void); ··· 277 277 dev_dbg(dev, "ACPI device id: %x\n", dev_id); 278 278 279 279 plat_dev = platform_device_register_data(dev, mach->pdata->platform, -1, NULL, 0); 280 - if (plat_dev == NULL) { 280 + if (IS_ERR(plat_dev)) { 281 281 dev_err(dev, "Failed to create machine device: %s\n", mach->pdata->platform); 282 - return -ENODEV; 282 + return PTR_ERR(plat_dev); 283 283 } 284 284 285 285 /* Create platform device for sst machine driver */ 286 286 mdev = platform_device_register_data(dev, mach->machine, -1, NULL, 0); 287 - if (mdev == NULL) { 287 + if (IS_ERR(mdev)) { 288 288 dev_err(dev, "Failed to create machine device: %s\n", mach->machine); 289 - return -ENODEV; 289 + return PTR_ERR(mdev); 290 290 } 291 291 292 292 ret = sst_alloc_drv_context(&ctx, dev, dev_id);
+2
sound/soc/samsung/i2s.c
··· 1261 1261 ret = -ENOMEM; 1262 1262 goto err; 1263 1263 } 1264 + 1265 + sec_dai->variant_regs = pri_dai->variant_regs; 1264 1266 sec_dai->dma_playback.dma_addr = regs_base + I2STXDS; 1265 1267 sec_dai->dma_playback.ch_name = "tx-sec"; 1266 1268
+12 -3
sound/usb/mixer_maps.c
··· 333 333 {} 334 334 }; 335 335 336 - static const struct usbmix_name_map kef_x300a_map[] = { 337 - { 10, NULL }, /* firmware locks up (?) when we try to access this FU */ 336 + /* some (all?) SCMS USB3318 devices are affected by a firmware lock up 337 + * when anything attempts to access FU 10 (control) 338 + */ 339 + static const struct usbmix_name_map scms_usb3318_map[] = { 340 + { 10, NULL }, 338 341 { 0 } 339 342 }; 340 343 ··· 437 434 .map = ebox44_map, 438 435 }, 439 436 { 437 + /* KEF X300A */ 440 438 .id = USB_ID(0x27ac, 0x1000), 441 - .map = kef_x300a_map, 439 + .map = scms_usb3318_map, 440 + }, 441 + { 442 + /* Arcam rPAC */ 443 + .id = USB_ID(0x25c4, 0x0003), 444 + .map = scms_usb3318_map, 442 445 }, 443 446 { 0 } /* terminator */ 444 447 };
+1 -1
sound/usb/mixer_scarlett.c
··· 655 655 .names = NULL 656 656 }, 657 657 658 - .num_controls = 0, 658 + .num_controls = 9, 659 659 .controls = { 660 660 { .num = 0, .type = SCARLETT_OUTPUTS, .name = "Monitor" }, 661 661 { .num = 1, .type = SCARLETT_OUTPUTS, .name = "Headphone" },
+3 -2
sound/usb/quirks.c
··· 1245 1245 1246 1246 /* XMOS based USB DACs */ 1247 1247 switch (chip->usb_id) { 1248 - /* iFi Audio micro/nano iDSD */ 1249 - case USB_ID(0x20b1, 0x3008): 1248 + case USB_ID(0x20b1, 0x3008): /* iFi Audio micro/nano iDSD */ 1249 + case USB_ID(0x20b1, 0x2008): /* Matrix Audio X-Sabre */ 1250 + case USB_ID(0x20b1, 0x300a): /* Matrix Audio Mini-i Pro */ 1250 1251 if (fp->altsetting == 2) 1251 1252 return SNDRV_PCM_FMTBIT_DSD_U32_BE; 1252 1253 break;