|
@@ -128,7 +128,7 @@ static int bdl_pos_adj[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = -1};
|
|
static int probe_mask[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = -1};
|
|
static int probe_mask[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = -1};
|
|
static int probe_only[SNDRV_CARDS];
|
|
static int probe_only[SNDRV_CARDS];
|
|
static int jackpoll_ms[SNDRV_CARDS];
|
|
static int jackpoll_ms[SNDRV_CARDS];
|
|
-static bool single_cmd;
|
|
|
|
|
|
+static int single_cmd = -1;
|
|
static int enable_msi = -1;
|
|
static int enable_msi = -1;
|
|
#ifdef CONFIG_SND_HDA_PATCH_LOADER
|
|
#ifdef CONFIG_SND_HDA_PATCH_LOADER
|
|
static char *patch[SNDRV_CARDS];
|
|
static char *patch[SNDRV_CARDS];
|
|
@@ -157,7 +157,7 @@ module_param_array(probe_only, int, NULL, 0444);
|
|
MODULE_PARM_DESC(probe_only, "Only probing and no codec initialization.");
|
|
MODULE_PARM_DESC(probe_only, "Only probing and no codec initialization.");
|
|
module_param_array(jackpoll_ms, int, NULL, 0444);
|
|
module_param_array(jackpoll_ms, int, NULL, 0444);
|
|
MODULE_PARM_DESC(jackpoll_ms, "Ms between polling for jack events (default = 0, using unsol events only)");
|
|
MODULE_PARM_DESC(jackpoll_ms, "Ms between polling for jack events (default = 0, using unsol events only)");
|
|
-module_param(single_cmd, bool, 0444);
|
|
|
|
|
|
+module_param(single_cmd, bint, 0444);
|
|
MODULE_PARM_DESC(single_cmd, "Use single command to communicate with codecs "
|
|
MODULE_PARM_DESC(single_cmd, "Use single command to communicate with codecs "
|
|
"(for debugging only).");
|
|
"(for debugging only).");
|
|
module_param(enable_msi, bint, 0444);
|
|
module_param(enable_msi, bint, 0444);
|
|
@@ -1596,7 +1596,11 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,
|
|
|
|
|
|
check_probe_mask(chip, dev);
|
|
check_probe_mask(chip, dev);
|
|
|
|
|
|
- chip->single_cmd = single_cmd;
|
|
|
|
|
|
+ if (single_cmd < 0) /* allow fallback to single_cmd at errors */
|
|
|
|
+ chip->fallback_to_single_cmd = 1;
|
|
|
|
+ else /* explicitly set to single_cmd or not */
|
|
|
|
+ chip->single_cmd = single_cmd;
|
|
|
|
+
|
|
azx_check_snoop_available(chip);
|
|
azx_check_snoop_available(chip);
|
|
|
|
|
|
if (bdl_pos_adj[dev] < 0)
|
|
if (bdl_pos_adj[dev] < 0)
|