Received: by 2002:a05:6358:7058:b0:131:369:b2a3 with SMTP id 24csp8479011rwp; Wed, 19 Jul 2023 10:19:18 -0700 (PDT) X-Google-Smtp-Source: APBJJlFiexN8NBhV9wdTKBoTn8rY2ogG3UwYD/O/x9d2gavo7QUnXwI44HKKJRGUBHsNk3y0GF0b X-Received: by 2002:a17:906:1054:b0:992:33ba:2eb4 with SMTP id j20-20020a170906105400b0099233ba2eb4mr3020119ejj.71.1689787158362; Wed, 19 Jul 2023 10:19:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689787158; cv=none; d=google.com; s=arc-20160816; b=YpV8XzeeTbTBwSEnpJOcvA0S4/vYNifTE9K1HAO6kgYKmssfPXMaEvJO9ph2uxj2kX D0Sosv6aSYQq8Mi7peEQoclGBBHfsq4Tf2dwj40e92vUDz+LJHMbdj8LefxS5lVf/0Ej uKXAxyvs/abgrpHMDgCOmIOS+ulSwGbVjEsRXWGp1sHGd0orGFALoEKUirBd2htckG+b dJxzoS1toQ5j4feETxjS9aDvaqnBHQr4B3hkEOsVRIzSseTVhUS1jkKCIpitR9dNgIop 4tk6WUHTkJ+wcLvPXcKi+dkLbovHenJcTzMgU3Cun/AE6b1bT4WjaMlmQQtsjF24xrjp /pzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=CEh1UgwPHOvgwReD9fISTO3bRz3ylf+xbvtOOembNX0=; fh=dxIo+wp2Pw2j7LKHXvog8zBrh2HlBFjJ3CkiHF3U0aM=; b=NPWjylInfWd9wFd4o8xxEsX1X1FZv+c5pJfanqc/FWVcz8oew6rP33cgSNTPh0g2gq Hj6D5r1L1m7O4GZQrbMPMM8aDYS1ccBy9q+GBAZWAyusKLHEbjxRMAzQoWPFZ98MVsR4 eF2+/l+ANGRFPHU/B1MOJorOmHMUJOWDB8RfZL/V2fs1mO/VVh4R1EJWrIgmmB9Tac2E KEX93Wjmg1mnyIdVjyebsVw37OS8QRfLKc99HAWQ2pcE5GpPOyjl/gLMsaZIgJrGuTtX kuVCUCBisgvBuWzNlhJ6aemsJNMEqK+CnPX7B4nr+Ogn6Ku8idRIW66c1NzD3M77qLNj FyAg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id rk9-20020a170907214900b00993a68a3af6si3205300ejb.511.2023.07.19.10.18.54; Wed, 19 Jul 2023 10:19:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230252AbjGSQmK (ORCPT + 99 others); Wed, 19 Jul 2023 12:42:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230243AbjGSQmE (ORCPT ); Wed, 19 Jul 2023 12:42:04 -0400 Received: from mblankhorst.nl (lankhorst.se [IPv6:2a02:2308:0:7ec:e79c:4e97:b6c4:f0ae]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B97191FE8 for ; Wed, 19 Jul 2023 09:41:56 -0700 (PDT) From: Maarten Lankhorst To: alsa-devel@alsa-project.org Cc: sound-open-firmware@alsa-project.org, linux-kernel@vger.kernel.org, Maarten Lankhorst , Jaroslav Kysela , Takashi Iwai , Cezary Rojewski , Pierre-Louis Bossart , Liam Girdwood , Peter Ujfalusi , Bard Liao , Ranjani Sridharan , Kai Vehmanen , Mark Brown , Daniel Baluta Subject: [PATCH v2 7/9] ALSA: hda/intel: Move snd_hdac_i915_init to before probe_work. Date: Wed, 19 Jul 2023 18:41:39 +0200 Message-Id: <20230719164141.228073-8-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230719164141.228073-1-maarten.lankhorst@linux.intel.com> References: <20230719164141.228073-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that we can use -EPROBE_DEFER, it's no longer required to spin off the snd_hdac_i915_init into a workqueue. Use the -EPROBE_DEFER mechanism instead, which must be returned in the probe function. Changes since v1: - Use dev_err_probe() - Don't move probed_devs bitmap unnecessarily. (tiwai) - Move snd_hdac_i915_init slightly upward, to ensure it's always initialised before vga-switcheroo is called. Signed-off-by: Maarten Lankhorst --- sound/pci/hda/hda_intel.c | 59 ++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 11cf9907f039f..e3128d7d742e7 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -2147,6 +2147,36 @@ static int azx_probe(struct pci_dev *pci, pci_set_drvdata(pci, card); +#ifdef CONFIG_SND_HDA_I915 + /* bind with i915 if needed */ + if (chip->driver_caps & AZX_DCAPS_I915_COMPONENT) { + err = snd_hdac_i915_init(azx_bus(chip), false); + if (err < 0) { + /* if the controller is bound only with HDMI/DP + * (for HSW and BDW), we need to abort the probe; + * for other chips, still continue probing as other + * codecs can be on the same link. + */ + if (CONTROLLER_IN_GPU(pci)) { + dev_err_probe(card->dev, err, + "HSW/BDW HD-audio HDMI/DP requires binding with gfx driver\n"); + + goto out_free; + } else { + /* don't bother any longer */ + chip->driver_caps &= ~AZX_DCAPS_I915_COMPONENT; + } + } + + /* HSW/BDW controllers need this power */ + if (CONTROLLER_IN_GPU(pci)) + hda->need_i915_power = true; + } +#else + if (CONTROLLER_IN_GPU(pci)) + dev_err(card->dev, "Haswell/Broadwell HDMI/DP must build in CONFIG_SND_HDA_I915\n"); +#endif + err = register_vga_switcheroo(chip); if (err < 0) { dev_err(card->dev, "Error registering vga_switcheroo client\n"); @@ -2174,11 +2204,6 @@ static int azx_probe(struct pci_dev *pci, } #endif /* CONFIG_SND_HDA_PATCH_LOADER */ -#ifndef CONFIG_SND_HDA_I915 - if (CONTROLLER_IN_GPU(pci)) - dev_err(card->dev, "Haswell/Broadwell HDMI/DP must build in CONFIG_SND_HDA_I915\n"); -#endif - if (schedule_probe) schedule_delayed_work(&hda->probe_work, 0); @@ -2275,30 +2300,6 @@ static int azx_probe_continue(struct azx *chip) to_hda_bus(bus)->bus_probing = 1; hda->probe_continued = 1; - /* bind with i915 if needed */ - if (chip->driver_caps & AZX_DCAPS_I915_COMPONENT) { - err = snd_hdac_i915_init(bus, true); - if (err < 0) { - /* if the controller is bound only with HDMI/DP - * (for HSW and BDW), we need to abort the probe; - * for other chips, still continue probing as other - * codecs can be on the same link. - */ - if (CONTROLLER_IN_GPU(pci)) { - dev_err(chip->card->dev, - "HSW/BDW HD-audio HDMI/DP requires binding with gfx driver\n"); - goto out_free; - } else { - /* don't bother any longer */ - chip->driver_caps &= ~AZX_DCAPS_I915_COMPONENT; - } - } - - /* HSW/BDW controllers need this power */ - if (CONTROLLER_IN_GPU(pci)) - hda->need_i915_power = true; - } - /* Request display power well for the HDA controller or codec. For * Haswell/Broadwell, both the display HDA controller and codec need * this power. For other platforms, like Baytrail/Braswell, only the -- 2.39.2