diff options
| -rw-r--r-- | sound/pci/hda/hda_controller.c | 3 | ||||
| -rw-r--r-- | sound/pci/hda/hda_intel.c | 12 | ||||
| -rw-r--r-- | sound/pci/hda/hda_priv.h | 1 | ||||
| -rw-r--r-- | sound/pci/hda/hda_tegra.c | 2 | ||||
| -rw-r--r-- | sound/pci/hda/patch_hdmi.c | 2 |
5 files changed, 12 insertions, 8 deletions
diff --git a/sound/pci/hda/hda_controller.c b/sound/pci/hda/hda_controller.c index 480bbddbd801..6df04d91c93c 100644 --- a/sound/pci/hda/hda_controller.c +++ b/sound/pci/hda/hda_controller.c | |||
| @@ -193,7 +193,8 @@ azx_assign_device(struct azx *chip, struct snd_pcm_substream *substream) | |||
| 193 | dsp_unlock(azx_dev); | 193 | dsp_unlock(azx_dev); |
| 194 | return azx_dev; | 194 | return azx_dev; |
| 195 | } | 195 | } |
| 196 | if (!res) | 196 | if (!res || |
| 197 | (chip->driver_caps & AZX_DCAPS_REVERSE_ASSIGN)) | ||
| 197 | res = azx_dev; | 198 | res = azx_dev; |
| 198 | } | 199 | } |
| 199 | dsp_unlock(azx_dev); | 200 | dsp_unlock(azx_dev); |
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index b6b4e71a0b0b..83cd19017cf3 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
| @@ -227,7 +227,7 @@ enum { | |||
| 227 | /* quirks for Intel PCH */ | 227 | /* quirks for Intel PCH */ |
| 228 | #define AZX_DCAPS_INTEL_PCH_NOPM \ | 228 | #define AZX_DCAPS_INTEL_PCH_NOPM \ |
| 229 | (AZX_DCAPS_SCH_SNOOP | AZX_DCAPS_BUFSIZE | \ | 229 | (AZX_DCAPS_SCH_SNOOP | AZX_DCAPS_BUFSIZE | \ |
| 230 | AZX_DCAPS_COUNT_LPIB_DELAY) | 230 | AZX_DCAPS_COUNT_LPIB_DELAY | AZX_DCAPS_REVERSE_ASSIGN) |
| 231 | 231 | ||
| 232 | #define AZX_DCAPS_INTEL_PCH \ | 232 | #define AZX_DCAPS_INTEL_PCH \ |
| 233 | (AZX_DCAPS_INTEL_PCH_NOPM | AZX_DCAPS_PM_RUNTIME) | 233 | (AZX_DCAPS_INTEL_PCH_NOPM | AZX_DCAPS_PM_RUNTIME) |
| @@ -596,7 +596,7 @@ static int azx_suspend(struct device *dev) | |||
| 596 | struct azx *chip = card->private_data; | 596 | struct azx *chip = card->private_data; |
| 597 | struct azx_pcm *p; | 597 | struct azx_pcm *p; |
| 598 | 598 | ||
| 599 | if (chip->disabled) | 599 | if (chip->disabled || chip->init_failed) |
| 600 | return 0; | 600 | return 0; |
| 601 | 601 | ||
| 602 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); | 602 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); |
| @@ -628,7 +628,7 @@ static int azx_resume(struct device *dev) | |||
| 628 | struct snd_card *card = dev_get_drvdata(dev); | 628 | struct snd_card *card = dev_get_drvdata(dev); |
| 629 | struct azx *chip = card->private_data; | 629 | struct azx *chip = card->private_data; |
| 630 | 630 | ||
| 631 | if (chip->disabled) | 631 | if (chip->disabled || chip->init_failed) |
| 632 | return 0; | 632 | return 0; |
| 633 | 633 | ||
| 634 | if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) { | 634 | if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) { |
| @@ -665,7 +665,7 @@ static int azx_runtime_suspend(struct device *dev) | |||
| 665 | struct snd_card *card = dev_get_drvdata(dev); | 665 | struct snd_card *card = dev_get_drvdata(dev); |
| 666 | struct azx *chip = card->private_data; | 666 | struct azx *chip = card->private_data; |
| 667 | 667 | ||
| 668 | if (chip->disabled) | 668 | if (chip->disabled || chip->init_failed) |
| 669 | return 0; | 669 | return 0; |
| 670 | 670 | ||
| 671 | if (!(chip->driver_caps & AZX_DCAPS_PM_RUNTIME)) | 671 | if (!(chip->driver_caps & AZX_DCAPS_PM_RUNTIME)) |
| @@ -692,7 +692,7 @@ static int azx_runtime_resume(struct device *dev) | |||
| 692 | struct hda_codec *codec; | 692 | struct hda_codec *codec; |
| 693 | int status; | 693 | int status; |
| 694 | 694 | ||
| 695 | if (chip->disabled) | 695 | if (chip->disabled || chip->init_failed) |
| 696 | return 0; | 696 | return 0; |
| 697 | 697 | ||
| 698 | if (!(chip->driver_caps & AZX_DCAPS_PM_RUNTIME)) | 698 | if (!(chip->driver_caps & AZX_DCAPS_PM_RUNTIME)) |
| @@ -729,7 +729,7 @@ static int azx_runtime_idle(struct device *dev) | |||
| 729 | struct snd_card *card = dev_get_drvdata(dev); | 729 | struct snd_card *card = dev_get_drvdata(dev); |
| 730 | struct azx *chip = card->private_data; | 730 | struct azx *chip = card->private_data; |
| 731 | 731 | ||
| 732 | if (chip->disabled) | 732 | if (chip->disabled || chip->init_failed) |
| 733 | return 0; | 733 | return 0; |
| 734 | 734 | ||
| 735 | if (!power_save_controller || | 735 | if (!power_save_controller || |
diff --git a/sound/pci/hda/hda_priv.h b/sound/pci/hda/hda_priv.h index 4a7cb01fa912..e9d1a5762a55 100644 --- a/sound/pci/hda/hda_priv.h +++ b/sound/pci/hda/hda_priv.h | |||
| @@ -186,6 +186,7 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 }; | |||
| 186 | #define AZX_DCAPS_BUFSIZE (1 << 21) /* no buffer size alignment */ | 186 | #define AZX_DCAPS_BUFSIZE (1 << 21) /* no buffer size alignment */ |
| 187 | #define AZX_DCAPS_ALIGN_BUFSIZE (1 << 22) /* buffer size alignment */ | 187 | #define AZX_DCAPS_ALIGN_BUFSIZE (1 << 22) /* buffer size alignment */ |
| 188 | #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23) /* BDLE in 4k boundary */ | 188 | #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23) /* BDLE in 4k boundary */ |
| 189 | #define AZX_DCAPS_REVERSE_ASSIGN (1 << 24) /* Assign devices in reverse order */ | ||
| 189 | #define AZX_DCAPS_COUNT_LPIB_DELAY (1 << 25) /* Take LPIB as delay */ | 190 | #define AZX_DCAPS_COUNT_LPIB_DELAY (1 << 25) /* Take LPIB as delay */ |
| 190 | #define AZX_DCAPS_PM_RUNTIME (1 << 26) /* runtime PM support */ | 191 | #define AZX_DCAPS_PM_RUNTIME (1 << 26) /* runtime PM support */ |
| 191 | #define AZX_DCAPS_I915_POWERWELL (1 << 27) /* HSW i915 powerwell support */ | 192 | #define AZX_DCAPS_I915_POWERWELL (1 << 27) /* HSW i915 powerwell support */ |
diff --git a/sound/pci/hda/hda_tegra.c b/sound/pci/hda/hda_tegra.c index a366ba9293a8..358414da6418 100644 --- a/sound/pci/hda/hda_tegra.c +++ b/sound/pci/hda/hda_tegra.c | |||
| @@ -236,6 +236,7 @@ disable_hda: | |||
| 236 | return rc; | 236 | return rc; |
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | #ifdef CONFIG_PM_SLEEP | ||
| 239 | static void hda_tegra_disable_clocks(struct hda_tegra *data) | 240 | static void hda_tegra_disable_clocks(struct hda_tegra *data) |
| 240 | { | 241 | { |
| 241 | clk_disable_unprepare(data->hda2hdmi_clk); | 242 | clk_disable_unprepare(data->hda2hdmi_clk); |
| @@ -243,7 +244,6 @@ static void hda_tegra_disable_clocks(struct hda_tegra *data) | |||
| 243 | clk_disable_unprepare(data->hda_clk); | 244 | clk_disable_unprepare(data->hda_clk); |
| 244 | } | 245 | } |
| 245 | 246 | ||
| 246 | #ifdef CONFIG_PM_SLEEP | ||
| 247 | /* | 247 | /* |
| 248 | * power management | 248 | * power management |
| 249 | */ | 249 | */ |
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 4fe876b65fda..ba4ca52072ff 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c | |||
| @@ -3337,6 +3337,7 @@ static const struct hda_codec_preset snd_hda_preset_hdmi[] = { | |||
| 3337 | { .id = 0x10de0051, .name = "GPU 51 HDMI/DP", .patch = patch_nvhdmi }, | 3337 | { .id = 0x10de0051, .name = "GPU 51 HDMI/DP", .patch = patch_nvhdmi }, |
| 3338 | { .id = 0x10de0060, .name = "GPU 60 HDMI/DP", .patch = patch_nvhdmi }, | 3338 | { .id = 0x10de0060, .name = "GPU 60 HDMI/DP", .patch = patch_nvhdmi }, |
| 3339 | { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, | 3339 | { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, |
| 3340 | { .id = 0x10de0070, .name = "GPU 70 HDMI/DP", .patch = patch_nvhdmi }, | ||
| 3340 | { .id = 0x10de0071, .name = "GPU 71 HDMI/DP", .patch = patch_nvhdmi }, | 3341 | { .id = 0x10de0071, .name = "GPU 71 HDMI/DP", .patch = patch_nvhdmi }, |
| 3341 | { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, | 3342 | { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, |
| 3342 | { .id = 0x11069f80, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi }, | 3343 | { .id = 0x11069f80, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi }, |
| @@ -3394,6 +3395,7 @@ MODULE_ALIAS("snd-hda-codec-id:10de0044"); | |||
| 3394 | MODULE_ALIAS("snd-hda-codec-id:10de0051"); | 3395 | MODULE_ALIAS("snd-hda-codec-id:10de0051"); |
| 3395 | MODULE_ALIAS("snd-hda-codec-id:10de0060"); | 3396 | MODULE_ALIAS("snd-hda-codec-id:10de0060"); |
| 3396 | MODULE_ALIAS("snd-hda-codec-id:10de0067"); | 3397 | MODULE_ALIAS("snd-hda-codec-id:10de0067"); |
| 3398 | MODULE_ALIAS("snd-hda-codec-id:10de0070"); | ||
| 3397 | MODULE_ALIAS("snd-hda-codec-id:10de0071"); | 3399 | MODULE_ALIAS("snd-hda-codec-id:10de0071"); |
| 3398 | MODULE_ALIAS("snd-hda-codec-id:10de8001"); | 3400 | MODULE_ALIAS("snd-hda-codec-id:10de8001"); |
| 3399 | MODULE_ALIAS("snd-hda-codec-id:11069f80"); | 3401 | MODULE_ALIAS("snd-hda-codec-id:11069f80"); |
