Received: by 2002:a05:6359:6284:b0:131:369:b2a3 with SMTP id se4csp2716589rwb; Mon, 7 Aug 2023 02:09:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGTyGB8f70QgkEHefe/nUcsqQ2PU1LOPQpqzXxuHr9vfeYgtYRyqGZdsh4VnFN8VYTU+r3p X-Received: by 2002:a05:6870:4694:b0:1be:cc5b:6ce with SMTP id a20-20020a056870469400b001becc5b06cemr10140591oap.20.1691399387450; Mon, 07 Aug 2023 02:09:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691399387; cv=none; d=google.com; s=arc-20160816; b=ckug2CxVNKzQRP0vIgZYJkgvtPLNGvRsEIev8h5c8w2GbFRvTMZIMZhgPMLjMhSf4a btzCu5+bQSyvQAYenSPh28UBLRDzx+5SQpunJjElOpaDE0lFZFNDxCiSPnpyIZlyGPI3 eOFT3uRFqceXvcmSyor2J4D1w6A65HCIFye1U/mpbdZWlb9mZcKcstC/xjgnysuswvF/ 5bMWTHLsoYAdGerOWdnInLnewGej3Tj4VbOaGF2flGKDbc3DHwsMnjUF0W2uMqs/qZDF KgrRb4xvtZNBk0dUKj7ihaKeU/MlPvdx3xdyERnS+np4p5K0U3lNadijgUUSxW6CB8fe Q4uw== 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=vH3sOR1tA7f+9kkHoU3tm6BO4Uj+1i2MOZZN8nyKZAk=; fh=BXAiiC6ODviiKux+ApVm3yEF4jvtq/D5DoYh0OgxZlk=; b=BNDULtJr9uUPmOJq/bYeQdZASYiXptETidLmZmj7dSdwV9VAJNJm5Oc2lTBzdYTKyI yyjtAVHMdSMiuhu5jlbbNYr1K+s05P4C/IH38oO0L2LA+fmPvCGSKMawM6IteQDpfxdj RHs7AyRZOmNFu5liAgDh3OOf6HWyb2vtMHk09B4CzyRUGBEsex/Ne+kfNcntE/JxLFpd 4hCQXSgaOL3QdscwliTsW8fLZdoQFL1wr35/k3e28JB0xt1/QDY6C/60TLDxJCWnG6Y/ ulNTjvtRt/BOikQSgQy9RdjPLDx2Hq7VD7pu2vVnzY2ym74/msVgzn/wU31L3Qhc0PTn aH4g== 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 x20-20020a17090ab01400b00267b910cb37si5440648pjq.52.2023.08.07.02.09.35; Mon, 07 Aug 2023 02:09:47 -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 S231277AbjHGJBu (ORCPT + 99 others); Mon, 7 Aug 2023 05:01:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43300 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230466AbjHGJBj (ORCPT ); Mon, 7 Aug 2023 05:01:39 -0400 Received: from mblankhorst.nl (lankhorst.se [IPv6:2a02:2308:0:7ec:e79c:4e97:b6c4:f0ae]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F42F199D for ; Mon, 7 Aug 2023 02:01:26 -0700 (PDT) From: Maarten Lankhorst To: alsa-devel@alsa-project.org Cc: 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 , linux-kernel@vger.kernel.org, sound-open-firmware@alsa-project.org, Maarten Lankhorst Subject: [PATCH v3 3/9] ALSA: hda/i915: Add an allow_modprobe argument to snd_hdac_i915_init Date: Mon, 7 Aug 2023 11:00:39 +0200 Message-Id: <20230807090045.198993-4-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230807090045.198993-1-maarten.lankhorst@linux.intel.com> References: <20230807090045.198993-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,SPF_HELO_NONE,SPF_NONE 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 Xe is a new GPU driver that re-uses the display (and sound) code from i915. It's no longer possible to load i915, as the GPU can be driven by the xe driver instead. The new behavior will return -EPROBE_DEFER, and wait for a compatible driver to be loaded instead of modprobing i915. Converting all drivers at the same time is a lot of work, instead we will convert each user one by one. Changes since v1: - Use dev_err_probe to set a probe reason for debugfs' deferred_devices. Signed-off-by: Maarten Lankhorst Reviewed-by: Kai Vehmanen --- include/sound/hda_i915.h | 4 ++-- sound/hda/hdac_i915.c | 8 ++++---- sound/pci/hda/hda_intel.c | 2 +- sound/soc/intel/avs/core.c | 2 +- sound/soc/intel/skylake/skl.c | 2 +- sound/soc/sof/intel/hda-codec.c | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/sound/hda_i915.h b/include/sound/hda_i915.h index 6b79614a893b..f91bd6636086 100644 --- a/include/sound/hda_i915.h +++ b/include/sound/hda_i915.h @@ -9,12 +9,12 @@ #ifdef CONFIG_SND_HDA_I915 void snd_hdac_i915_set_bclk(struct hdac_bus *bus); -int snd_hdac_i915_init(struct hdac_bus *bus); +int snd_hdac_i915_init(struct hdac_bus *bus, bool allow_modprobe); #else static inline void snd_hdac_i915_set_bclk(struct hdac_bus *bus) { } -static inline int snd_hdac_i915_init(struct hdac_bus *bus) +static inline int snd_hdac_i915_init(struct hdac_bus *bus, bool allow_modprobe) { return -ENODEV; } diff --git a/sound/hda/hdac_i915.c b/sound/hda/hdac_i915.c index c32709fa4115..961fcd3397f4 100644 --- a/sound/hda/hdac_i915.c +++ b/sound/hda/hdac_i915.c @@ -155,7 +155,7 @@ static int i915_gfx_present(struct pci_dev *hdac_pci) * * Returns zero for success or a negative error code. */ -int snd_hdac_i915_init(struct hdac_bus *bus) +int snd_hdac_i915_init(struct hdac_bus *bus, bool allow_modprobe) { struct drm_audio_component *acomp; int err; @@ -171,7 +171,7 @@ int snd_hdac_i915_init(struct hdac_bus *bus) acomp = bus->audio_component; if (!acomp) return -ENODEV; - if (!acomp->ops) { + if (allow_modprobe && !acomp->ops) { if (!IS_ENABLED(CONFIG_MODULES) || !request_module("i915")) { /* 60s timeout */ @@ -180,9 +180,9 @@ int snd_hdac_i915_init(struct hdac_bus *bus) } } if (!acomp->ops) { - dev_info(bus->dev, "couldn't bind with audio component\n"); + int err = allow_modprobe ? -ENODEV : -EPROBE_DEFER; snd_hdac_acomp_exit(bus); - return -ENODEV; + return dev_err_probe(bus->dev, err, "couldn't bind with audio component\n"); } return 0; } diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 0d2d6bc6c75e..11cf9907f039 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -2277,7 +2277,7 @@ static int azx_probe_continue(struct azx *chip) /* bind with i915 if needed */ if (chip->driver_caps & AZX_DCAPS_I915_COMPONENT) { - err = snd_hdac_i915_init(bus); + 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; diff --git a/sound/soc/intel/avs/core.c b/sound/soc/intel/avs/core.c index 637501850728..3311a6f14200 100644 --- a/sound/soc/intel/avs/core.c +++ b/sound/soc/intel/avs/core.c @@ -191,7 +191,7 @@ static void avs_hda_probe_work(struct work_struct *work) pm_runtime_set_active(bus->dev); /* clear runtime_error flag */ - ret = snd_hdac_i915_init(bus); + ret = snd_hdac_i915_init(bus, true); if (ret < 0) dev_info(bus->dev, "i915 init unsuccessful: %d\n", ret); diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index 998bd0232cf1..4d93b8690467 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -791,7 +791,7 @@ static int skl_i915_init(struct hdac_bus *bus) * The HDMI codec is in GPU so we need to ensure that it is powered * up and ready for probe */ - err = snd_hdac_i915_init(bus); + err = snd_hdac_i915_init(bus, true); if (err < 0) return err; diff --git a/sound/soc/sof/intel/hda-codec.c b/sound/soc/sof/intel/hda-codec.c index 8a5e99a898ec..f1fd5b44aaac 100644 --- a/sound/soc/sof/intel/hda-codec.c +++ b/sound/soc/sof/intel/hda-codec.c @@ -415,7 +415,7 @@ int hda_codec_i915_init(struct snd_sof_dev *sdev) return 0; /* i915 exposes a HDA codec for HDMI audio */ - ret = snd_hdac_i915_init(bus); + ret = snd_hdac_i915_init(bus, true); if (ret < 0) return ret; -- 2.39.2