Received: by 2002:a05:6358:701b:b0:131:369:b2a3 with SMTP id 27csp74188rwo; Fri, 21 Jul 2023 08:42:43 -0700 (PDT) X-Google-Smtp-Source: APBJJlEHpcLglEyOqX0iSNgVantG82Q5KVUah1fpNDQZLv831xt5zZxa1SKAMFqR/CDFPyrKS5kp X-Received: by 2002:a05:6a20:bc8a:b0:135:2f12:7662 with SMTP id fx10-20020a056a20bc8a00b001352f127662mr1602184pzb.33.1689954162988; Fri, 21 Jul 2023 08:42:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689954162; cv=none; d=google.com; s=arc-20160816; b=R25oebbMNOqIa7gF1TarOMSyb7BljSeQhx8cDmVgg6tkq915vEtLEPiYBxIT3c6TiD +6o6+1qXn9IH992abN+A6cSL0Xe/5yMOQQuzbRdx7vhJHZhd/55BKpmWX44hScD/6l8i gJSh7LcTCeuoKUXXMUbqxdw5HpFuPKfBbjHC5rBfidILAK2DtHIQVuKTjAHR3zj+C3vu 6AGJ/GlnM4SqPeOHfK+yCBqbs2jeN0KLOiQ+A7IeS5S+E888X/04cr759q+Roj6NXYGV f+8CzvIYzJpX/KTxVpe48C++9XDwLs+R2JqyhqM5TBPjwwxlFGC7p457cFJj7Z7RfH3B 14FA== 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 :dkim-signature; bh=+qN9Ba/zcDYNDAt+9zFzeFPD1ff0RraaH+W+sIKImwQ=; fh=SlosecZATRUXmC/bbEWM8TNuSSdsEnMKt8FFeHbK2kw=; b=iHWDxwB9Aq/bknsK9NaDrazKb427di2blw9JI9iLw5HPKhjJedavxIX9Gq8rUX/rJG MAoe+iIu5wCpAU9h8pzjMMEhsfZm7GUkt+Zcp6EY9vv+94uW/UfJDlNVjLrhJt2uI8FJ aqe2xMuzTAUSORTr/VnngkQopCehTmPIMkW0zf5f9mzpyC5a1ebKlrOGRN5m78j4fnpD aDK4YNCEarUc9xAUBgNAhUOMgduXNLeZpG0J8jFot8o+gdZRgpJz33KBGnd5UGKo4Bza IVtMp+7svskJqawpMHA6xAWLg/RR/JekQfYe7wfVxNtyiee7Biu8X+OjG2b0/wvOzbK+ /duQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cirrus.com header.s=PODMain02222019 header.b=dc6SJ2FN; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=cirrus.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id lk4-20020a17090308c400b001b9d03d0bdesi3497546plb.79.2023.07.21.08.42.29; Fri, 21 Jul 2023 08:42:42 -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; dkim=pass header.i=@cirrus.com header.s=PODMain02222019 header.b=dc6SJ2FN; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=cirrus.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231860AbjGUPUG (ORCPT + 99 others); Fri, 21 Jul 2023 11:20:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231935AbjGUPTY (ORCPT ); Fri, 21 Jul 2023 11:19:24 -0400 Received: from mx0b-001ae601.pphosted.com (mx0a-001ae601.pphosted.com [67.231.149.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9D0CC35BB for ; Fri, 21 Jul 2023 08:18:58 -0700 (PDT) Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.17.1.22/8.17.1.22) with ESMTP id 36LDls9i007648; Fri, 21 Jul 2023 10:18:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding:content-type; s= PODMain02222019; bh=+qN9Ba/zcDYNDAt+9zFzeFPD1ff0RraaH+W+sIKImwQ=; b= dc6SJ2FNsOsplhrRCQK5mo1yVlloyi/xd9hLI1NZBJgVoWb/q6RMMrqvJnoigRVD JycnpUXvOHJhX4q18xI5E/1fEqREDB4szx3XJH5IM1ha82PPIp1201u+Lzd/QhBL 01RnyybVNvU9vTQ382SPJPPiZr6pEZF1HDXrXzCQDcvgdUB4fzz8c84NdRbBVywZ 5nGztQkraLJlw+4AufS1xHjM2j4faOlrZ7nx/96yhSA0d5rJZg+FPsFj9GoglC1A WfKqHXAaJjz0kp31mbOA1iUhBX8HSG9zxj0WYDoM8sPs4pxh+8Q4KDPKYsOvQueC c3Civ8DTIFLqEP8D832QQw== Received: from ediex01.ad.cirrus.com ([84.19.233.68]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 3rus62y8g9-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 Jul 2023 10:18:31 -0500 (CDT) Received: from ediex01.ad.cirrus.com (198.61.84.80) by ediex01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.30; Fri, 21 Jul 2023 16:18:28 +0100 Received: from ediswmail.ad.cirrus.com (198.61.86.93) by ediex01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server id 15.2.1118.30 via Frontend Transport; Fri, 21 Jul 2023 16:18:28 +0100 Received: from sbinding-cirrus-dsktp2.ad.cirrus.com (unknown [198.90.238.219]) by ediswmail.ad.cirrus.com (Postfix) with ESMTP id 07EFD356D; Fri, 21 Jul 2023 15:18:28 +0000 (UTC) From: Stefan Binding To: Mark Brown , Jaroslav Kysela , Takashi Iwai CC: , , , Stefan Binding Subject: [PATCH v2 10/11] ALSA: hda: cs35l41: Add device_link between HDA and cs35l41_hda Date: Fri, 21 Jul 2023 16:18:15 +0100 Message-ID: <20230721151816.2080453-11-sbinding@opensource.cirrus.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230721151816.2080453-1-sbinding@opensource.cirrus.com> References: <20230721151816.2080453-1-sbinding@opensource.cirrus.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-GUID: 2dsoBclobFEZFRn5mXdmJz0zok46XmqN X-Proofpoint-ORIG-GUID: 2dsoBclobFEZFRn5mXdmJz0zok46XmqN X-Proofpoint-Spam-Reason: safe X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham 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 To ensure consistency between the HDA core and the CS35L41 HDA driver, add a device_link between them. This ensures that the HDA core will suspend first, and resume second, meaning the amp driver will not miss any events from the playback hook from the HDA core during system suspend and resume. Signed-off-by: Stefan Binding --- sound/pci/hda/cs35l41_hda.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c index 70aa819cfbd64..175378cdf9dfa 100644 --- a/sound/pci/hda/cs35l41_hda.c +++ b/sound/pci/hda/cs35l41_hda.c @@ -1063,6 +1063,7 @@ static int cs35l41_hda_bind(struct device *dev, struct device *master, void *mas { struct cs35l41_hda *cs35l41 = dev_get_drvdata(dev); struct hda_component *comps = master_data; + unsigned int sleep_flags; int ret = 0; if (!comps || cs35l41->index < 0 || cs35l41->index >= HDA_MAX_COMPONENTS) @@ -1102,6 +1103,11 @@ static int cs35l41_hda_bind(struct device *dev, struct device *master, void *mas mutex_unlock(&cs35l41->fw_mutex); + sleep_flags = lock_system_sleep(); + if (!device_link_add(&comps->codec->core.dev, cs35l41->dev, DL_FLAG_STATELESS)) + dev_warn(dev, "Unable to create device link\n"); + unlock_system_sleep(sleep_flags); + pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); @@ -1112,9 +1118,14 @@ static void cs35l41_hda_unbind(struct device *dev, struct device *master, void * { struct cs35l41_hda *cs35l41 = dev_get_drvdata(dev); struct hda_component *comps = master_data; + unsigned int sleep_flags; - if (comps[cs35l41->index].dev == dev) + if (comps[cs35l41->index].dev == dev) { memset(&comps[cs35l41->index], 0, sizeof(*comps)); + sleep_flags = lock_system_sleep(); + device_link_remove(&comps->codec->core.dev, cs35l41->dev); + unlock_system_sleep(sleep_flags); + } } static const struct component_ops cs35l41_hda_comp_ops = { -- 2.34.1