From patchwork Thu Mar 23 05:44:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73808 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2732904wrt; Wed, 22 Mar 2023 22:31:59 -0700 (PDT) X-Google-Smtp-Source: AK7set/C/0b6H9FrN0tFpvd4dXNNTAEIfL9HoGvPIYrEbx7S2ii68MwzmixCMO+509O+ehBaTOVN X-Received: by 2002:a62:6181:0:b0:626:2ce1:263c with SMTP id v123-20020a626181000000b006262ce1263cmr5041947pfb.5.1679549519393; Wed, 22 Mar 2023 22:31:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679549519; cv=none; d=google.com; s=arc-20160816; b=nlOc/WPigUflK/1sxUE5S7d1RuIStEwiI5wmS9o7vo3Ai2GSF/tZXcOV5hWZ9v236+ RaR5xr6qlrpQ5fj8wax+68XkVi9Y9kDszoLZYxcP5mG4jIJuQZH8qftQEcEGLiE1H396 +au6ePveOCsUXoKIf+fvq7BhMnIMPpi8GOsNSAXL///8iFK2L1kdoYWFH53g0ZGhTkPi dQjqR6oi9t8IUTqLa8kqJC5CetI8bSaWX1NtAjsx7yzvdfPjTFI7qdsP2ovYRu4sZFPA /jZUzCcDtzMCoZZXF7MzXvlq8ge3dc7YZcmYwqjCHM1Ej8axKraIyWvdlSgvX6NYUgpy tP2A== 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=FktBpxZV/I9F5UUbiFOjF/xR6fFmOp86wFgewCDZAVo=; b=kw9iloT76KPzzzIh/uyX0fqEATqdJFqzHfqgMuHTgTq9Q/3NVzr8M1Y1f+PejjDWJ6 axS0ST/MKcDbQYzMv76S1leBCTcJ2/CXfVyHwec2QvHtpKss75tdviz3JhzzT5J17nvR qhG7CPw3A4Gw6ieOOR6xbO9GnvsujRytd3BOGM+MWdzCg1/OP3CwEI4WGweEXgcyKdqX RpAAXafu/466nRcNoBgoQbms3EQo7J1FkDtZuVKJXIksJzprAbuSBlxNQMS1Xq8BKi0w RHbCQ79jdjGf59zPd61NLaMRj1fWqiqkufc2WzvgKO1ouvdn7MeBmb1BILosIHaV9242 OJ1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=nBme8f7x; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r4-20020a63d904000000b004fc25f024b7si17817270pgg.169.2023.03.22.22.31.47; Wed, 22 Mar 2023 22:31:59 -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=@intel.com header.s=Intel header.b=nBme8f7x; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230291AbjCWF35 (ORCPT + 99 others); Thu, 23 Mar 2023 01:29:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230257AbjCWF3x (ORCPT ); Thu, 23 Mar 2023 01:29:53 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4361E20050 for ; Wed, 22 Mar 2023 22:29:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549393; x=1711085393; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jSG2veXKUxcXyV1zpGUhKNlxMdGkTNUGl0TfqUCdrR0=; b=nBme8f7xb3aJdQdLHuZgKrfnYVrdNcJFQ9TlMVY6E9hTT2N0EGtOZSOx acrZhMuIQ+HTjkrzZxkbIyQ+SC6edvPE31UQSLym/DZFv8uyHT6i2MzjW t+5AGPlgT1WPqKvIBiSN7NV8cdyAD1Cppdwrx+b7ImskRGOPfZ9LjFhGj Xs2R7eoxomi8YI6R16wk7lsAD3AbrnWcknfLz31XOhpvrwFQdXz/j2JdG Ubzm4qDmxGTWvwOjbQFyaMx/O21yvBBwyrk/hHmCOQPdpPGU5Ncbyzhkq gVHoD+m7VzCqNDHfjKuM3MUTp67033mGp0D9iGccSiVRiDYxOjbBr2651 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779279" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779279" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:29:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675566986" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675566986" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:29:50 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 01/20] ASoC: SOF: Intel: shim: add enum for ACE 2.0 IP used in LunarLake Date: Thu, 23 Mar 2023 13:44:33 +0800 Message-Id: <20230323054452.1543233-2-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761135316852001157?= X-GMAIL-MSGID: =?utf-8?q?1761135316852001157?= From: Pierre-Louis Bossart Add the new enum needed for SoundWire IP selection. The LunarLake PCI descriptors and DSP parts will be added at a later time. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao Acked-by: Mark Brown --- sound/soc/sof/intel/shim.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sound/soc/sof/intel/shim.h b/sound/soc/sof/intel/shim.h index 48428ccbcfe0..207df48e27cf 100644 --- a/sound/soc/sof/intel/shim.h +++ b/sound/soc/sof/intel/shim.h @@ -21,6 +21,7 @@ enum sof_intel_hw_ip_version { SOF_INTEL_CAVS_2_0, /* IceLake, JasperLake */ SOF_INTEL_CAVS_2_5, /* TigerLake, AlderLake */ SOF_INTEL_ACE_1_0, /* MeteorLake */ + SOF_INTEL_ACE_2_0, /* LunarLake */ }; /* From patchwork Thu Mar 23 05:44:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73820 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2736817wrt; Wed, 22 Mar 2023 22:46:52 -0700 (PDT) X-Google-Smtp-Source: AK7set9x2M7rZCSUhDgpYVwZ2l3F0FJbd+2SGzKoT57zNpD8VAv3d2ySmJVw3r3lilN8jpmkTRkL X-Received: by 2002:a17:902:f681:b0:1a1:c9f7:cec5 with SMTP id l1-20020a170902f68100b001a1c9f7cec5mr7882267plg.2.1679550412412; Wed, 22 Mar 2023 22:46:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679550412; cv=none; d=google.com; s=arc-20160816; b=TRTd+Egh7Cr65f2vtDB9cIFkKDguv9CPQaTflYI5xjgaxxXc4LQNrmB3TEYC1AMnAv oNrMy2x/ub3DShk9Epjwx769By5dMG4L0ML8N4d4MGOYK9Q2GWBpsC5Ds4Ff7/eOsVcy nIua4SO+QJRxQ5OtITtpj0MamDhVel1so8MzjSLXV1kTL0Q5c3TaTrBAkEz6shSz3e2K 2n2rN3Tyh12NJN8f+9dONl6knc8dv5AqNrZQG4OWSf1nB9+SIiDkDyaJLHTQuxsBdI2F 3x92gc0XbfL9iAtFCd7VC03LBi3buHdNfG9U0J3baimb2rGQsssLaqgRf7fbOk1e/fyc qUDw== 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=IZ0mGxaLYGOffziYtAZK5gSywCy0C41cgOE4ff2V4QY=; b=mxTz5B2cR9M5WJTqC0NFWjCxb6WOn1CaUChTObS03EXCwpXMos2u3QIL7phSSufSJd GvmoBeelchBlWaPHW4pFjvVBsBjw5dr6Lv5ZGHBRhxJCvJFZl8l8qF4uadZpzhugPoAg yIkFShCVd74tts2jPp5QR/x51YmpY1lFBaHTDaCXJeKUvYD83J89qrIpNDRGdNV6yiJt w/tZtLlmjYTFn9WnSEWIgm2HXlQHgi5v5ClDapx6wEGB7ElsV/RCTeu3TUMJ/yz5e42N LwN0fB8bXgjXXYST4widtA3tvZy8cZ0LwqZBq8t45afWVTbXTHZ43TNtey3ONVTGHpB3 urgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ip5WctNa; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bf8-20020a170902b90800b0019abdf99d41si17221929plb.157.2023.03.22.22.46.39; Wed, 22 Mar 2023 22:46:52 -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=@intel.com header.s=Intel header.b=ip5WctNa; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230321AbjCWFao (ORCPT + 99 others); Thu, 23 Mar 2023 01:30:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58116 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230314AbjCWFad (ORCPT ); Thu, 23 Mar 2023 01:30:33 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37A9821952 for ; Wed, 22 Mar 2023 22:30:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549415; x=1711085415; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yZvrzQd70YjHlJlmhsCqEtarCH/SM9v+ndjTDzenB98=; b=ip5WctNaZ6yniPU5HRt5p+BCkDwq2LlRSXZQGvsbfT90Ge1Pob0dm2w/ mjUbhjVoH55bQzKLy8kNRg27pRADrDYNyBrZ1pdrxcXwWqoHdAf29+B9I sVvY4U0TwrIjw0dc6y2gmbjFEtZ0pnHleFawUQmDups9xim2pxsnjjn9Q 6PjNQcdDDJ9FARBifShbClMttfIS9RHKRx4wLG22ucDn9sDaYIAUANKY7 DWDYL5ab9LrOSC9rfQlWfojairJidAbaJ2qKCP21oElkz8Zggypcr97oF XgU03U0V+nCGqiFJ5+p07DnesLZzo5bQsZbfs2Oldz2Ob7gkW6nsIEkIj w==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779287" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779287" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:29:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675566989" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675566989" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:29:53 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 02/20] soundwire: intel: add ACE2.x SHIM definitions Date: Thu, 23 Mar 2023 13:44:34 +0800 Message-Id: <20230323054452.1543233-3-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761136253317716178?= X-GMAIL-MSGID: =?utf-8?q?1761136253317716178?= From: Pierre-Louis Bossart With the HDaudio extended link integration, the SHIM and IP registers are split in blocks a) SHIM generic registers b) IP registers (same offsets for Cadence IP as before) c) SHIM vendor-specific registers Add offsets and definitions as defined in the hardware specifications. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- include/linux/soundwire/sdw_intel.h | 75 +++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h index 207701aeeb47..8e6183e029fa 100644 --- a/include/linux/soundwire/sdw_intel.h +++ b/include/linux/soundwire/sdw_intel.h @@ -7,6 +7,10 @@ #include #include +/********************************************************************* + * cAVS and ACE1.x definitions + *********************************************************************/ + #define SDW_SHIM_BASE 0x2C000 #define SDW_ALH_BASE 0x2C800 #define SDW_SHIM_BASE_ACE 0x38000 @@ -101,6 +105,77 @@ #define SDW_ALH_STRMZCFG_DMAT GENMASK(7, 0) #define SDW_ALH_STRMZCFG_CHN GENMASK(19, 16) +/********************************************************************* + * ACE2.x definitions for SHIM registers - only accessible when the + * HDAudio extended link LCTL.SPA/CPA = 1. + *********************************************************************/ +/* x variable is link index */ +#define SDW_SHIM2_GENERIC_BASE(x) (0x00030000 + 0x8000 * (x)) +#define SDW_IP_BASE(x) (0x00030100 + 0x8000 * (x)) +#define SDW_SHIM2_VS_BASE(x) (0x00036000 + 0x8000 * (x)) + +/* SHIM2 Generic Registers */ +/* Read-only capabilities */ +#define SDW_SHIM2_LECAP 0x00 +#define SDW_SHIM2_LECAP_HDS BIT(0) /* unset -> Host mode */ +#define SDW_SHIM2_LECAP_MLC GENMASK(3, 1) /* Number of Lanes */ + +/* PCM Stream capabilities */ +#define SDW_SHIM2_PCMSCAP 0x10 +#define SDW_SHIM2_PCMSCAP_ISS GENMASK(3, 0) /* Input-only streams */ +#define SDW_SHIM2_PCMSCAP_OSS GENMASK(7, 4) /* Output-only streams */ +#define SDW_SHIM2_PCMSCAP_BSS GENMASK(12, 8) /* Bidirectional streams */ + +/* Read-only PCM Stream Channel Count, y variable is stream */ +#define SDW_SHIM2_PCMSYCHC(y) (0x14 + (0x4 * (y))) +#define SDW_SHIM2_PCMSYCHC_CS GENMASK(3, 0) /* Channels Supported */ + +/* PCM Stream Channel Map */ +#define SDW_SHIM2_PCMSYCHM(y) (0x16 + (0x4 * (y))) +#define SDW_SHIM2_PCMSYCHM_LCHAN GENMASK(3, 0) /* Lowest channel used by the FIFO port */ +#define SDW_SHIM2_PCMSYCHM_HCHAN GENMASK(7, 4) /* Lowest channel used by the FIFO port */ +#define SDW_SHIM2_PCMSYCHM_STRM GENMASK(13, 8) /* HDaudio stream tag */ +#define SDW_SHIM2_PCMSYCHM_DIR BIT(15) /* HDaudio stream direction */ + +/* SHIM2 vendor-specific registers */ +#define SDW_SHIM2_INTEL_VS_LVSCTL 0x04 +#define SDW_SHIM2_INTEL_VS_LVSCTL_FCG BIT(26) +#define SDW_SHIM2_INTEL_VS_LVSCTL_MLCS GENMASK(29, 27) +#define SDW_SHIM2_INTEL_VS_LVSCTL_DCGD BIT(30) +#define SDW_SHIM2_INTEL_VS_LVSCTL_ICGD BIT(31) + +#define SDW_SHIM2_MLCS_XTAL_CLK 0x0 +#define SDW_SHIM2_MLCS_CARDINAL_CLK 0x1 +#define SDW_SHIM2_MLCS_AUDIO_PLL_CLK 0x2 +#define SDW_SHIM2_MLCS_MCLK_INPUT_CLK 0x3 +#define SDW_SHIM2_MLCS_WOV_RING_OSC_CLK 0x4 + +#define SDW_SHIM2_INTEL_VS_WAKEEN 0x08 +#define SDW_SHIM2_INTEL_VS_WAKEEN_PWE BIT(0) + +#define SDW_SHIM2_INTEL_VS_WAKESTS 0x0A +#define SDW_SHIM2_INTEL_VS_WAKEEN_PWS BIT(0) + +#define SDW_SHIM2_INTEL_VS_IOCTL 0x0C +#define SDW_SHIM2_INTEL_VS_IOCTL_MIF BIT(0) +#define SDW_SHIM2_INTEL_VS_IOCTL_CO BIT(1) +#define SDW_SHIM2_INTEL_VS_IOCTL_COE BIT(2) +#define SDW_SHIM2_INTEL_VS_IOCTL_DO BIT(3) +#define SDW_SHIM2_INTEL_VS_IOCTL_DOE BIT(4) +#define SDW_SHIM2_INTEL_VS_IOCTL_BKE BIT(5) +#define SDW_SHIM2_INTEL_VS_IOCTL_WPDD BIT(6) +#define SDW_SHIM2_INTEL_VS_IOCTL_ODC BIT(7) +#define SDW_SHIM2_INTEL_VS_IOCTL_CIBD BIT(8) +#define SDW_SHIM2_INTEL_VS_IOCTL_DIBD BIT(9) +#define SDW_SHIM2_INTEL_VS_IOCTL_HAMIFD BIT(10) + +#define SDW_SHIM2_INTEL_VS_ACTMCTL 0x0E +#define SDW_SHIM2_INTEL_VS_ACTMCTL_DACTQE BIT(0) +#define SDW_SHIM2_INTEL_VS_ACTMCTL_DODS BIT(1) +#define SDW_SHIM2_INTEL_VS_ACTMCTL_DODSE BIT(2) +#define SDW_SHIM2_INTEL_VS_ACTMCTL_DOAIS GENMASK(4, 3) +#define SDW_SHIM2_INTEL_VS_ACTMCTL_DOAISE BIT(5) + /** * struct sdw_intel_stream_params_data: configuration passed during * the @params_stream callback, e.g. for interaction with DSP From patchwork Thu Mar 23 05:44:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73809 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2733019wrt; Wed, 22 Mar 2023 22:32:19 -0700 (PDT) X-Google-Smtp-Source: AK7set9P2u2R/n0CdexWgPJ3Zk/YJ95/gmAEDMYoeg7zZHavQqdeLD16Vg4LhDC/HDPs3w4c1kEE X-Received: by 2002:a05:6a20:cd46:b0:db:20cb:fdd3 with SMTP id hn6-20020a056a20cd4600b000db20cbfdd3mr1656045pzb.24.1679549539640; Wed, 22 Mar 2023 22:32:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679549539; cv=none; d=google.com; s=arc-20160816; b=yanNtL39lEgywQwUtmYGmdn660WG/k6WZ6/+21rSwJYKu8587wsFOsK6zSbXbVsNQy CnyjKl7jRjuv8YNPKfzM693Dh/lkI1pjcnQZSNkBAx+zjRQClg2k3fJR0BTMlIyibq5t /arIyqYFxTGC3k9FYdRdvw763AfM5mlyh1xRENJbJakyQwAly7+otboke+HkBBadLxjM jo6qkTBwS+0Y1e3zjiQtSIctllnhTF6HM45sS4SACO5Fc6uiJ1wq7KIJKnfolP3tP8Qw WTm39uL8uPvWZMVg+5IKskyFbgAvlvA5dADRMKG1ntLWuVbsnltWEPQRB/43639oy0Qc QzeQ== 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=5xPRb4PqyxsgK4bcewCF6mD1VdCY80DDzSsl52jtUAo=; b=nYzYg6C2dzIlayI1/Aom+jFn3n9bqg56c8T7SD/y7Eq3B2q0Qo1DFurtixyYIcrTwc Y6QHQg+qmMThaWjAvumOcZTwqXTxz+SPrMCDu6r4rgPMYQErqpDuhg7kT819fQcDHmmM zmVPWOg7bXB1V94qPds5DM6TDL9wSo0AWMrI8ztp71BgsWFhOA4VuHAsIHz+t7KaGeDM /SVqRJY0e1n3+lw/qOzf4381Qn7Oez59Tg+j4oZNGDvRGr2/pkCYkbrUQMWEO1NxTIM2 K6CQ7F8maHHRfBo71Far5flEurVJq0kF0gdkqhAFrIbH/WFi2clrrU1e+GTFD0vMiRma 3o5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=SRy8m4Pn; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x5-20020a654145000000b004fbb899417dsi16838393pgp.851.2023.03.22.22.32.06; Wed, 22 Mar 2023 22:32:19 -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=@intel.com header.s=Intel header.b=SRy8m4Pn; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229603AbjCWFat (ORCPT + 99 others); Thu, 23 Mar 2023 01:30:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230191AbjCWFag (ORCPT ); Thu, 23 Mar 2023 01:30:36 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 538F12211B for ; Wed, 22 Mar 2023 22:30:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549417; x=1711085417; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QfbLjJIQPJg7lVSuxR7cbrpfZiSh+vhV76tbkAhqcic=; b=SRy8m4PnMQEK2DDZm2PqgXuaQOU5QDBGmlXNj+E0+Uf9hyKmfZV4wsRN TCyBj603elTq48KKGwS5pIqHdU5uQeqhuHRvIkp67NXtsWTO+KbdkrS40 VEbNi0ImdV7U3M4EhTeFJbnJ9+syX6N+O/EFCp3quv8yV2T5nV7Heau6X 0ndEyi/ve6Vuq6A72ZpLGPeGbLfM/h5BhZ5livPLXRE1A89BsekO0Zs8X etoi9NZ5M2NspReiMrjXEfLkiKNqbkWxRnxwwyDelFwTUVnmSKHQVvzIv kitxk3HUyH9ZSj0uOVxJ2BnrOJo2n+mcWchTG0fIYMHTcnA/VflIIT/T0 w==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779297" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779297" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:29:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675566992" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675566992" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:29:55 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 03/20] soundwire: intel_ace2x: add empty new ops for LunarLake Date: Thu, 23 Mar 2023 13:44:35 +0800 Message-Id: <20230323054452.1543233-4-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761135337831834602?= X-GMAIL-MSGID: =?utf-8?q?1761135337831834602?= From: Pierre-Louis Bossart The register map and programming sequences for the ACE2.x IP are completely different and need to be abstracted with a different set of callbacks. This initial patch adds a new file, follow-up patches will add each required callback. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/Makefile | 2 +- drivers/soundwire/intel_ace2x.c | 19 +++++++++++++++++++ include/linux/soundwire/sdw_intel.h | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 drivers/soundwire/intel_ace2x.c diff --git a/drivers/soundwire/Makefile b/drivers/soundwire/Makefile index 8038e840ac5b..d7212777a927 100644 --- a/drivers/soundwire/Makefile +++ b/drivers/soundwire/Makefile @@ -20,7 +20,7 @@ soundwire-cadence-y := cadence_master.o obj-$(CONFIG_SOUNDWIRE_CADENCE) += soundwire-cadence.o #Intel driver -soundwire-intel-y := intel.o intel_auxdevice.o intel_init.o dmi-quirks.o \ +soundwire-intel-y := intel.o intel_ace2x.o intel_auxdevice.o intel_init.o dmi-quirks.o \ intel_bus_common.o obj-$(CONFIG_SOUNDWIRE_INTEL) += soundwire-intel.o diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c new file mode 100644 index 000000000000..623e4fd7db91 --- /dev/null +++ b/drivers/soundwire/intel_ace2x.c @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) +// Copyright(c) 2023 Intel Corporation. All rights reserved. + +/* + * Soundwire Intel ops for LunarLake + */ + +#include +#include +#include +#include +#include +#include "cadence_master.h" +#include "bus.h" +#include "intel.h" + +const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { +}; +EXPORT_SYMBOL_NS(sdw_intel_lnl_hw_ops, SOUNDWIRE_INTEL); diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h index 8e6183e029fa..66687e83a94f 100644 --- a/include/linux/soundwire/sdw_intel.h +++ b/include/linux/soundwire/sdw_intel.h @@ -419,5 +419,6 @@ struct sdw_intel_hw_ops { }; extern const struct sdw_intel_hw_ops sdw_intel_cnl_hw_ops; +extern const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops; #endif From patchwork Thu Mar 23 05:44:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73810 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2733035wrt; Wed, 22 Mar 2023 22:32:23 -0700 (PDT) X-Google-Smtp-Source: AK7set+OMJNsJvuJ5YILqOiv/kK9SZb8p4wy8VtWSjBIjtqUUVZ3xVbCoTGTpqDZujAzhcCxZLAn X-Received: by 2002:a05:6a20:8b9d:b0:da:b484:1f43 with SMTP id m29-20020a056a208b9d00b000dab4841f43mr1810521pzh.32.1679549543170; Wed, 22 Mar 2023 22:32:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679549543; cv=none; d=google.com; s=arc-20160816; b=HM+qN0024RVnULDzBjX/IfrDsRJbPG7WziSl8drsNiX9WYJkHiVS9Jm6qx+U1vLRya KaZwgNCoHxlkSFu3usYdj5B3agAlAbPzkxktMviWm/YgB9R+uNB7EdlThExelqga7048 mf8O4vQVaozuyYNgkHnojvwcIw+W+/XlziO4p0r+M4rRlJQNq/FLBfXpsaj5LI/u4KCA PJIFh9/dkiqzohb3SVv9lotbTxfNQkAQxlz9UtgqxQW4d3bDfZQEf8xuRrpBPjyn2KZf BfMgUstyogrc3HMdw0i2WBKKWLo8GoX/RsVcbhMB71Cj13vSbslgOdHOGI0O5H5fgY94 Ja5w== 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=BuN332LlWRILto+6ZVpa1k75y8CzVdjyqN06NA3VucU=; b=gElwrRNFfzf88OnH88pQUIyoEXiwcC0uwr19PqB1v1cY/U4drAC/VQ2jKg+4ZwhG30 q6ofpaH2JWWSPMT84PxJWYQbs5WdlYjKEOgVon97QZvuFbXcc2eox6Q9dVyyGeOQSZlT r0FwKWjnYRw07T+JoDQfywPzUO4Mt9FfA+OOKLxtbK9Y0pW1BqCcXpGysWoAAD5hNZLj UUM37Zm6LAnSmSIcwbmj8CcLp2oaOZNVHxiNpA/ZL+JxuXlb2EXdD9I0+pDx0cwAQ9ii Jq0dn1MFSrLM9OhPmnO9POYHYdsvhou9/NXw6wgRMXT7EA9KlZ9JwIwH9lADOHUuGpUq eGfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=TJH7MxmD; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c5-20020a6566c5000000b0050c10b43533si17137067pgw.60.2023.03.22.22.32.09; Wed, 22 Mar 2023 22:32:23 -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=@intel.com header.s=Intel header.b=TJH7MxmD; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230365AbjCWFay (ORCPT + 99 others); Thu, 23 Mar 2023 01:30:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230282AbjCWFah (ORCPT ); Thu, 23 Mar 2023 01:30:37 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3116B222F8 for ; Wed, 22 Mar 2023 22:30:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549419; x=1711085419; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PSkxVbe47xbUsq7avOoYR8upNoWBv4uK3aM/asFJSEA=; b=TJH7MxmDgLy9N7rxTVfE6M+uszLK5LYTlsBPnH8sTYGXTJHPaXz2At8f yrUeijr4hBfnouts/YI3Po9w7sUW7ip/OrsdVLTEDbcU8q7YJSA4Rv+ow mL9ka/LNaMFFA8MJDA+bT+L0JWBJvx/JPuejJakfI9qTDfIbLm5ilhMR2 c0sFLz7kKjs9HCDyon+aP7+GtFOlwUnTzzhbJoqRca/G2phuQWW4ub2wx hh6iKH8617FX/HoC4MmV4MrW5FOxe2PX9XoHIx7R6HbcPB2lq9yqvDbpS 10L/mb4uZwoJ/xcU3yFLpoac0YOab0qBbMGewRoqzBB+UbnoOo/kGQv8k Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779308" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779308" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675566998" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675566998" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:29:58 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 04/20] soundwire/ASOC: Intel: update offsets for LunarLake Date: Thu, 23 Mar 2023 13:44:36 +0800 Message-Id: <20230323054452.1543233-5-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761135341570522888?= X-GMAIL-MSGID: =?utf-8?q?1761135341570522888?= From: Pierre-Louis Bossart The previous settings are not applicable, use a flag to determine what the register layout is. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao Acked-by: Mark Brown --- drivers/soundwire/intel.h | 2 ++ drivers/soundwire/intel_init.c | 14 ++++++++++---- include/linux/soundwire/sdw_intel.h | 2 ++ sound/soc/sof/intel/hda.c | 21 +++++++++++++++++---- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/drivers/soundwire/intel.h b/drivers/soundwire/intel.h index 09d479f2c77b..51aa42a5a824 100644 --- a/drivers/soundwire/intel.h +++ b/drivers/soundwire/intel.h @@ -11,6 +11,7 @@ * @mmio_base: mmio base of SoundWire registers * @registers: Link IO registers base * @shim: Audio shim pointer + * @shim_vs: Audio vendor-specific shim pointer * @alh: ALH (Audio Link Hub) pointer * @irq: Interrupt line * @ops: Shim callback ops @@ -28,6 +29,7 @@ struct sdw_intel_link_res { void __iomem *mmio_base; /* not strictly needed, useful for debug */ void __iomem *registers; void __iomem *shim; + void __iomem *shim_vs; void __iomem *alh; int irq; const struct sdw_intel_ops *ops; diff --git a/drivers/soundwire/intel_init.c b/drivers/soundwire/intel_init.c index cbe56b993c6c..e0023af9e0e1 100644 --- a/drivers/soundwire/intel_init.c +++ b/drivers/soundwire/intel_init.c @@ -63,10 +63,16 @@ static struct sdw_intel_link_dev *intel_link_dev_register(struct sdw_intel_res * link = &ldev->link_res; link->hw_ops = res->hw_ops; link->mmio_base = res->mmio_base; - link->registers = res->mmio_base + SDW_LINK_BASE - + (SDW_LINK_SIZE * link_id); - link->shim = res->mmio_base + res->shim_base; - link->alh = res->mmio_base + res->alh_base; + if (!res->ext) { + link->registers = res->mmio_base + SDW_LINK_BASE + + (SDW_LINK_SIZE * link_id); + link->shim = res->mmio_base + res->shim_base; + link->alh = res->mmio_base + res->alh_base; + } else { + link->registers = res->mmio_base + SDW_IP_BASE(link_id); + link->shim = res->mmio_base + SDW_SHIM2_GENERIC_BASE(link_id); + link->shim_vs = res->mmio_base + SDW_SHIM2_VS_BASE(link_id); + } link->ops = res->ops; link->dev = res->dev; diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h index 66687e83a94f..88eb5bf98140 100644 --- a/include/linux/soundwire/sdw_intel.h +++ b/include/linux/soundwire/sdw_intel.h @@ -323,6 +323,7 @@ struct sdw_intel_ctx { * DSP driver. The quirks are common for all links for now. * @shim_base: sdw shim base. * @alh_base: sdw alh base. + * @ext: extended HDaudio link support */ struct sdw_intel_res { const struct sdw_intel_hw_ops *hw_ops; @@ -337,6 +338,7 @@ struct sdw_intel_res { u32 clock_stop_quirks; u32 shim_base; u32 alh_base; + bool ext; }; /* diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c index 81c697e20108..db103524be4f 100644 --- a/sound/soc/sof/intel/hda.c +++ b/sound/soc/sof/intel/hda.c @@ -198,6 +198,7 @@ static int hda_sdw_acpi_scan(struct snd_sof_dev *sdev) static int hda_sdw_probe(struct snd_sof_dev *sdev) { + const struct sof_intel_dsp_desc *chip; struct sof_intel_hda_dev *hdev; struct sdw_intel_res res; void *sdw; @@ -206,10 +207,22 @@ static int hda_sdw_probe(struct snd_sof_dev *sdev) memset(&res, 0, sizeof(res)); - res.hw_ops = &sdw_intel_cnl_hw_ops; - res.mmio_base = sdev->bar[HDA_DSP_BAR]; - res.shim_base = hdev->desc->sdw_shim_base; - res.alh_base = hdev->desc->sdw_alh_base; + chip = get_chip_info(sdev->pdata); + if (chip->hw_ip_version < SOF_INTEL_ACE_2_0) { + res.mmio_base = sdev->bar[HDA_DSP_BAR]; + res.hw_ops = &sdw_intel_cnl_hw_ops; + res.shim_base = hdev->desc->sdw_shim_base; + res.alh_base = hdev->desc->sdw_alh_base; + res.ext = false; + } else { + res.mmio_base = sdev->bar[HDA_DSP_HDA_BAR]; + /* + * the SHIM and SoundWire register offsets are link-specific + * and will be determined when adding auxiliary devices + */ + res.hw_ops = &sdw_intel_lnl_hw_ops; + res.ext = true; + } res.irq = sdev->ipc_irq; res.handle = hdev->info.handle; res.parent = sdev->dev; From patchwork Thu Mar 23 05:44:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73827 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2738656wrt; Wed, 22 Mar 2023 22:54:04 -0700 (PDT) X-Google-Smtp-Source: AKy350a7Izp0lrC4RsdfuqgE7pQWhNikW9Yw3g2dTDnzf8hPY/TEfL2YBBChWVZJMslEMYz/fynT X-Received: by 2002:a17:902:d509:b0:19a:9859:be26 with SMTP id b9-20020a170902d50900b0019a9859be26mr3643704plg.22.1679550844332; Wed, 22 Mar 2023 22:54:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679550844; cv=none; d=google.com; s=arc-20160816; b=EEhNdZMdvuHykkUd+tob+KMlbWCXZ6i8t7RGj80eyHi2In7kH6JxFcrDM4UKHUeZiZ 7F2qdgmMaLpghj7X+BMNlK8B5vy1SAH5nZpk3EELbdodBsRGPOOEhcOFnoWWjrFjD4HK hcZtTXv+zvbzvcrcdDMrs8grkuVzcaIFNkz2dO16uIAdwW5KZwqp2S0Jnc62sGudrQb4 KIA2IbiHUg5L+Q3cyDczq6N7BxMwoGegaMEByXBY1sv+RrbnZfHBZ+Ula1LD8t/LgjS3 gEYnsnqruDoCnIfEjjnNS9Xmy6987zjQLPQLWZ0IjK0KGae+ZVUx1OuXFr0X7rSVxr96 /p0A== 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=LGvekhAMmG25EBKXGKN72W3vxxzZfKXXDbOvvOccDEI=; b=kosQJ+aXP9HoP231doDVxqxssCOZ5BgGkwxCoGNm6/m2ASYSB+yytTd1LX4XL5fQTG dIYZ/0MXqxPmeGc/Qd8pJo33GjdDm9sDRPZ882CUlIrAANRw8GQDo5mN1s6efm254Ul+ AyUZbZAQmDLJFcHkyzyyRoKjhqs4ss4tHd/ZY42gFIdZC4j+OgM6pYwGNxUdsyuK5egS qTorhuz5nwyw9EVz+jmJuc4VTTPF1nWf50iglI+V+f3+lAJafQLN1eL0UOnaW+XyPF+v FnGjacS/O0d5oHT0nBx9HMGBOtS/9C0mB8EDgpKVybxh6LdNok4/XDK+3tuRLTUaHdnM KqYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=eHHtpKfT; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i9-20020a17090332c900b001a1a252c4b1si19142100plr.13.2023.03.22.22.53.52; Wed, 22 Mar 2023 22:54:04 -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=@intel.com header.s=Intel header.b=eHHtpKfT; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229615AbjCWFbD (ORCPT + 99 others); Thu, 23 Mar 2023 01:31:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229945AbjCWFas (ORCPT ); Thu, 23 Mar 2023 01:30:48 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BA70F1F5F6 for ; Wed, 22 Mar 2023 22:30:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549433; x=1711085433; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+/puymD/Mrlt+6NzEm6hJ2HiO/2wdXeQEMmwt5RGD7o=; b=eHHtpKfT84MXE09OpuNB3HOIxy7VtUM+rv/RU/GzXkH9GgdFtka+JWBb j5saCuQ5Hgt+MugjY9tovrmkzzrFIdai/l+6xGse9+dvYgH/IdCJ9kc+y izknRQIwC//+HqssWidyH9mgNEHBeITVA+HV7xyShDe4Ery3MCagGPdqu 6cYNa0FKktt8xPjQ80/OTTehAxPiDTfd/SzQ9aifgabr6tnmB+poB1se7 4M3Yo1GJ4Le0Lwtgg/9kbfrvjI5V2lEZNhiblMj2owJ+ZuM8m8BPMzIxH PZm0TzkJ+btYobsw27KTa89E7rnEPNNcLjshYW1+q364X3PWq/LNRprJ7 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779320" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779320" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567014" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567014" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:00 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 05/20] soundwire: intel/cadence: set ip_offset at run-time Date: Thu, 23 Mar 2023 13:44:37 +0800 Message-Id: <20230323054452.1543233-6-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761136705989915671?= X-GMAIL-MSGID: =?utf-8?q?1761136705989915671?= From: Pierre-Louis Bossart Select relevant ip-offset depending on hardware version. This offset is used to access MCP_ or IP_MCP_ registers with a fixed offset. For existing platforms, the offset is exactly zero. Starting with LunarLake, the offset is 0x4000. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/cadence_master.h | 2 ++ drivers/soundwire/intel.h | 2 ++ drivers/soundwire/intel_auxdevice.c | 1 + drivers/soundwire/intel_init.c | 2 ++ 4 files changed, 7 insertions(+) diff --git a/drivers/soundwire/cadence_master.h b/drivers/soundwire/cadence_master.h index b653734085d9..b0f0bf90640b 100644 --- a/drivers/soundwire/cadence_master.h +++ b/drivers/soundwire/cadence_master.h @@ -14,6 +14,8 @@ */ #define CDNS_MCP_IP_MAX_CMD_LEN 32 +#define SDW_CADENCE_MCP_IP_OFFSET 0x4000 + /** * struct sdw_cdns_pdi: PDI (Physical Data Interface) instance * diff --git a/drivers/soundwire/intel.h b/drivers/soundwire/intel.h index 51aa42a5a824..1b23292bb8be 100644 --- a/drivers/soundwire/intel.h +++ b/drivers/soundwire/intel.h @@ -10,6 +10,7 @@ * @hw_ops: platform-specific ops * @mmio_base: mmio base of SoundWire registers * @registers: Link IO registers base + * @ip_offset: offset for MCP_IP registers * @shim: Audio shim pointer * @shim_vs: Audio vendor-specific shim pointer * @alh: ALH (Audio Link Hub) pointer @@ -28,6 +29,7 @@ struct sdw_intel_link_res { void __iomem *mmio_base; /* not strictly needed, useful for debug */ void __iomem *registers; + u32 ip_offset; void __iomem *shim; void __iomem *shim_vs; void __iomem *alh; diff --git a/drivers/soundwire/intel_auxdevice.c b/drivers/soundwire/intel_auxdevice.c index 5021be0f4158..b02cef4f4b66 100644 --- a/drivers/soundwire/intel_auxdevice.c +++ b/drivers/soundwire/intel_auxdevice.c @@ -144,6 +144,7 @@ static int intel_link_probe(struct auxiliary_device *auxdev, sdw->link_res = &ldev->link_res; cdns->dev = dev; cdns->registers = sdw->link_res->registers; + cdns->ip_offset = sdw->link_res->ip_offset; cdns->instance = sdw->instance; cdns->msg_count = 0; diff --git a/drivers/soundwire/intel_init.c b/drivers/soundwire/intel_init.c index e0023af9e0e1..43d339c6bcee 100644 --- a/drivers/soundwire/intel_init.c +++ b/drivers/soundwire/intel_init.c @@ -66,10 +66,12 @@ static struct sdw_intel_link_dev *intel_link_dev_register(struct sdw_intel_res * if (!res->ext) { link->registers = res->mmio_base + SDW_LINK_BASE + (SDW_LINK_SIZE * link_id); + link->ip_offset = 0; link->shim = res->mmio_base + res->shim_base; link->alh = res->mmio_base + res->alh_base; } else { link->registers = res->mmio_base + SDW_IP_BASE(link_id); + link->ip_offset = SDW_CADENCE_MCP_IP_OFFSET; link->shim = res->mmio_base + SDW_SHIM2_GENERIC_BASE(link_id); link->shim_vs = res->mmio_base + SDW_SHIM2_VS_BASE(link_id); } From patchwork Thu Mar 23 05:44:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73834 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2741082wrt; Wed, 22 Mar 2023 23:02:10 -0700 (PDT) X-Google-Smtp-Source: AK7set/il+gcnzdI1E03cAqMJkQ3Fo5O4LCivslPMvP2iAJReEmn92UU4yjs3oqnV0ZORLDXqnJg X-Received: by 2002:a17:90a:1a50:b0:23a:f4b4:630 with SMTP id 16-20020a17090a1a5000b0023af4b40630mr6548861pjl.23.1679551330449; Wed, 22 Mar 2023 23:02:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679551330; cv=none; d=google.com; s=arc-20160816; b=EqdMI+PkS0askM95DpYStUnPvKo840EF854V9RV87aKeP7wSR+awM1UAtxoA9ZP4Sg i0ixFcTqlMLD3s1f89wji35TYQ/sNvuf0o16H52PLqYTUPebn0synBgP0sWGXcAKdgIO 4Nsj/TVsAGy7/qU8uLx6K1UtoRgYGSAdzWMIuaXppL2BDLNgl5K/H190WGxLxskUvphM ffZfFu8v+zhz7eTuFvHUeo3YpVHs+Go+RzSuM6LhkY3oDzq0WOimXQXqtHXmOpDlreWN DptYMgEVBKd1s5wDSN3gyxOWMYWtEDGgnX9+//2jHTX1efiKQJ91PSdRNnf6UDHYx9Ke lP9w== 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=qptlxapxPvvOtWcr2J3IGvHNhFsSChxCfNPXuUBLeC0=; b=0G1YqW0vRu/TvcGN+AKSUuRmjwMADRpiae7F7sZUSAI3bcIvgE3vtKijSWFq3FdBU8 /b8hJGGcX5T/Ezk8jlDEk39SIZ20LxoKiiCeHEJI1UGbXpIYf/thE/dOy4Txghbcabse xiK8uMY/fVasb0Ts+RXOfAbRDYREro+niGyTo9Nv4INoN9gkzQPrZe4C2xmjVG3d95DM UX4TpFheCvL2bjE4dvgxSqjyXoCrrAGApm3M1ZnolwO09ep+3AugTw1fuS8lbmmqAmOU jqG4bLorLGaACAz5Clyq4cPhAgPAQkEpH2A/XojMq4+tTobDUEdXnIKsdX3SkHdlwkEn /Wuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=mq6DzXdh; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j3-20020a170903028300b001a1f5044b02si3032886plr.51.2023.03.22.23.01.58; Wed, 22 Mar 2023 23:02:10 -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=@intel.com header.s=Intel header.b=mq6DzXdh; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230410AbjCWFbF (ORCPT + 99 others); Thu, 23 Mar 2023 01:31:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59000 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230301AbjCWFat (ORCPT ); Thu, 23 Mar 2023 01:30:49 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 911C620A11 for ; Wed, 22 Mar 2023 22:30:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549436; x=1711085436; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yWd/ohEBxlz+ikb3Ien04/YoMLYTHRZPHh64E+lRlNo=; b=mq6DzXdhUIrNEC/ox9ZeggoD4KKN60+8KXPNa/f5Gfhmhnh6Oh2W3+Yk bgrVlUwU6wP72xzcbabAiYSx2NsVTwuWVP4wMdSUzsGV0uwTGh3S5Yt1G NxQipK7rOd1YSvXBIWUIUY2gzQZR2paeDVPTTwpjS1CUJVScqT6Bxjiwn o8+5gWrhdrsUai2x7Xa4Sre12FxWH65BIyr+7E2G5I52monNrRaisJqZ/ 1jYlZWDjHyVLdJJtjy/RsxrMeQCCVytkiFjn622gzJlyCBwDhsGlV3iLX 1cov93almavCTHwVK8OFNx+L/Cu/gYbzSO5W0Z+mlmkzsZUfu2RC0X+r8 A==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779334" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779334" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567025" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567025" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:03 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 06/20] ASoC/soundwire: intel: pass hdac_bus pointer for link management Date: Thu, 23 Mar 2023 13:44:38 +0800 Message-Id: <20230323054452.1543233-7-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761137216119130273?= X-GMAIL-MSGID: =?utf-8?q?1761137216119130273?= From: Pierre-Louis Bossart The hdac_bus pointer is used to access the extended link information and handle power management. Pass it from the SOF driver down to the auxiliary devices. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao Acked-by: Mark Brown --- drivers/soundwire/intel.h | 4 ++++ drivers/soundwire/intel_init.c | 2 ++ include/linux/soundwire/sdw_intel.h | 4 ++++ sound/soc/sof/intel/hda.c | 1 + 4 files changed, 11 insertions(+) diff --git a/drivers/soundwire/intel.h b/drivers/soundwire/intel.h index 1b23292bb8be..cf9db4906de4 100644 --- a/drivers/soundwire/intel.h +++ b/drivers/soundwire/intel.h @@ -4,6 +4,8 @@ #ifndef __SDW_INTEL_LOCAL_H #define __SDW_INTEL_LOCAL_H +struct hdac_bus; + /** * struct sdw_intel_link_res - Soundwire Intel link resource structure, * typically populated by the controller driver. @@ -23,6 +25,7 @@ * @link_mask: global mask needed for power-up/down sequences * @cdns: Cadence master descriptor * @list: used to walk-through all masters exposed by the same controller + * @hbus: hdac_bus pointer, needed for power management */ struct sdw_intel_link_res { const struct sdw_intel_hw_ops *hw_ops; @@ -42,6 +45,7 @@ struct sdw_intel_link_res { u32 link_mask; struct sdw_cdns *cdns; struct list_head list; + struct hdac_bus *hbus; }; struct sdw_intel { diff --git a/drivers/soundwire/intel_init.c b/drivers/soundwire/intel_init.c index 43d339c6bcee..c918d2b81cc3 100644 --- a/drivers/soundwire/intel_init.c +++ b/drivers/soundwire/intel_init.c @@ -84,6 +84,8 @@ static struct sdw_intel_link_dev *intel_link_dev_register(struct sdw_intel_res * link->shim_mask = &ctx->shim_mask; link->link_mask = ctx->link_mask; + link->hbus = res->hbus; + /* now follow the two-step init/add sequence */ ret = auxiliary_device_init(auxdev); if (ret < 0) { diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h index 88eb5bf98140..c4281aa06e2e 100644 --- a/include/linux/soundwire/sdw_intel.h +++ b/include/linux/soundwire/sdw_intel.h @@ -269,6 +269,8 @@ struct sdw_intel_slave_id { struct sdw_slave_id id; }; +struct hdac_bus; + /** * struct sdw_intel_ctx - context allocated by the controller * driver probe @@ -324,6 +326,7 @@ struct sdw_intel_ctx { * @shim_base: sdw shim base. * @alh_base: sdw alh base. * @ext: extended HDaudio link support + * @hbus: hdac_bus pointer, needed for power management */ struct sdw_intel_res { const struct sdw_intel_hw_ops *hw_ops; @@ -339,6 +342,7 @@ struct sdw_intel_res { u32 shim_base; u32 alh_base; bool ext; + struct hdac_bus *hbus; }; /* diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c index db103524be4f..22eba57bb3e6 100644 --- a/sound/soc/sof/intel/hda.c +++ b/sound/soc/sof/intel/hda.c @@ -229,6 +229,7 @@ static int hda_sdw_probe(struct snd_sof_dev *sdev) res.ops = &sdw_callback; res.dev = sdev->dev; res.clock_stop_quirks = sdw_clock_stop_quirks; + res.hbus = sof_to_bus(sdev); /* * ops and arg fields are not populated for now, From patchwork Thu Mar 23 05:44:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73811 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2733069wrt; Wed, 22 Mar 2023 22:32:29 -0700 (PDT) X-Google-Smtp-Source: AK7set8l7ULgkcKFo4sd2tu+nhqBZudwRNEePm1Ydf/hWGAE4+iq8nAXWzLFXZ+wIj1eo9n9oGeg X-Received: by 2002:a17:902:d4cc:b0:1a1:b52d:68e1 with SMTP id o12-20020a170902d4cc00b001a1b52d68e1mr6627815plg.32.1679549549696; Wed, 22 Mar 2023 22:32:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679549549; cv=none; d=google.com; s=arc-20160816; b=C0BlhNUAf5aR60e8UDyEK2TdvIxkIQz0UOzuuotdgj8AGwILMrh1HdNx3VQMod8gbm +ztPph4uDvhazcMMZLqq26gIeiIC5iiHWl+ciuUA00wVeHnJ0JIlPlNANZViW9RZ2PoB JzBTgC7J1iG2X+GdGHxfp6u5XPAhq+/KN2p8iBA9Ah3KSH/YAJvbN1uk6xaSnciNuU7L po3kGQ/h9P82W9RgHRvI78G+PkfcD2JPaZaFRJnLY5Xiw0f1YjVVjGAd8OQ29fZxyPtO EX1jiMCCBQkLYC6BR/G67qqDhBNuasvQfvKt2QA1Xcww7d412Z4hUtsXGoQOWxEPKkv4 VQtw== 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=egEOeknk3ct5mrQBAPnSZnHykbXok01mTcCxV3XOUdI=; b=ycwtCnoCb2BS/NqPEvdhcgF7B4K0r8g/7pQ6bAchTHMJHTSJIj8sEBZmkgc1DM5IRt Ycse9rw/NglAhnJ7/ODBElKTwmmEy7ytFYOmSi3hU9usbruNM/vyvNFNkyVYbiUWrbBh KLVKDdtdp0YorgAyPnX8vkdkMgdF52z7as3grhH7QGdDstMROKOwQELnlBGJmzpfqdRX OZM7TKy1lN73RdQ4r+qAXphkY98C04GfZKnX2kUYHlffqa4pT/O+k27ImMZi77EydKq6 xPyA4ISU8l8qi5N3OOWmVvkVOao0w/QyNSCJHr9VdKOrSAjEYxHgQm9kZVAO+dtajzv3 ihlg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="fe/uTfUe"; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j3-20020a170902758300b0019935e9b087si17174863pll.234.2023.03.22.22.32.17; Wed, 22 Mar 2023 22:32:29 -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=@intel.com header.s=Intel header.b="fe/uTfUe"; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230427AbjCWFbJ (ORCPT + 99 others); Thu, 23 Mar 2023 01:31:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59002 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230294AbjCWFat (ORCPT ); Thu, 23 Mar 2023 01:30:49 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 214A520D04 for ; Wed, 22 Mar 2023 22:30:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549437; x=1711085437; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xKsOmGgpfRTaoYi/C0Rex9lD4JYFMvLzVqkjtEvqo9k=; b=fe/uTfUezvkcNRFqw+G61L1hrEw/ZoGFcKh+V7ldpZPaY3OqqCIoW0js +gIruqpJTD2VcVXjNJSjWQ6eak265wLCIwzv7qzKtTlO+bNLrGEsdai5l CoDsCrEoJStvCsTNggAajj7Ua/168SjXPrNELTTVHxQrtDNpNDCcEUcje r9vtszwD8p6pujz5OccUaydn3CDKbHp/xMK6/ssT0ZK5idIr2NFu4abbL S9/NTft7LzIXys3cbfbdj1qatiSmRZnn5juRgGuw8ycA+TmaeEbzYiANA HGPBOFNqZUgi1mFtYTxBltuyX6Ore5n/1LTqfco+bCfH/Zf8egUu4QVoJ w==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779351" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779351" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567039" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567039" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:05 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 07/20] soundwire: intel: add eml_lock in the interface for new platforms Date: Thu, 23 Mar 2023 13:44:39 +0800 Message-Id: <20230323054452.1543233-8-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761135348661972495?= X-GMAIL-MSGID: =?utf-8?q?1761135348661972495?= From: Pierre-Louis Bossart In existing Intel/SoundWire systems, all the SoundWire configuration is 'self-contained', with the 'shim_lock' mutex used to protect access to shared registers in multi-link configurations. With the move of part of the SoundWire registers to the HDaudio multi-link structure, we need a unified lock. The hda-mlink implementation provides an 'eml_lock' that is used to protect shared registers such as LCTL and LSYNC, we can pass it to the SoundWire side. There is no issue with possible dangling pointers since the SoundWire auxiliary devices are children of the PCI device, so the 'eml_lock' cannot be removed while the SoundWire side is in use. This patch only adds the interface for now. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- include/linux/soundwire/sdw_intel.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h index c4281aa06e2e..bafc6f2554b0 100644 --- a/include/linux/soundwire/sdw_intel.h +++ b/include/linux/soundwire/sdw_intel.h @@ -327,6 +327,8 @@ struct sdw_intel_ctx { * @alh_base: sdw alh base. * @ext: extended HDaudio link support * @hbus: hdac_bus pointer, needed for power management + * @eml_lock: mutex protecting shared registers in the HDaudio multi-link + * space */ struct sdw_intel_res { const struct sdw_intel_hw_ops *hw_ops; @@ -343,6 +345,7 @@ struct sdw_intel_res { u32 alh_base; bool ext; struct hdac_bus *hbus; + struct mutex *eml_lock; }; /* From patchwork Thu Mar 23 05:44:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73817 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2736018wrt; Wed, 22 Mar 2023 22:43:52 -0700 (PDT) X-Google-Smtp-Source: AK7set96Dm1uHRneWFPs2tAV3FqzmVb7tKsriUQMGUgOSspbH8gLl5FJtgnL17dJjAB3UaAEaeB9 X-Received: by 2002:a17:902:7c11:b0:19f:1f0a:97f1 with SMTP id x17-20020a1709027c1100b0019f1f0a97f1mr4393447pll.30.1679550232200; Wed, 22 Mar 2023 22:43:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679550232; cv=none; d=google.com; s=arc-20160816; b=ig+3UuLmlb3jHK/wvIK+u2XvoM4RBJjLo8/X77CZF2AsRxtePyCBz0ZxnS0A4aByAN AnTkCN6XM6lxYHO7gcJFXhIxGZd614p3Qy63o1B9EjgoUqqZOThpJyVgWsT/yK5mHRA7 Pxi6YICkZxCgRQNgNxuaAB0NEj5tEdbiafnWxzSqaXq/xtqToaNcQ3c3HnfUoMzvTDuQ 6Hj1GRruPc9zkP8zV3CXFXjYMlyfQFx3z8yYoBDYiaKzwMgl8SqSGmOoBm0MYXQWuw7q ilzWbce4suttdZ3AQXY6y3iycj/9AhgKZ7EdzUzyPFdSxo8Kc81Tk//Jz6RicllwkK6T Z9Ww== 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=luo+B86recPF5J8Y5vjuQIsNA3y0l6dAIysXdnm2nHU=; b=h1Im9OYIQ65ya7xgl6XpunnRsYCyUbyrvHOKapT8hsXeLVzPBUYR5H4zgs4fKTi0OK 2xgTG54EsiQtDZvmu4VXVqiEwZ/bIji9QwMM0Z2DxdDx3M5REJ4f1abVD7gT+0mArLxC ns5L0EMxaauI5Rg1pTuIedUL9rkvi8OZwpUoKuY0dWF9uklpzAqnHbjKLXZ54rVZu8HG vjO0VuBf262qNy8OjAqcokW7E4RsTXRZpFIaCVe2d0nP8i2bXG5gRLNhnsPUlBTcxCVL U13XbJzpahRTzCb4Arxbg/TToqq6QWWJpvkNXxRpFgxTJCZRFVy7cmiIkC2Bs0h/hW1l amdA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GHsjtBTO; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r17-20020a63ec51000000b004e8529ae3eesi16842387pgj.294.2023.03.22.22.43.39; Wed, 22 Mar 2023 22:43:52 -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=@intel.com header.s=Intel header.b=GHsjtBTO; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230455AbjCWFbS (ORCPT + 99 others); Thu, 23 Mar 2023 01:31:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59378 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230374AbjCWFaz (ORCPT ); Thu, 23 Mar 2023 01:30:55 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CFF1D22119 for ; Wed, 22 Mar 2023 22:30:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549448; x=1711085448; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TZ+6Ux/vWHTp7+2fBxz2s/j5BxjCv70QKxkw1tIhFkw=; b=GHsjtBTOxfMgiFv8Yf0JjqlDtNlK4smNm1ct+KsC38fJe0Rv9mcUF8eT 8qQsV8U9S83HqHqswh29bZPzPrmkdXBEaEMcMCz6La4J/ueT6lvF/gMCe +DJQXRRrMoqgjKT8q4x0eoi6Do3SikrRi5l3TY0qtMyXhgUtd6bfOWw1j hvLSTIJVnjWY3JN8i9ugu7hrOrIq6nhGnBwWzqoVt9ARfBZIA6dyvv9gl GptjFWg1e/hR2Bkl6Fm8uN3rpslnTfOZ/X5pNooaGlOirwJDt9RLBKFdi FSYPPlo4b1K5v/cfRJsHQe22MscKHT8alckOmB6VC4bYr1qmt1Xyesszr A==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779370" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779370" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567055" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567055" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:08 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 08/20] ASoC: SOF: Intel: hda: retrieve SoundWire eml_lock and pass pointer Date: Thu, 23 Mar 2023 13:44:40 +0800 Message-Id: <20230323054452.1543233-9-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761136064469428670?= X-GMAIL-MSGID: =?utf-8?q?1761136064469428670?= From: Pierre-Louis Bossart Use new helper and interface to make sure the HDaudio and SoundWire parts use the same mutex when accessing shared registers. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao Acked-by: Mark Brown --- sound/soc/sof/intel/hda.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c index 22eba57bb3e6..f8cd5a9ebad1 100644 --- a/sound/soc/sof/intel/hda.c +++ b/sound/soc/sof/intel/hda.c @@ -215,6 +215,15 @@ static int hda_sdw_probe(struct snd_sof_dev *sdev) res.alh_base = hdev->desc->sdw_alh_base; res.ext = false; } else { + /* + * retrieve eml_lock needed to protect shared registers + * in the HDaudio multi-link areas + */ + res.eml_lock = hdac_bus_eml_get_mutex(sof_to_bus(sdev), true, + AZX_REG_ML_LEPTR_ID_SDW); + if (!res.eml_lock) + return -ENODEV; + res.mmio_base = sdev->bar[HDA_DSP_HDA_BAR]; /* * the SHIM and SoundWire register offsets are link-specific From patchwork Thu Mar 23 05:44:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73812 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2733094wrt; Wed, 22 Mar 2023 22:32:38 -0700 (PDT) X-Google-Smtp-Source: AK7set8T2PabndDGPp5nJ1/oPIOhKnNAKEzOMuOKD8loIqRXP54StgmXcO7TZUuU1P+Ynxpi6vPV X-Received: by 2002:aa7:842c:0:b0:624:3061:7dbf with SMTP id q12-20020aa7842c000000b0062430617dbfmr5934700pfn.25.1679549557783; Wed, 22 Mar 2023 22:32:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679549557; cv=none; d=google.com; s=arc-20160816; b=wOTM1gtQhD5cdBHkh3BkeWspPy5hO9yKuAJXeRmS8qXzSMDuyU6MQfzQeMuWvQOtew pkfDgJNbhkS1WPdO0nrWeewTpzIrq4DcMUBFOSTn3RtDmVI0LVE/a6o2P0F/DlQOYWvz DojhDl4Y9kz2Tb8p1dP5PmQ109IM/hA789eg7A556nsrYvFbxnDU0v1G8miLpoPpcnvd b4IMOXdx9+kkSSpNT01jMRDu8zF1fLVbfQNWYIMXYTLlCTe07Im6JdsOVPZyx3VQw4JQ 0t2CZgtpap9JubFF15erTlAqFiD5ryzpij30QtWnvCeTmyyNQLuNdWqRc9IaNhdFqOeJ esbA== 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=2tjFx+EwjF46txVH0aaI6m4KnUrp3qhDO7HaUj8kOKg=; b=nd8ik6OEjrxX5vkahNeUhANscXwjlNl/WyO6u5y3bCDqAkOEL4cCmtCP3YlLs271DI 5Com1ZYk7K4a0w+lCdaPpeqMd2CVCWztWsWGYjnTl3Ae5VkDU74j3SBoSSh7N7IO3fH/ z3zdmOuzNJU+uqJyLZ6r8tGAT2OwZjjcT3slyfS+T3qfyXA5KTI3eGy+NycC+B+91uMJ E2QAKDasU+pbCMNwKPmns2XlAGxNu08S8gfKmll7PS3Ye6+/pWTso3RDJvlaio/yoIbU HeNaPTPTgsZ55mp9YRZcbaG53LPy44kqzxrWw/8a+8CsYFURGyLaIOiEbww0ZjGoQeqC oxLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=TZkcS3iw; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q11-20020a63e94b000000b0050971cbf2dbsi17840492pgj.226.2023.03.22.22.32.23; Wed, 22 Mar 2023 22:32:37 -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=@intel.com header.s=Intel header.b=TZkcS3iw; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229796AbjCWFbU (ORCPT + 99 others); Thu, 23 Mar 2023 01:31:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230377AbjCWFaz (ORCPT ); Thu, 23 Mar 2023 01:30:55 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8DB4D22113 for ; Wed, 22 Mar 2023 22:30:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549450; x=1711085450; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Dypjg8PFg6rfCWgJzAX1z/pRx6Y007Vaip829IVJOYA=; b=TZkcS3iwz0QtE1UXsmvdETBnMn9O9224P2UCSI74RqyU57TsrLRQq8u3 FztCS4JjeZH9pX/YPxBAV7vWIMvU6eZFG/vdsLGPtPruhwnQqlyQZtEAM EM7K6xDMciJ5JsJbVLeertTDMjQ2PX/Bj1eEBfQ9weN5ULFZgp4l0p2LE aa/vtL2od1xXlXgrD2rfCvmpVVqWOP9EjWCZaZMobZEGQ5ME0ocIipgPy Nr7hFk7vC/8nvv7ixBLBx1hyAViScOadI130fsArCbkyApXj5jVxm8wfK SYkam1mfdWQqeCWW4kOVYCNI32mTGQYOdhmOZ0Bm0JA/rxUaaN4hab7PG Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779384" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779384" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567073" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567073" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:10 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 09/20] soundwire: intel_init: use eml_lock parameter Date: Thu, 23 Mar 2023 13:44:41 +0800 Message-Id: <20230323054452.1543233-10-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761135357374271695?= X-GMAIL-MSGID: =?utf-8?q?1761135357374271695?= From: Pierre-Louis Bossart Now that the ASoC/SOF/HDAudio parts has retrieved the mutex and set the parameter, we can use it to share the same synchronization across the two domains. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_init.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/soundwire/intel_init.c b/drivers/soundwire/intel_init.c index c918d2b81cc3..534c8795e7e8 100644 --- a/drivers/soundwire/intel_init.c +++ b/drivers/soundwire/intel_init.c @@ -69,18 +69,19 @@ static struct sdw_intel_link_dev *intel_link_dev_register(struct sdw_intel_res * link->ip_offset = 0; link->shim = res->mmio_base + res->shim_base; link->alh = res->mmio_base + res->alh_base; + link->shim_lock = &ctx->shim_lock; } else { link->registers = res->mmio_base + SDW_IP_BASE(link_id); link->ip_offset = SDW_CADENCE_MCP_IP_OFFSET; link->shim = res->mmio_base + SDW_SHIM2_GENERIC_BASE(link_id); link->shim_vs = res->mmio_base + SDW_SHIM2_VS_BASE(link_id); + link->shim_lock = res->eml_lock; } link->ops = res->ops; link->dev = res->dev; link->clock_stop_quirks = res->clock_stop_quirks; - link->shim_lock = &ctx->shim_lock; link->shim_mask = &ctx->shim_mask; link->link_mask = ctx->link_mask; From patchwork Thu Mar 23 05:44:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73835 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2741343wrt; Wed, 22 Mar 2023 23:02:48 -0700 (PDT) X-Google-Smtp-Source: AK7set8w8QTvdMlNLeJ8TwBLcvAIcbXD5JB4ghrJzPnY4w/NuJpXAtw626BblVD01ZGCo9M0Mqeo X-Received: by 2002:a05:6a20:4f95:b0:d3:84ca:11b with SMTP id gh21-20020a056a204f9500b000d384ca011bmr2089571pzb.40.1679551368161; Wed, 22 Mar 2023 23:02:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679551368; cv=none; d=google.com; s=arc-20160816; b=yzCO8Uwpww7heH9uV0x/5yFcTG3So3uC+wJebB7GT6aOepbnfgBSQQDEdtMoec/M5K 9qFq4QsAD7LckmS4MIpEn5vDZS+KS3TMgXoTbASXxYKVT8nWVdBEs4BPxRkl4icgLsI6 fc+dc+hxuA61X5Z/wtHcvUGASVKYpzHAp/nBgkoLIzsw8Pk/W9kVRKL+1Pje0zn4ZqXG fceeaNMOUKJaIeSV54kLxDF0STm5wGRT+IgwVF2OlPDvuo2arFwJQCEPsJIoFxGJO5oL 1A9sMhitlp17nCGw6qYEs00EupPxpz2vRqefV+Wjl8PjypASOLoIJRJOqY0TjFEumTQa kS3A== 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=3zotn+bAd7weCL3cEW0oJJO+xOklp+OdPFqkR+Ev+eQ=; b=uksDiVMBE4J8lD1M5mNCmPoqXY9sfvmdJxtY/OLvSKoe6V2sVRmbgY3oaY9nfH4EeZ qMXuWM1GE5P2TzWD3aSTN8/20MHeS8/dR+uCTZY7gQVU9baKUw1I/vEfyQIhR3gEGHmu fwBD6KfLmc9zf7MFLwpn++puVStol3u5Q8/TXmuXSAJXogjtW4WKxX/1HnkRt9w0RIXc frsG8X8ATjmL6etoPky9H6qRKUYUPmg1a3WpCdkL/jJEnhhJC+4U9fyB2ujTzttLnXSa PC/iT5CsKKu9b9IQsOv3SDMFMxF7G9cTlpw46o/2bRFbbK6bDb4c351OB89uOPibDKmG +GYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=gOL2dY5f; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a8-20020a631a08000000b004fba312c234si16989014pga.401.2023.03.22.23.02.35; Wed, 22 Mar 2023 23:02:48 -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=@intel.com header.s=Intel header.b=gOL2dY5f; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230399AbjCWFbX (ORCPT + 99 others); Thu, 23 Mar 2023 01:31:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230378AbjCWFa4 (ORCPT ); Thu, 23 Mar 2023 01:30:56 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8DC042211B for ; Wed, 22 Mar 2023 22:30:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549450; x=1711085450; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=i8UIQbcY1RfdSYTZStIqpYEudpa7eTQXB2/ovkpVbLI=; b=gOL2dY5fTa11N6fjpp/N4dUM4uz5QgpdIOZS4+gSdEGdDL/PV5egT32H lBrKxmslsPSxupiaAginn1pPf4MAPaCLhKm2Jk/z4UWHoHqmh4czP881S Kut0wPAcS/JKZrjGUhXodqZQwaOeNmCZezoJhibY+QkDzeIy18pg7u8g2 Vtye7tqBYyjnyL7gejfK6oDwh4aAx9OwhqK91A9C5h26MSR9A28yk/LVF AiTFuJLOoxJ7JlO1vJNkTOyaGp0dPK2VgYWI8VKLZuzbLiN8xgVSCBJ9B /GyeToS/PMotQMCcTKP7b5MTjSi1fKr6x+6zpZtcc9tIF9w0DrqlxNKUh w==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779398" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779398" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567094" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567094" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:13 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 10/20] soundwire: intel_ace2x: add debugfs support Date: Thu, 23 Mar 2023 13:44:42 +0800 Message-Id: <20230323054452.1543233-11-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761137255387456560?= X-GMAIL-MSGID: =?utf-8?q?1761137255387456560?= From: Pierre-Louis Bossart Add access to registers in SHIM and SHIM_VS (vendor-specific) areas. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/Makefile | 3 +- drivers/soundwire/intel.h | 8 ++ drivers/soundwire/intel_ace2x.c | 2 + drivers/soundwire/intel_ace2x_debugfs.c | 147 ++++++++++++++++++++++++ 4 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 drivers/soundwire/intel_ace2x_debugfs.c diff --git a/drivers/soundwire/Makefile b/drivers/soundwire/Makefile index d7212777a927..c57571c82e04 100644 --- a/drivers/soundwire/Makefile +++ b/drivers/soundwire/Makefile @@ -20,7 +20,8 @@ soundwire-cadence-y := cadence_master.o obj-$(CONFIG_SOUNDWIRE_CADENCE) += soundwire-cadence.o #Intel driver -soundwire-intel-y := intel.o intel_ace2x.o intel_auxdevice.o intel_init.o dmi-quirks.o \ +soundwire-intel-y := intel.o intel_ace2x.o intel_ace2x_debugfs.o \ + intel_auxdevice.o intel_init.o dmi-quirks.o \ intel_bus_common.o obj-$(CONFIG_SOUNDWIRE_INTEL) += soundwire-intel.o diff --git a/drivers/soundwire/intel.h b/drivers/soundwire/intel.h index cf9db4906de4..511932c55216 100644 --- a/drivers/soundwire/intel.h +++ b/drivers/soundwire/intel.h @@ -95,6 +95,14 @@ static inline void intel_writew(void __iomem *base, int offset, u16 value) (sdw)->link_res->hw_ops->cb) #define SDW_INTEL_OPS(sdw, cb) ((sdw)->link_res->hw_ops->cb) +#ifdef CONFIG_DEBUG_FS +void intel_ace2x_debugfs_init(struct sdw_intel *sdw); +void intel_ace2x_debugfs_exit(struct sdw_intel *sdw); +#else +static inline void intel_ace2x_debugfs_init(struct sdw_intel *sdw) {} +static inline void intel_ace2x_debugfs_exit(struct sdw_intel *sdw) {} +#endif + static inline void sdw_intel_debugfs_init(struct sdw_intel *sdw) { if (SDW_INTEL_CHECK_OPS(sdw, debugfs_init)) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index 623e4fd7db91..1c47bb2adb93 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -15,5 +15,7 @@ #include "intel.h" const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { + .debugfs_init = intel_ace2x_debugfs_init, + .debugfs_exit = intel_ace2x_debugfs_exit, }; EXPORT_SYMBOL_NS(sdw_intel_lnl_hw_ops, SOUNDWIRE_INTEL); diff --git a/drivers/soundwire/intel_ace2x_debugfs.c b/drivers/soundwire/intel_ace2x_debugfs.c new file mode 100644 index 000000000000..3d24661ffd37 --- /dev/null +++ b/drivers/soundwire/intel_ace2x_debugfs.c @@ -0,0 +1,147 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright(c) 2023 Intel Corporation. All rights reserved. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "bus.h" +#include "cadence_master.h" +#include "intel.h" + +/* + * debugfs + */ +#ifdef CONFIG_DEBUG_FS + +#define RD_BUF (2 * PAGE_SIZE) + +static ssize_t intel_sprintf(void __iomem *mem, bool l, + char *buf, size_t pos, unsigned int reg) +{ + int value; + + if (l) + value = intel_readl(mem, reg); + else + value = intel_readw(mem, reg); + + return scnprintf(buf + pos, RD_BUF - pos, "%4x\t%4x\n", reg, value); +} + +static int intel_reg_show(struct seq_file *s_file, void *data) +{ + struct sdw_intel *sdw = s_file->private; + void __iomem *s = sdw->link_res->shim; + void __iomem *vs_s = sdw->link_res->shim_vs; + ssize_t ret; + u32 pcm_cap; + int pcm_bd; + char *buf; + int j; + + buf = kzalloc(RD_BUF, GFP_KERNEL); + if (!buf) + return -ENOMEM; + + ret = scnprintf(buf, RD_BUF, "Register Value\n"); + ret += scnprintf(buf + ret, RD_BUF - ret, "\nShim\n"); + + ret += intel_sprintf(s, true, buf, ret, SDW_SHIM2_LECAP); + ret += intel_sprintf(s, false, buf, ret, SDW_SHIM2_PCMSCAP); + + pcm_cap = intel_readw(s, SDW_SHIM2_PCMSCAP); + pcm_bd = FIELD_GET(SDW_SHIM2_PCMSCAP_BSS, pcm_cap); + + for (j = 0; j < pcm_bd; j++) { + ret += intel_sprintf(s, false, buf, ret, + SDW_SHIM2_PCMSYCHM(j)); + ret += intel_sprintf(s, false, buf, ret, + SDW_SHIM2_PCMSYCHC(j)); + } + + ret += scnprintf(buf + ret, RD_BUF - ret, "\nVS CLK controls\n"); + ret += intel_sprintf(vs_s, true, buf, ret, SDW_SHIM2_INTEL_VS_LVSCTL); + + ret += scnprintf(buf + ret, RD_BUF - ret, "\nVS Wake registers\n"); + ret += intel_sprintf(vs_s, false, buf, ret, SDW_SHIM2_INTEL_VS_WAKEEN); + ret += intel_sprintf(vs_s, false, buf, ret, SDW_SHIM2_INTEL_VS_WAKESTS); + + ret += scnprintf(buf + ret, RD_BUF - ret, "\nVS IOCTL, ACTMCTL\n"); + ret += intel_sprintf(vs_s, false, buf, ret, SDW_SHIM2_INTEL_VS_IOCTL); + ret += intel_sprintf(vs_s, false, buf, ret, SDW_SHIM2_INTEL_VS_ACTMCTL); + + seq_printf(s_file, "%s", buf); + kfree(buf); + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(intel_reg); + +static int intel_set_m_datamode(void *data, u64 value) +{ + struct sdw_intel *sdw = data; + struct sdw_bus *bus = &sdw->cdns.bus; + + if (value > SDW_PORT_DATA_MODE_STATIC_1) + return -EINVAL; + + /* Userspace changed the hardware state behind the kernel's back */ + add_taint(TAINT_USER, LOCKDEP_STILL_OK); + + bus->params.m_data_mode = value; + + return 0; +} +DEFINE_DEBUGFS_ATTRIBUTE(intel_set_m_datamode_fops, NULL, + intel_set_m_datamode, "%llu\n"); + +static int intel_set_s_datamode(void *data, u64 value) +{ + struct sdw_intel *sdw = data; + struct sdw_bus *bus = &sdw->cdns.bus; + + if (value > SDW_PORT_DATA_MODE_STATIC_1) + return -EINVAL; + + /* Userspace changed the hardware state behind the kernel's back */ + add_taint(TAINT_USER, LOCKDEP_STILL_OK); + + bus->params.s_data_mode = value; + + return 0; +} +DEFINE_DEBUGFS_ATTRIBUTE(intel_set_s_datamode_fops, NULL, + intel_set_s_datamode, "%llu\n"); + +void intel_ace2x_debugfs_init(struct sdw_intel *sdw) +{ + struct dentry *root = sdw->cdns.bus.debugfs; + + if (!root) + return; + + sdw->debugfs = debugfs_create_dir("intel-sdw", root); + + debugfs_create_file("intel-registers", 0400, sdw->debugfs, sdw, + &intel_reg_fops); + + debugfs_create_file("intel-m-datamode", 0200, sdw->debugfs, sdw, + &intel_set_m_datamode_fops); + + debugfs_create_file("intel-s-datamode", 0200, sdw->debugfs, sdw, + &intel_set_s_datamode_fops); + + sdw_cdns_debugfs_init(&sdw->cdns, sdw->debugfs); +} + +void intel_ace2x_debugfs_exit(struct sdw_intel *sdw) +{ + debugfs_remove_recursive(sdw->debugfs); +} +#endif /* CONFIG_DEBUG_FS */ From patchwork Thu Mar 23 05:44:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73815 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2734364wrt; Wed, 22 Mar 2023 22:37:22 -0700 (PDT) X-Google-Smtp-Source: AKy350Yri7ARvbNok0nB2XJpxTvCG+YWklZIhWPW8qL5xfd11iiwIPfcNbYyPQ9ATs+Z1Y6gWEih X-Received: by 2002:a17:90a:19e:b0:23f:ae99:3c94 with SMTP id 30-20020a17090a019e00b0023fae993c94mr4176013pjc.23.1679549842070; Wed, 22 Mar 2023 22:37:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679549842; cv=none; d=google.com; s=arc-20160816; b=GuJRbgNNxvdYaRVUqYF4JCj3K2LIzx4mU/s1nwEzO+O5fvay+8oclIe5FK0q989UNX 9COlQ5JuBwynUwLAA/fSHvQftUjDjhOiMNug8+6qKPPaRxM93ZIxJqlYg/oHjnRfvy3A 0+3cJOczQAvyeJAI70Tp7UsnR72SNx8hJheeFCXm3hWC8UvsljC4/pPIiwuGuWeiP1Pm 9u3pOkBcLK1oqq13b7OdbAaTKNkEHC0hBOr2n/KO2207k1j0kWsyLPHKXDJpSdu6xA9V jkga84OwhvM4CDy/b5ZvJF79crorVaepS3nkyz4zxRHNa/nLTMpTrUd0SNvMBI1Yszuf CjDg== 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=b8/+lkGQ4xQ4v5F5224EhB8/afRLlGzzTSmckQo4XHE=; b=XxKMIwJLTsl0/FYFwpT5sCKaRootY6m9y6a3jW88l8ooWqTJsmtpzWrtQR0rZsCVVL F3LFsqYrHTxNrg8jRxodeAMoIjzEFiEYcQLnOvORfbEUVdQDqBJI03xnagCajYn/WS/V ktA5RM+/S/+0qXFQLaZ8xIrodta3UhrmKyIwpQLAE37cWaDnBTu5URRoZQXdinr9mp6C MtdKwT8BWzxzGHOzkvr/6osqIQGJvJNRz/0QzVwAfILNU2UAAxaaHzYg1V8XjLxq8a09 td3X6aff9pT9K3diftgwueAk+Qd4QPZsyMY5k9iONJIt3Tje09SP1a/VnzY3j8yNLWrY pFiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ahm0ncEE; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 5-20020a17090a08c500b0023b3729bcbfsi931551pjn.6.2023.03.22.22.37.10; Wed, 22 Mar 2023 22:37:22 -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=@intel.com header.s=Intel header.b=ahm0ncEE; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229972AbjCWFbb (ORCPT + 99 others); Thu, 23 Mar 2023 01:31:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59060 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230409AbjCWFbD (ORCPT ); Thu, 23 Mar 2023 01:31:03 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B2492D151 for ; Wed, 22 Mar 2023 22:30:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549454; x=1711085454; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zfPDFAUHD0yEFTAl6FmNYsvKI40bPenFTeUs36GSzIY=; b=ahm0ncEEFKg/f2Cm3I46zkUeVUyq7gh0yzGrkJgELws71us6SAGazhJx b51L36b55YKh+Et3syTGAKs/sVQfdzxNopDXGM66FpJnVzjMCZs9NE4H6 2Z5DvufYxa2NzC8OTsFoU+tGHZcduLMf54XAdsz51JFIKEvYtoYWlYhHG vX0lRRheqqbXZ7M2KeTs7oEehyLhntdqPpM3leRj/xlTIC/jWrAZFaTUc kIWb4TOxIECnAAQwaeauO5QPqGYeNPMlYx46hqzM62m8PKvg/hAUYijiT mzlLobryrRn5j2WW8It8h8emihh1wOroqgyUtvxQgA8XHGvJ1oRiCLY56 A==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779408" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779408" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567117" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567117" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:16 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 11/20] soundwire: intel_ace2x: add link power-up/down helpers Date: Thu, 23 Mar 2023 13:44:43 +0800 Message-Id: <20230323054452.1543233-12-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761135655474185475?= X-GMAIL-MSGID: =?utf-8?q?1761135655474185475?= From: Pierre-Louis Bossart only power-up/down for now, the frequency is not set. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_ace2x.c | 50 +++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index 1c47bb2adb93..5b6a608e63ba 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -10,12 +10,62 @@ #include #include #include +#include #include "cadence_master.h" #include "bus.h" #include "intel.h" +static int intel_link_power_up(struct sdw_intel *sdw) +{ + int ret; + + mutex_lock(sdw->link_res->shim_lock); + + ret = hdac_bus_eml_sdw_power_up_unlocked(sdw->link_res->hbus, sdw->instance); + if (ret < 0) { + dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_power_up failed: %d\n", + __func__, ret); + goto out; + } + + sdw->cdns.link_up = true; +out: + mutex_unlock(sdw->link_res->shim_lock); + + return ret; +} + +static int intel_link_power_down(struct sdw_intel *sdw) +{ + int ret; + + mutex_lock(sdw->link_res->shim_lock); + + sdw->cdns.link_up = false; + + ret = hdac_bus_eml_sdw_power_down_unlocked(sdw->link_res->hbus, sdw->instance); + if (ret < 0) { + dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_power_down failed: %d\n", + __func__, ret); + + /* + * we leave the sdw->cdns.link_up flag as false since we've disabled + * the link at this point and cannot handle interrupts any longer. + */ + } + + mutex_unlock(sdw->link_res->shim_lock); + + return ret; +} + const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { .debugfs_init = intel_ace2x_debugfs_init, .debugfs_exit = intel_ace2x_debugfs_exit, + + .link_power_up = intel_link_power_up, + .link_power_down = intel_link_power_down, }; EXPORT_SYMBOL_NS(sdw_intel_lnl_hw_ops, SOUNDWIRE_INTEL); + +MODULE_IMPORT_NS(SND_SOC_SOF_HDA_MLINK); From patchwork Thu Mar 23 05:44:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73822 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2737060wrt; Wed, 22 Mar 2023 22:47:55 -0700 (PDT) X-Google-Smtp-Source: AK7set/lkN5UWBDNDMQKc8dao0bppDGxYJPauo3JviEniH9laFPpEbfAtv8D/ps2dJPBhPnyoVeY X-Received: by 2002:a17:903:189:b0:1a1:c982:7135 with SMTP id z9-20020a170903018900b001a1c9827135mr6266544plg.54.1679550475460; Wed, 22 Mar 2023 22:47:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679550475; cv=none; d=google.com; s=arc-20160816; b=jWmNSaaNaOvUzQEfTWVQlwvm9HDPAvdKf6JwDX6xHCMqID4Kvbe0LrHgRUyhm/ZJBs KQfKWaeTDkxJLK68TuLaTmQYsTxQy3UjVokNDeJHV3mCCU/EaEk1FiW/5mtnGfnXY523 i1GnwoBanBSuqlQWYa4gPe8tpw8gL6gZ6HsrInvM/NawCvr/z9EhCgZ/1+eiKrPLK9mS dpxMPbh88TUvOYFlxjryKkXGF5AdvS+zBp33SYwhRYPBmEZkqTO5A/NkMU/iui8LnDW+ gU6k002bSETG16+1NXwNOi1mGIA3mRbNO1/R6QxZpDq/Y16yXZLo4u2mlFmvW55Ttut2 tjMA== 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=WGGXlQghPSdmVTg9Bhhj5B+HROJoHvXLSMO0L97gHWQ=; b=FzzbjZFeptz6rl6ITw/MaHdwfla9BA9i4qhn7+bViVQBpJDo1xwBYxQjCICTeukMxT 3F1TkUVj85Hkt2UoLGp4AJb9XNZZ7VE2eQ1jcS6G6S+Nm/JL2XrdMkViK8MHcNYLumgI wbz7vKgmby0vmu0CYMIMINuX7VSmNrJr20lDz99VcD+ZvQs36wBHBZQ0u3VEUyRvEFh4 2X3687xkZJI2p0dHSzbpOfEuOuVSRV3W1Pm3YQrzmzmUXVRHDUmT2PQmKWQNJNnzT6tl R0egGDvGgkfcvtr8OsuHjJA9WjIyunpfTEwM7IydnZUstoA8cymDL/JZW0mKwFIQqcSe UTUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ALhUWyoj; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e32-20020a631e20000000b0050bf6a432f9si17134894pge.684.2023.03.22.22.47.43; Wed, 22 Mar 2023 22:47:55 -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=@intel.com header.s=Intel header.b=ALhUWyoj; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230342AbjCWFbf (ORCPT + 99 others); Thu, 23 Mar 2023 01:31:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230331AbjCWFbF (ORCPT ); Thu, 23 Mar 2023 01:31:05 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 18BC022797 for ; Wed, 22 Mar 2023 22:30:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549456; x=1711085456; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aNL2KliVK/W0PGGaQa+13McnVurhskx2OOU+yOO7uSY=; b=ALhUWyojgqzHzE6KZpUEEJgv2r6amjn/APoDkMzpbwHmI2Ev+5f0wGkL GrQ1EeYTsQGiaArk4Se0fDL4P7Xwjp/rABdqYaK6BXjU1Wbgrdlyykfkp BWTijKAFWhhrYc2t8gRwFsp2l3fZDVW4skpvsWXy3bqJ2EnB7YFhRHtA7 XGuGkkRdKRZfXeXpi4ig3/KeLpEr6D1oD8ySB+b8SGQSc3LSZR/y+MisP N+ZC8dkWQB2HegBJfn0Z8cKqLCY+hgwE5r/Wi1kY8pKx67rlYxUhZX5zi St3A+hK6xOt5xJSdroWfcHVUU9UN60TM6J0WWh8WpM441bU3OfwRVwosE Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779422" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779422" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567132" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567132" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:18 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 12/20] soundwire: intel_ace2x: set SYNCPRD before powering-up Date: Thu, 23 Mar 2023 13:44:44 +0800 Message-Id: <20230323054452.1543233-13-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761136319264954984?= X-GMAIL-MSGID: =?utf-8?q?1761136319264954984?= From: Pierre-Louis Bossart The registers used for multi-link synchronization are no longer in the SHIM but in the HDaudio multi-link capability space. Use helpers to configure the SYNCPRD value, and wait for SYNCPU to change after powering-up. Note that the SYNCPRD value is shared between all sublinks, for obvious reasons if those links are supposed to be synchronized. The value of SYNCPRD is programmed only once for all sublinks. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_ace2x.c | 42 +++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index 5b6a608e63ba..01668246b7ba 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -17,17 +17,51 @@ static int intel_link_power_up(struct sdw_intel *sdw) { + struct sdw_bus *bus = &sdw->cdns.bus; + struct sdw_master_prop *prop = &bus->prop; + u32 *shim_mask = sdw->link_res->shim_mask; + unsigned int link_id = sdw->instance; + u32 syncprd; int ret; mutex_lock(sdw->link_res->shim_lock); - ret = hdac_bus_eml_sdw_power_up_unlocked(sdw->link_res->hbus, sdw->instance); + if (!*shim_mask) { + /* we first need to program the SyncPRD/CPU registers */ + dev_dbg(sdw->cdns.dev, "first link up, programming SYNCPRD\n"); + + if (prop->mclk_freq % 6000000) + syncprd = SDW_SHIM_SYNC_SYNCPRD_VAL_38_4; + else + syncprd = SDW_SHIM_SYNC_SYNCPRD_VAL_24; + + ret = hdac_bus_eml_sdw_set_syncprd_unlocked(sdw->link_res->hbus, syncprd); + if (ret < 0) { + dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_set_syncprd failed: %d\n", + __func__, ret); + goto out; + } + } + + ret = hdac_bus_eml_sdw_power_up_unlocked(sdw->link_res->hbus, link_id); if (ret < 0) { dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_power_up failed: %d\n", __func__, ret); goto out; } + if (!*shim_mask) { + /* SYNCPU will change once link is active */ + ret = hdac_bus_eml_sdw_wait_syncpu_unlocked(sdw->link_res->hbus); + if (ret < 0) { + dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_wait_syncpu failed: %d\n", + __func__, ret); + goto out; + } + } + + *shim_mask |= BIT(link_id); + sdw->cdns.link_up = true; out: mutex_unlock(sdw->link_res->shim_lock); @@ -37,13 +71,17 @@ static int intel_link_power_up(struct sdw_intel *sdw) static int intel_link_power_down(struct sdw_intel *sdw) { + u32 *shim_mask = sdw->link_res->shim_mask; + unsigned int link_id = sdw->instance; int ret; mutex_lock(sdw->link_res->shim_lock); sdw->cdns.link_up = false; - ret = hdac_bus_eml_sdw_power_down_unlocked(sdw->link_res->hbus, sdw->instance); + *shim_mask &= ~BIT(link_id); + + ret = hdac_bus_eml_sdw_power_down_unlocked(sdw->link_res->hbus, link_id); if (ret < 0) { dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_power_down failed: %d\n", __func__, ret); From patchwork Thu Mar 23 05:44:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73813 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2733218wrt; Wed, 22 Mar 2023 22:32:58 -0700 (PDT) X-Google-Smtp-Source: AK7set+S09EG7cNyPM5VgTxWJ3TUQ4Pj6UTXuZAelncjV3GHbdwqc7tVzMg2edCbv1MKwio1Ac5d X-Received: by 2002:a17:902:ea11:b0:19d:1a8e:836f with SMTP id s17-20020a170902ea1100b0019d1a8e836fmr6368038plg.27.1679549577773; Wed, 22 Mar 2023 22:32:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679549577; cv=none; d=google.com; s=arc-20160816; b=P6EQAkwp0el1u6IubtRvXyz/dHcpHHKmcSrS3uMvM0CiHHHUl/qt9PtEppO2wzjYxC fW/Gxyibu770a75VD5OHw6gfov1jv90E697WzQU3us078iqnsIWXj8qwWNa2At0hWT5I Q+Ixe36EgWyJxqrC7DkqVVqXVa2tuWOqBToFC0WMem89G1zxoxOXiiEl21Lg39z9N6oZ XBclwohlTLsSBL/iJKCs2KfdqBPV19mgt9RZMRxMf/BGclMi0uG011uTs+F4gw4U10t1 qqnlkgT/E4O67NjXk9ee0WKmNMKjwLRe8Tq1tpoQlQuCpPq3bTY+VQSuls9xz7fZ9WR6 e6zA== 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=wu7uyeRggKxs6RRio4FUbDPBaFaikyMpt0UMKj2E4QA=; b=Veyo7w2xtD2bZt4daqg1STPItkZ6MlFDcLYkRZzLZbAXKUrx3TJz/muRjXQgGf/6ou Yv7jmvSpOrtePzMNUzh+4jF/wuU4QoQuWFHUhwPFsyDS1kxxNjhz7vFtW6Mi7PVSfrcA e9ROJLJ7e5TA9KpXLk64AU1z1nhgh1XhMIwHTgc3yVXynjNe25b+rFDEe0Sin6GBhxqm xQxS7ZYDnb9ydMANhEQAHbUh4pgJN87QUF2zKRyj8JueAS/4e1b9xjo9orWZwQ1tB9hd wNXVRqtNgU08QpuV4lRQ67VZ0fp/slF+sToC6I5fMJASBQT4D4cWipqSzoBxCjxEpf5U lqiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=k9obHCSB; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i10-20020a170902eb4a00b001968cbc67e2si17410780pli.583.2023.03.22.22.32.44; Wed, 22 Mar 2023 22:32:57 -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=@intel.com header.s=Intel header.b=k9obHCSB; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229877AbjCWFbp (ORCPT + 99 others); Thu, 23 Mar 2023 01:31:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59270 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229976AbjCWFbI (ORCPT ); Thu, 23 Mar 2023 01:31:08 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 226F12FCDD for ; Wed, 22 Mar 2023 22:30:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549457; x=1711085457; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kjKTx32w9YdnZJ7K83qEoOALY8hrbkCtcZcfoAY0U2Q=; b=k9obHCSBJGVTlbzQTWH+z6BQ9SfmfuOtE7sODlUer8Z2DdgGMWg+VXJg ijJUK2D9n9CUNiQ1590qmuHTnvDZe84z6VHMdNUfbaeNHDRg/NWIEAHTL sQmWtF2F2iGskjt4UICebzY/lmfrQox80bK1e5rUGbs2xtrTFYBLNZ4yt VSy8Kvm2Rlq0luPLR9cdFBdl049Ns43TVXw0+da8lerU+Bjdh/5dphQzs D4zJ0Q33UyEltxEAPBvpb53EhsKImkoJIvvAJ1ylCOMzcnbBDD/pVjIsk dECT0NtYGPJ5zb0locTRtTiC/78FQ7mPF7qpa5mECQHZtFGLO8q4ukmp4 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779434" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779434" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567149" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567149" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:21 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 13/20] soundwire: intel_ace2x: configure link PHY Date: Thu, 23 Mar 2023 13:44:45 +0800 Message-Id: <20230323054452.1543233-14-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761135378085327937?= X-GMAIL-MSGID: =?utf-8?q?1761135378085327937?= From: Pierre-Louis Bossart Unlike previous hardware generations, the glue-to-master transition is not managed by software, instead the transitions are managed as part of the power-up/down sequences controlled by SPA/CPA bits. The only thing that's required is to configure the link PHY for 'normal' operation instead of the PHY test mode. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_ace2x.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index 01668246b7ba..5deff32976f1 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -15,6 +15,22 @@ #include "bus.h" #include "intel.h" +/* + * shim vendor-specific (vs) ops + */ + +static void intel_shim_vs_init(struct sdw_intel *sdw) +{ + void __iomem *shim_vs = sdw->link_res->shim_vs; + u16 act = 0; + + u16p_replace_bits(&act, 0x1, SDW_SHIM2_INTEL_VS_ACTMCTL_DOAIS); + act |= SDW_SHIM2_INTEL_VS_ACTMCTL_DACTQE; + act |= SDW_SHIM2_INTEL_VS_ACTMCTL_DODS; + intel_writew(shim_vs, SDW_SHIM2_INTEL_VS_ACTMCTL, act); + usleep_range(10, 15); +} + static int intel_link_power_up(struct sdw_intel *sdw) { struct sdw_bus *bus = &sdw->cdns.bus; @@ -63,6 +79,9 @@ static int intel_link_power_up(struct sdw_intel *sdw) *shim_mask |= BIT(link_id); sdw->cdns.link_up = true; + + intel_shim_vs_init(sdw); + out: mutex_unlock(sdw->link_res->shim_lock); From patchwork Thu Mar 23 05:44:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73818 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2736019wrt; Wed, 22 Mar 2023 22:43:52 -0700 (PDT) X-Google-Smtp-Source: AK7set94HiufFtf9BUJtVk8oBhGNHERJjRhKsQdfGXNNLk6d9kynBbJSKajwC2KXwS7qd7evH9rn X-Received: by 2002:a17:902:d051:b0:19e:7889:f9fb with SMTP id l17-20020a170902d05100b0019e7889f9fbmr4524643pll.68.1679550232198; Wed, 22 Mar 2023 22:43:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679550232; cv=none; d=google.com; s=arc-20160816; b=bxmYWyCoHD8Bpz50I4WMhTZxyVoTl7GtUHRK8x0+uAuE3MzyiCnj3FRwVo0snJwYv8 oN6ihxC8az3Rt/qSdawN6gRq7Qim+pfaELV6ma0vNKysPTD2YRVwUeuM5zCXmYOX9MBt N+T2dZidvRwNB15K1bxdjoEqJw3wugO/kDgdjsQTI9FHNBlAohxWN7CgtRvaqF2m6EXJ osdN7UVStcB9bMgXNwvkoOVXz3dlDdF1NiYcoRZ+f+XN1yDG4aDpGR/rwfbTNtn5JKjB n2hP77LkM8YcPK/uL0Byl4pfa5eDKcXttE0h8hPZd116bMA4pgh5y4uuIR/pQIpgs9aS hBUQ== 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=4E9YcUoN5h07+n9SM8RGgKUv4AWgGav8tw8XYW3AGtY=; b=Gk6MzowafeVaOHbKBjkMcQcf0H+oo40iUFavNJbAIxU7dLjnBvz57lbfdFN0biS23I Hjp07i8DV9MNBsJCL6nV/GUXQmgH1mOWRzq3/jkUMMrxE2v8eJF1gTG0+FiqISEd5wku ofyK3NqrfRkKDXx5SWAVTifRuUxqfeVja6JzChjjct7R+6Ys5r2hQCgpkk4+6r7Pt/yl cJ3e7rk6bbfbA8PUfQaHEqWSg2sJrBcA0sKA53EltFjcgk05ybF1Mw1nzAb3mWA1nNS2 uzqa7GcSlRd5LLJaESvcqhVlpc58As2X/S8/GV5pFKHxkoQMIWOBk5gxAEBzdhuI/HID sXGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=n2FDgvrV; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z14-20020a170903018e00b0019ca1961bc1si19217267plg.108.2023.03.22.22.43.39; Wed, 22 Mar 2023 22:43:52 -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=@intel.com header.s=Intel header.b=n2FDgvrV; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230469AbjCWFcB (ORCPT + 99 others); Thu, 23 Mar 2023 01:32:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59060 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230305AbjCWFb3 (ORCPT ); Thu, 23 Mar 2023 01:31:29 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5334120A06 for ; Wed, 22 Mar 2023 22:31:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549464; x=1711085464; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+NUsvy+Y8PVO2h/Op18ecWWhry3F8Mgpf7FkeQTkvn0=; b=n2FDgvrV1iebTHYlgP0QE1dFADl6Kj7V1Z9FnO+kMuF/bCtpPy5B/yhN VBfLAH80EBLZyKtJiptnyjr3V1SrTdMWaKS40O5HWZM4MEU3uOLbZGaJd y0X4pf+J+wPAH9zOyKLuAAebQ8BkUDotAni4fNn84eP0WdjQo3N785DAv kkM/6fvwBdKibK5BLGcREjsTVBq1jY6wlnxuPfzpFbhj7S36+xpeZZKsi WfQV7D04gurF/RcTGoNFNAiahSWvhaViH7nCK9ZHE3pznstkHbf7bUAyG AzRbBsMBCBzZJDYDTchugk0/ovsy+enTAbbMKbMcO0psEAMCrB5kj9KPF Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779448" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779448" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567177" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567177" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:23 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 14/20] soundwire: intel_ace2x: add DAI registration Date: Thu, 23 Mar 2023 13:44:46 +0800 Message-Id: <20230323054452.1543233-15-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761136064326454486?= X-GMAIL-MSGID: =?utf-8?q?1761136064326454486?= From: Pierre-Louis Bossart The code is similar to the previous implementation, the only difference is that the PDI descriptors are now in different areas. Using common helpers proves tricky with multiple changed registers, workarounds that are no longer necessary. It's simpler to duplicate the intel_register_dai() function rather than try to add multiple levels of abstraction and indirections. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_ace2x.c | 161 ++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index 5deff32976f1..d6d5e6e070f4 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -116,10 +116,171 @@ static int intel_link_power_down(struct sdw_intel *sdw) return ret; } +/* + * DAI operations + */ +static const struct snd_soc_dai_ops intel_pcm_dai_ops = { +}; + +static const struct snd_soc_component_driver dai_component = { + .name = "soundwire", +}; + +/* + * PDI routines + */ +static void intel_pdi_init(struct sdw_intel *sdw, + struct sdw_cdns_stream_config *config) +{ + void __iomem *shim = sdw->link_res->shim; + int pcm_cap; + + /* PCM Stream Capability */ + pcm_cap = intel_readw(shim, SDW_SHIM2_PCMSCAP); + + config->pcm_bd = FIELD_GET(SDW_SHIM2_PCMSCAP_BSS, pcm_cap); + config->pcm_in = FIELD_GET(SDW_SHIM2_PCMSCAP_ISS, pcm_cap); + config->pcm_out = FIELD_GET(SDW_SHIM2_PCMSCAP_ISS, pcm_cap); + + dev_dbg(sdw->cdns.dev, "PCM cap bd:%d in:%d out:%d\n", + config->pcm_bd, config->pcm_in, config->pcm_out); +} + +static int +intel_pdi_get_ch_cap(struct sdw_intel *sdw, unsigned int pdi_num) +{ + void __iomem *shim = sdw->link_res->shim; + + /* zero based values for channel count in register */ + return intel_readw(shim, SDW_SHIM2_PCMSYCHC(pdi_num)) + 1; +} + +static void intel_pdi_get_ch_update(struct sdw_intel *sdw, + struct sdw_cdns_pdi *pdi, + unsigned int num_pdi, + unsigned int *num_ch) +{ + int ch_count = 0; + int i; + + for (i = 0; i < num_pdi; i++) { + pdi->ch_count = intel_pdi_get_ch_cap(sdw, pdi->num); + ch_count += pdi->ch_count; + pdi++; + } + + *num_ch = ch_count; +} + +static void intel_pdi_stream_ch_update(struct sdw_intel *sdw, + struct sdw_cdns_streams *stream) +{ + intel_pdi_get_ch_update(sdw, stream->bd, stream->num_bd, + &stream->num_ch_bd); + + intel_pdi_get_ch_update(sdw, stream->in, stream->num_in, + &stream->num_ch_in); + + intel_pdi_get_ch_update(sdw, stream->out, stream->num_out, + &stream->num_ch_out); +} + +static int intel_create_dai(struct sdw_cdns *cdns, + struct snd_soc_dai_driver *dais, + enum intel_pdi_type type, + u32 num, u32 off, u32 max_ch) +{ + int i; + + if (!num) + return 0; + + for (i = off; i < (off + num); i++) { + dais[i].name = devm_kasprintf(cdns->dev, GFP_KERNEL, + "SDW%d Pin%d", + cdns->instance, i); + if (!dais[i].name) + return -ENOMEM; + + if (type == INTEL_PDI_BD || type == INTEL_PDI_OUT) { + dais[i].playback.channels_min = 1; + dais[i].playback.channels_max = max_ch; + } + + if (type == INTEL_PDI_BD || type == INTEL_PDI_IN) { + dais[i].capture.channels_min = 1; + dais[i].capture.channels_max = max_ch; + } + + dais[i].ops = &intel_pcm_dai_ops; + } + + return 0; +} + +static int intel_register_dai(struct sdw_intel *sdw) +{ + struct sdw_cdns_dai_runtime **dai_runtime_array; + struct sdw_cdns_stream_config config; + struct sdw_cdns *cdns = &sdw->cdns; + struct sdw_cdns_streams *stream; + struct snd_soc_dai_driver *dais; + int num_dai; + int ret; + int off = 0; + + /* Read the PDI config and initialize cadence PDI */ + intel_pdi_init(sdw, &config); + ret = sdw_cdns_pdi_init(cdns, config); + if (ret) + return ret; + + intel_pdi_stream_ch_update(sdw, &sdw->cdns.pcm); + + /* DAIs are created based on total number of PDIs supported */ + num_dai = cdns->pcm.num_pdi; + + dai_runtime_array = devm_kcalloc(cdns->dev, num_dai, + sizeof(struct sdw_cdns_dai_runtime *), + GFP_KERNEL); + if (!dai_runtime_array) + return -ENOMEM; + cdns->dai_runtime_array = dai_runtime_array; + + dais = devm_kcalloc(cdns->dev, num_dai, sizeof(*dais), GFP_KERNEL); + if (!dais) + return -ENOMEM; + + /* Create PCM DAIs */ + stream = &cdns->pcm; + + ret = intel_create_dai(cdns, dais, INTEL_PDI_IN, cdns->pcm.num_in, + off, stream->num_ch_in); + if (ret) + return ret; + + off += cdns->pcm.num_in; + ret = intel_create_dai(cdns, dais, INTEL_PDI_OUT, cdns->pcm.num_out, + off, stream->num_ch_out); + if (ret) + return ret; + + off += cdns->pcm.num_out; + ret = intel_create_dai(cdns, dais, INTEL_PDI_BD, cdns->pcm.num_bd, + off, stream->num_ch_bd); + if (ret) + return ret; + + return devm_snd_soc_register_component(cdns->dev, &dai_component, + dais, num_dai); +} + const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { .debugfs_init = intel_ace2x_debugfs_init, .debugfs_exit = intel_ace2x_debugfs_exit, + .register_dai = intel_register_dai, + .link_power_up = intel_link_power_up, .link_power_down = intel_link_power_down, }; From patchwork Thu Mar 23 05:44:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73840 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2741891wrt; Wed, 22 Mar 2023 23:04:17 -0700 (PDT) X-Google-Smtp-Source: AK7set+eEMaTkTx4/7l0tDMWJYfcxZWTSmQjJrl/TSjTOIFQ9HsRUgB8rangU5E2liu3iQ5I8leQ X-Received: by 2002:a17:906:8a62:b0:886:221b:44e5 with SMTP id hy2-20020a1709068a6200b00886221b44e5mr9744601ejc.62.1679551456947; Wed, 22 Mar 2023 23:04:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679551456; cv=none; d=google.com; s=arc-20160816; b=ATIhSwlzWccK/biL+aJx+5AkvQAdUGbypbIDaxSbdxtLHU4eBmMeiWS8QaKPkEUNxB b4f8gXtXjhtwWavWbAiL1uLOM6iZaOv33SMgmEv+aIgca0viqAGdbK5kKyS6UIuM1tig e0yKPMEo5yKID9fYIk0wJib56HSfyr7xz5EuCaO7KWaGKDp8wJuammCubfc6S5unbRJX JpuYDHlM+g5aId51Nk8cI5aM3tXVTuF56boWfhPm7UuXFWaP0v2IMRNpVJwN0lsEE4d1 mTEgqKts48a1O07vdJoZ3PLHkuVfhxhQH/zMjMdE0OuTfcZSOOv6JQHoMAtt9LnVEmDG sztg== 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=cE4yQdnF4vYtxmVNZ5ogMN6hmlaVotI7z6xYxCz7D6o=; b=PGP7nT61okTB7uXAgKH+4jXMiSpBgjx3iKys5zEkWbkd4xqIHdn41YvuXo6F6vCoSF 5hhdA9KccgFZmZFxbgf0sh3BkCuRpKFLMSR3FMvs62ICbRLXSoNt4xdbLbais+XJIoOS u8AD3ioO4PpI0KlaiVoXRwuYoElguqN9MApVXsa+vlp47tIY45Cr9etFrkq+7Nxdf5Z0 fElxuvao/gGt4cGDdejk4UbYdSsY8KER2NRCSvN3xla63W501yu3M4yCiBg0+WrhNaBA ju86nNzSptXyYRe9qI8HEJ9EEwJROZOtqQJGLuBPLCrLzUpG6B1wsYk4iAKY+sKCu1eI MtAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=K8QJDfeh; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id kf5-20020a17090776c500b00920d3348690si17630169ejc.317.2023.03.22.23.03.53; Wed, 22 Mar 2023 23:04:16 -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=@intel.com header.s=Intel header.b=K8QJDfeh; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230425AbjCWFcD (ORCPT + 99 others); Thu, 23 Mar 2023 01:32:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230333AbjCWFbe (ORCPT ); Thu, 23 Mar 2023 01:31:34 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CED7F22031 for ; Wed, 22 Mar 2023 22:31:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549465; x=1711085465; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wsFbcSJtx/AlSmGIw0DdUSJEopY6I39DINuaH9UuTy0=; b=K8QJDfehQh970xxe9MsJjbb/TOWmkqFr6R0S2+OtPUKfPovkuslMdJCG +WiJOOpCuLaOfrrG2B0nT7nbYqs4/5CnfH+Sl+2GvnvAO9KUX/SEPEGnw HHIYsDjMj9Om6SanktA2qMlTrEAsgd+ceoZ1+yR8hX6122k/qJI4YpHsd v4xDFTKOnbbaoKhsSo4S91jS5iPMup8ui5qavnGEazF9DWJmR/fCx09Dp IohZHYP8UaO1ndwAxmZIxOiBrY46OjW7cLHM46WCmSBq00bsJqkXoqkYu /Q8HaEadSfbDCW2g93FWBYyI2ii8qrDP4hjBQevMGz5XyAQ/4vIQUqPEk A==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779460" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779460" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567197" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567197" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:26 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 15/20] soundwire: intel_ace2x: add sync_arm/sync_go helpers Date: Thu, 23 Mar 2023 13:44:47 +0800 Message-Id: <20230323054452.1543233-16-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761137348688275791?= X-GMAIL-MSGID: =?utf-8?q?1761137348688275791?= From: Pierre-Louis Bossart Same functionality as before, but with the registers moved to the HDaudio multi-link area. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_ace2x.c | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index d6d5e6e070f4..20b8806f7de6 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -116,6 +116,41 @@ static int intel_link_power_down(struct sdw_intel *sdw) return ret; } +static void intel_sync_arm(struct sdw_intel *sdw) +{ + unsigned int link_id = sdw->instance; + + mutex_lock(sdw->link_res->shim_lock); + + hdac_bus_eml_sdw_sync_arm_unlocked(sdw->link_res->hbus, link_id); + + mutex_unlock(sdw->link_res->shim_lock); +} + +static int intel_sync_go_unlocked(struct sdw_intel *sdw) +{ + int ret; + + ret = hdac_bus_eml_sdw_sync_go_unlocked(sdw->link_res->hbus); + if (ret < 0) + dev_err(sdw->cdns.dev, "%s: SyncGO clear failed: %d\n", __func__, ret); + + return ret; +} + +static int intel_sync_go(struct sdw_intel *sdw) +{ + int ret; + + mutex_lock(sdw->link_res->shim_lock); + + ret = intel_sync_go_unlocked(sdw); + + mutex_unlock(sdw->link_res->shim_lock); + + return ret; +} + /* * DAI operations */ @@ -283,6 +318,10 @@ const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { .link_power_up = intel_link_power_up, .link_power_down = intel_link_power_down, + + .sync_arm = intel_sync_arm, + .sync_go_unlocked = intel_sync_go_unlocked, + .sync_go = intel_sync_go, }; EXPORT_SYMBOL_NS(sdw_intel_lnl_hw_ops, SOUNDWIRE_INTEL); From patchwork Thu Mar 23 05:44:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73837 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2741545wrt; Wed, 22 Mar 2023 23:03:18 -0700 (PDT) X-Google-Smtp-Source: AK7set8NrE0nRkJNdrge/P9fum1V6AnA0pO4S7LOnket97yX6ZRQO6TWCYNX86nvav4JNdcWBQtt X-Received: by 2002:a05:6402:b25:b0:4ad:738b:6706 with SMTP id bo5-20020a0564020b2500b004ad738b6706mr4627004edb.2.1679551398687; Wed, 22 Mar 2023 23:03:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679551398; cv=none; d=google.com; s=arc-20160816; b=MVDPfmSEwVVqrOSZnw1w9OPiU4FAnaJjaQd7DeQbv8tzFl81l15hoJ81RLaDTF+7KT iJY+U9gJoOq59J1sDzVWE07IeSdLfN5HSBAyrr/EXb3TOagNU8cQJc8gBxa1XzQsOI4Z REjiNU1JHKpLkZcI3N6SYpC92wr4zCwYxKV7L1znNkdJJqFtxPxBmhdhdBUCoDP4orNb kGGLBSmrxRIsBpQ3jf7V/BsPN/pxM27iuj0bCkF60/mI8hnXUJ9vRmTIJh+S6mZMUYI1 3hWBmZ+pnjAwDNUjGxSAWF215yDrUwYfgW7I4jM+aC3tTZoUOYh4gtOm7Qewcpnvr0V6 fSAw== 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=3asURzMTqvnGXTfpGr6HUR/6oBrdGQuFANnKp7iJJ5g=; b=jKLT1t8KoYzRzf0l7f+Re9mwc34P6qO+Dix1vSNGq93Eb1uo6xq+F+0dgXbnnMwS8M PhP+E3MdZeWUwFcEdCamsYq1cmb2toUTkM3bXPTj7RW7NDqpDd4DIBe9aaw+m722QpWS 0atwhHzbc+dG/PTYAB9SGm2hx0dnmK0Tdtcw7U9TalZpGtEnH3bI0Tzez5me8uf146jF 5Xo+8BTx3Rw/00CqfLkFmB6fMb8TphSri8BUJXRSZAMwCoHpXU5HnD+3mzL42mY4wQ9D 8nCn4Lcq9kmKAKdyZwdHYfVVIP21xauAIUNWMREHTd0lbHoiIVRFgGKVPPcVFbyhOulV V7BA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=lJTvWVUs; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e14-20020a056402148e00b004fbf06895ffsi2140755edv.329.2023.03.22.23.02.55; Wed, 22 Mar 2023 23:03: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; dkim=pass header.i=@intel.com header.s=Intel header.b=lJTvWVUs; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230510AbjCWFcL (ORCPT + 99 others); Thu, 23 Mar 2023 01:32:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59374 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230484AbjCWFbo (ORCPT ); Thu, 23 Mar 2023 01:31:44 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C9AE212A9 for ; Wed, 22 Mar 2023 22:31:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549468; x=1711085468; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=q80CBcxn2QOQK8sFpcJ2zT5Gn5sp4JMMdHxIOJazfZ4=; b=lJTvWVUstMjMBb0jeCDsoQIZukw3dI/GGzt7ltKqkuptKrOME2a4vG29 GRy3eGiTQxhfS+6ECvvCXxQ8ePBWi6dBbKy4ynXBovIrGGlc1l+aRyPZ5 W9mBjBOC7qZIo8WOFk+R4zXh8JFbgZUu94fTf/CrVPFOZOox/XYeiMy7C ZNCPpxe1EGYWgTijm7gZCQXVde6KZP8mxOLAdBHU7KdJIcqD5SIbWmNoL Cavak/lL3vYJLcj8hqo6F68tDYKwG1tGTFGnMY10QErcqsAXFi4InVeVX 9ms5Fe+qfSDphee++OlHwQ7SFzaRX7Gw7leuJqhAG9eK7xdZtVYEeyl+N A==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779468" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779468" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567220" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567220" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:28 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 16/20] soundwire: intel_ace2x: use common helpers for bus start/stop Date: Thu, 23 Mar 2023 13:44:48 +0800 Message-Id: <20230323054452.1543233-17-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761137287279719580?= X-GMAIL-MSGID: =?utf-8?q?1761137287279719580?= From: Pierre-Louis Bossart The sequences are so far identical, so the abstraction is a bit over-engineered. In time we will simplify if there is no need to special case or work-around programming sequences. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_ace2x.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index 20b8806f7de6..2e33e8a00b55 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -316,6 +316,12 @@ const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { .register_dai = intel_register_dai, + .check_clock_stop = intel_check_clock_stop, + .start_bus = intel_start_bus, + .start_bus_after_reset = intel_start_bus_after_reset, + .start_bus_after_clock_stop = intel_start_bus_after_clock_stop, + .stop_bus = intel_stop_bus, + .link_power_up = intel_link_power_up, .link_power_down = intel_link_power_down, From patchwork Thu Mar 23 05:44:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73816 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2735369wrt; Wed, 22 Mar 2023 22:41:20 -0700 (PDT) X-Google-Smtp-Source: AK7set/VN670MnA4aQZcQLcLW4sDEB0rWay842KXwjjkp94C60Dox0IU8qu1e9ZtfJAqrI4r4WV0 X-Received: by 2002:a05:6a20:af09:b0:d6:a2f9:ca9a with SMTP id dr9-20020a056a20af0900b000d6a2f9ca9amr1620010pzb.42.1679550080588; Wed, 22 Mar 2023 22:41:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679550080; cv=none; d=google.com; s=arc-20160816; b=r1mzTcKaLBrBON/P2oKGbX6x7323xzoQ4EtMwDI2LEvuSm5rV3xcRyaO3KLOSy6esr haIyqEgK5tELJXoijC7u6Eh/JIWMwSckZKRGt/DF680Y+GZ5wo3DCIEn7B9tO1IeCX8B nmQmHrFJ4TvRJWeaPoRZDueqRCx9HnyK2DpkGm1qoZcZUKKNg5LdCdFxAEcBFErwZaVy l1yQB5g+dypCUOpTmtC2x0UWMO06xUmEPNg2wVX3Kfbs7lcvFt0A6m7pfDiTrovOPLeH veNuW7tNg5MocgOjIBpCjla8DQBNw9H61IThTDg69b5SsV84lHpEnRQWqbpWNk6Pcm0I 7jkQ== 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=TnGCqRNvSF7cM39BYxj+PHoEsbgY/zcrEgNOoMiMnJs=; b=xv0ax5a3TW1kmo9/N6tRzDeN/Isjvzat2yRDdxBw/j8hU7LABc7v9bLlN2/idVhPrR mTuPK5NvVITyr4NAgeVAebwsieUE/Sfz20HzMo/Nt9x0VyOpINya+crURVjWxtrf51NQ yh5FxTEg/v1pg7qjizfZQki+BTdzQGXk8FigfEyULLTZOaEZrRPkhSAiKpzcLEf9YUOz CXsOETwsiE1QwDJhD2IQC+OWggAWpjP3xXYMEzNjyJLM03OVnVd+h7lEL7LTSToSMA3B UmeQlDKRqnLx0RMf176B6dGE6ZapIh1FVno6JUg+6Ui5tFuQgT1mXIC1Y6+T9ES3qdNc hvMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=P8rk4T1n; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a11-20020a65640b000000b0050be087ee08si16963573pgv.365.2023.03.22.22.41.07; Wed, 22 Mar 2023 22:41:20 -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=@intel.com header.s=Intel header.b=P8rk4T1n; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230500AbjCWFci (ORCPT + 99 others); Thu, 23 Mar 2023 01:32:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230492AbjCWFcB (ORCPT ); Thu, 23 Mar 2023 01:32:01 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD82E31BD2 for ; Wed, 22 Mar 2023 22:31:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549483; x=1711085483; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zulnEGWCaE/ce7on2AHJOrEISXuutjX2aua9tmM2yVE=; b=P8rk4T1nDolSbVLSQmIHuiMGPFWQleRgDCqyVLt0FTKIb+H9VM5VpRuf tbhPc81S4e04hiQiZuo1/wrtiENIfAcbfXM3buhKknpjbecnGQQKJLTug jGvUVBvM/Y3K4XTlHdDhZTEm70V7R4XcHm+6IeAxvdexW6TVSYfVmdLl7 ce1ovynWcHxdcUhyaY74vprtup0nNiniE7LjkWl2P5xAJiNaEQczbtSJm eQf3JAfJVgPCoQTj06SBhWAC3tX4LtIYD1FG3gxG7w8Ds6/8QTt/tLSI8 ivws77o6S8/6Jas6TB4VF4/aq5wfx+MI93wICIsQFUFmEey2t4FNykkyA A==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779480" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779480" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567238" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567238" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:31 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 17/20] soundwire: intel_ace2x: enable wake support Date: Thu, 23 Mar 2023 13:44:49 +0800 Message-Id: <20230323054452.1543233-18-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761135905319890748?= X-GMAIL-MSGID: =?utf-8?q?1761135905319890748?= From: Pierre-Louis Bossart The WAKEEN and WAKESTS registers were moved to the per-link SHIM_VS area. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_ace2x.c | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index 2e33e8a00b55..fe950b3ea3bc 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -31,6 +31,41 @@ static void intel_shim_vs_init(struct sdw_intel *sdw) usleep_range(10, 15); } +static int intel_shim_check_wake(struct sdw_intel *sdw) +{ + void __iomem *shim_vs; + u16 wake_sts; + + shim_vs = sdw->link_res->shim_vs; + wake_sts = intel_readw(shim_vs, SDW_SHIM2_INTEL_VS_WAKESTS); + + return wake_sts & SDW_SHIM2_INTEL_VS_WAKEEN_PWS; +} + +static void intel_shim_wake(struct sdw_intel *sdw, bool wake_enable) +{ + void __iomem *shim_vs = sdw->link_res->shim_vs; + u16 wake_en; + u16 wake_sts; + + wake_en = intel_readw(shim_vs, SDW_SHIM2_INTEL_VS_WAKEEN); + + if (wake_enable) { + /* Enable the wakeup */ + wake_en |= SDW_SHIM2_INTEL_VS_WAKEEN_PWE; + intel_writew(shim_vs, SDW_SHIM2_INTEL_VS_WAKEEN, wake_en); + } else { + /* Disable the wake up interrupt */ + wake_en &= ~SDW_SHIM2_INTEL_VS_WAKEEN_PWE; + intel_writew(shim_vs, SDW_SHIM2_INTEL_VS_WAKEEN, wake_en); + + /* Clear wake status (W1C) */ + wake_sts = intel_readw(shim_vs, SDW_SHIM2_INTEL_VS_WAKESTS); + wake_sts |= SDW_SHIM2_INTEL_VS_WAKEEN_PWS; + intel_writew(shim_vs, SDW_SHIM2_INTEL_VS_WAKESTS, wake_sts); + } +} + static int intel_link_power_up(struct sdw_intel *sdw) { struct sdw_bus *bus = &sdw->cdns.bus; @@ -325,6 +360,9 @@ const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { .link_power_up = intel_link_power_up, .link_power_down = intel_link_power_down, + .shim_check_wake = intel_shim_check_wake, + .shim_wake = intel_shim_wake, + .sync_arm = intel_sync_arm, .sync_go_unlocked = intel_sync_go_unlocked, .sync_go = intel_sync_go, From patchwork Thu Mar 23 05:44:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73832 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2740818wrt; Wed, 22 Mar 2023 23:01:33 -0700 (PDT) X-Google-Smtp-Source: AK7set98zlvJ1GmJLmU064zvwKuFo72z6wK/3Jga1Xl9FmsM4ILolSQdN+xRvaL+FdMAdG3ahaQM X-Received: by 2002:a17:906:61b:b0:878:481c:c49b with SMTP id s27-20020a170906061b00b00878481cc49bmr9959710ejb.1.1679551293082; Wed, 22 Mar 2023 23:01:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679551293; cv=none; d=google.com; s=arc-20160816; b=zKjgnSUySlWXH34P+4ykBjVS2zlUTC2cu+sDbFbks3dGtskrlkvGYD6Z4qsFtGFqxE QB2VYsnXyummhs9BSYygZ61rNVTwOKS0Wv8nOkMfFjTGuAJ/D0un8Igl+e4bcUjjqjYj VuoPXq//tEmR0ptNM0AjLyccMGqjKQWqLTBqL0qZqjUJbP5Pyz2WIjEFzGa9xstrrA6U mkiqrU5cepqNDInP6feFSA80IRAJSg7ghPWjVZJglKtvnEJqNNNlVFOcOVD/nvY3gCLZ V8F9ezViS7E4IGtI91fzG8f4A93nlq6DSXHF2Br0veYMd5wCBUY6Qp93SeyFOCIsY2ze Anmg== 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=diI9TDbycgsTT171qWrmSRo+0brr9Ti/ObaqmiVdUUk=; b=Inrs2oS6NDDSS0erRhOhpatZCJLzHHYzaNnp3k1bFoD+fWpfyGLflGj8g+dic6Rp52 gPHOEN6pavfX15716jHCjlbkEs7JFtacae1K/ajwC19f6JKxY/zsAzRCtfE5wybFehVG Hp4HTveakakdFHNuha+Hw/p8ezzsBBN2e4zp95ego3X96nYwfyFtwWGFgNfZRmmRsHTf XkyEoCWvhjxez38ZslcsVYbOfJbPcfxJN7vd20uVcl9I6mitmq5+wde5lB1k2zNk2ViX LsJj0uk7x35qzdID1j4FfL2yzWXF1mpoHzXbnbNILbv1jotdzvUjeP3FL9fRLlGY5qMB GU/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=VkFCs20S; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v20-20020a1709063bd400b0092f55812555si17368417ejf.586.2023.03.22.23.01.09; Wed, 22 Mar 2023 23:01:33 -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=@intel.com header.s=Intel header.b=VkFCs20S; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231148AbjCWFcl (ORCPT + 99 others); Thu, 23 Mar 2023 01:32:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58284 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230353AbjCWFcC (ORCPT ); Thu, 23 Mar 2023 01:32:02 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7449B31E2F for ; Wed, 22 Mar 2023 22:31:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549486; x=1711085486; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=SbHuuXPdMaBgfOruu1bZggLsJuDVCwmXsFFke6IavfA=; b=VkFCs20SelT4nM33U1OqgJ8PAbgJWwk3BvEaOjmjx633pVpJ3dJhFVsu f51RBqPWnJSh5JucJv3JBV3Hmg8iobwqCUMF9MF5BPLdsVcnhac3RXuma YAWxVZ/LIufJL6kff+Er4hzu5zPwiXq/S1HqBrU1Syr1HQahSXdKj0tBp LkZqS22GMQCSnaC4I5vVzTu8rzX0K9JiDNdwvUwSP0n8SeEcYQ3/ht8M/ e8DligFsVuk4SvLb8vKkGm/vsE3gOg0vzIHzctIBQqDkJE4q19Wl2Pwc6 1Y+qG068/K81D8/3EA7N5Exj2N1sTsBhU49VZC9OdEJo92Qv8nK0Ll8O1 A==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779491" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779491" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567258" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567258" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:33 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 18/20] soundwire: intel_ace2x: add check_cmdsync_unlocked helper Date: Thu, 23 Mar 2023 13:44:50 +0800 Message-Id: <20230323054452.1543233-19-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761137176683264490?= X-GMAIL-MSGID: =?utf-8?q?1761137176683264490?= From: Pierre-Louis Bossart This is the last callback needed for all bus management routines on new hardware. Same concept as before, just different register. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_ace2x.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index fe950b3ea3bc..a12fee8a5bfa 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -186,6 +186,11 @@ static int intel_sync_go(struct sdw_intel *sdw) return ret; } +static bool intel_check_cmdsync_unlocked(struct sdw_intel *sdw) +{ + return hdac_bus_eml_sdw_check_cmdsync_unlocked(sdw->link_res->hbus); +} + /* * DAI operations */ @@ -366,6 +371,7 @@ const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { .sync_arm = intel_sync_arm, .sync_go_unlocked = intel_sync_go_unlocked, .sync_go = intel_sync_go, + .sync_check_cmdsync_unlocked = intel_check_cmdsync_unlocked, }; EXPORT_SYMBOL_NS(sdw_intel_lnl_hw_ops, SOUNDWIRE_INTEL); From patchwork Thu Mar 23 05:44:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73814 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2734363wrt; Wed, 22 Mar 2023 22:37:22 -0700 (PDT) X-Google-Smtp-Source: AKy350Y5VbehT9dkHuqvoGT/4mZtWTG6Gt8I4V1cyFRaGu78RCp1gBrvgWoRNWU7m/6QdsGxnaFf X-Received: by 2002:a17:903:1d1:b0:1a0:76d1:545c with SMTP id e17-20020a17090301d100b001a076d1545cmr4821630plh.10.1679549841979; Wed, 22 Mar 2023 22:37:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679549841; cv=none; d=google.com; s=arc-20160816; b=WGDzV36bfGerQrzzIPwz/Kot4SQ68RQvX3FAMN4X0AG0lpl9kvNjSacuGg+NKP4k1a ybYJ0NZsyZjraMRh+QU6bhT+niBP++9ZGno4tKjyMVUBpF7/+uCuSh5DiXvedUGcvsPX tO1xz2RRllJATOH/3Oxz/4RSdAieE4cjC3VmIwJ5pLOF5ojkZwJLAQ/TyV5Ht10YKefX q67lGVZ+/xySsmwF+xYzFqB4xqp00pmoDu0hn6nRLtdYayaXxovVLYgJxT1oObmxSI1/ AZYHTdCvYW9UFZPnrfjHrdQ5dTnXIHAoU4obSW+Kb7Mya9Oe80UGzpYc4tGu0xhKtDcY UHFw== 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=0akb/ucbsR6EOpM6ZL9plcwCYNPuCK/NKNlDLF1TEiU=; b=bmudHi6AeZuwVDvTWTch+5O2CymD39Kz2lO3vFCma+Xc3jE+oNdmATav5oaV+i6Bv8 0G+nJUlJzPzs2+7I6Y0sLHK6f1GL+guEP86I8sHILVmiAVQs8lsv9Rw0sQiZ+ouQ+Khv mfmrmksM0Ce+yYTUyIbpdRLhVWfpntaKJaN/p7UMofUkjKnYiK6EonAEpEaMLeqnC0Us kuqwWoKXRd7joZM1D0ftzLrswq201MrAvKZFF8RDTOrMjIefgPQ511QzJdWHqqblkL39 ECGTwBUTC8hWB6eLrlUX+T1f55nerDamCCSeJwXuz3vTU3B0cTOT/wILK53XVaKbDElu dG8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="F/vVsqcs"; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 37-20020a631665000000b0050239e95d34si16956301pgw.260.2023.03.22.22.37.09; Wed, 22 Mar 2023 22:37:21 -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=@intel.com header.s=Intel header.b="F/vVsqcs"; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231190AbjCWFcz (ORCPT + 99 others); Thu, 23 Mar 2023 01:32:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59408 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230487AbjCWFcZ (ORCPT ); Thu, 23 Mar 2023 01:32:25 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AFAB631BE4 for ; Wed, 22 Mar 2023 22:31:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549489; x=1711085489; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gtkWDGGprYUCa/NujUo+nrfpqYowlmMRMlh2EJAtBoc=; b=F/vVsqcsOIYBCZKC6fYc8SSuRNavVLDZn3teRJJo0U/O33x9Zy5wUys8 8wuJw5krE2kzNjKp/Zwq1h/ple0yW27Uo2LnNvtlJivK3tRrZqSemXi6u 09SoSDW89ifsN6xMNfzaYwIa1Mg85ZL4V9CdFj66Qw/SNaJhzGkpM+4Hc +lrPxkdPn+cq+0W76XeMR3lVYIOCFSbaZ3dMGozCa4Ol0SrXHBkqGjCKy ggpYXoalXngkuh12PIOev4FR2chefy5BP6QxU8xDgR1vnsy8M2uo7Puy6 DwxFXStkxI1cd1SreB7zOTCGPWd/70gu23Fvc4bPB7ztsOjfjMaoBcWFQ A==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779505" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779505" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567269" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567269" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:36 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 19/20] soundwire: bus: add new manager callback to deal with peripheral enumeration Date: Thu, 23 Mar 2023 13:44:51 +0800 Message-Id: <20230323054452.1543233-20-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761135655111780282?= X-GMAIL-MSGID: =?utf-8?q?1761135655111780282?= From: Pierre-Louis Bossart When a peripheral reports as ATTACHED, the manager may need to follow a programming sequence, e.g. to assign DMA resources and/or assign a command queue for that peripheral. This patch adds an optional callback, which will be invoked every time the peripheral attaches. This might be overkill in some scenarios, and one could argue that this should be invoked only on the first attachment. The bus does not however track this first attachment with any existing state-mirroring variable, and using dev_num_sticky would not work across suspend-resume cycles. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/bus.c | 3 +++ include/linux/soundwire/sdw.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index b6aca59c3130..35f49bcc53e5 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -716,6 +716,9 @@ static int sdw_assign_device_num(struct sdw_slave *slave) /* After xfer of msg, restore dev_num */ slave->dev_num = slave->dev_num_sticky; + if (bus->ops && bus->ops->new_peripheral_assigned) + bus->ops->new_peripheral_assigned(bus, dev_num); + return 0; } diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index ef645de13ae9..c076a3f879b3 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -846,6 +846,7 @@ struct sdw_defer { * @post_bank_switch: Callback for post bank switch * @read_ping_status: Read status from PING frames, reported with two bits per Device. * Bits 31:24 are reserved. + * @new_peripheral_assigned: Callback to handle enumeration of new peripheral. */ struct sdw_master_ops { int (*read_prop)(struct sdw_bus *bus); @@ -860,7 +861,7 @@ struct sdw_master_ops { int (*pre_bank_switch)(struct sdw_bus *bus); int (*post_bank_switch)(struct sdw_bus *bus); u32 (*read_ping_status)(struct sdw_bus *bus); - + void (*new_peripheral_assigned)(struct sdw_bus *bus, int dev_num); }; /** From patchwork Thu Mar 23 05:44:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 73833 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2741046wrt; Wed, 22 Mar 2023 23:02:06 -0700 (PDT) X-Google-Smtp-Source: AK7set8A7dzLM2ep4dVV9oDK+gl7Mu91uqog9x/nvbH3Ied3OM+HCmGocZ/uSuH5fp8bSiLKvuFW X-Received: by 2002:a17:903:41c4:b0:1a1:b137:4975 with SMTP id u4-20020a17090341c400b001a1b1374975mr6459592ple.49.1679551326513; Wed, 22 Mar 2023 23:02:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679551326; cv=none; d=google.com; s=arc-20160816; b=UKKGE1SPS9yaEeSpvzbe+OzxnEvrRUQ11M025yzotDB5c5ia4Ob9VOsA9tkMHwGXIo 39KCTNfZMfrXJGUZ6mzd8Gjo1DwSfvFm2riUHyRiSpFwrhxgHzoK7y6+0iAmbgFRk3a0 WIr0QypwYOcqu8k7yVlHKVwNTiZBjCmC+BjDqgsnmjyvwWUy9QD+W9KHkmF2zQC+2oeU v7CUcianfR84CQe/VbTHcu+o6ym2lpqO5YQtg7gFFaA5dCx7KZnkUl73wKlUwPPloAkx 9ckyTQ4x9+FIXFho28ANbR1wJf+v91zQz4ENnD0ZDUac+iBXHjCFTJE87JgStpKI5+08 2o9w== 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=rTwsq9F14ZOdztyFU3HhyI+LoRxLvbV7olCF/ItTltg=; b=OmKxpaTUb7SmnESjfuZESebet7oycmbPl1rHiw2pcAZ5Q+SLFyIvb+0T6iNKq7Wsaz UHqT1hwe2DE376GxanxKcma1bF8wzYm16N5um0DcPk0hKGArLFnh3WIp+RXfBq0Lq8tW aV/LboPu4UM2KfS1uq5QDXayRumWiueFZX1LSR7FRkpLRnebxztaursPZod4Rsv5bwa2 UQy85JjR7YxtTeTZZL2GecJH60mBga0Qi7yVAzqfViLIoT3WxAwiU+fpj+zZKrfg1X0M 67rTe73o8RvoML7EsYxX7DYTi7j+Erkn2Dkevelc2b7DnLGa+cqB2e5m9bWzUz4WP0+1 Qc0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="VMZ3Wyb/"; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i5-20020a17090332c500b001a19248bfcdsi19370257plr.436.2023.03.22.23.01.53; Wed, 22 Mar 2023 23:02:06 -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=@intel.com header.s=Intel header.b="VMZ3Wyb/"; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229819AbjCWFdL (ORCPT + 99 others); Thu, 23 Mar 2023 01:33:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230406AbjCWFcd (ORCPT ); Thu, 23 Mar 2023 01:32:33 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C848632E69 for ; Wed, 22 Mar 2023 22:31:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679549501; x=1711085501; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=R3GyCN8p+cJBxO9BTibcqpeTRWzFQliw1LPEGnZdocY=; b=VMZ3Wyb/VSSzKrOPiOwT7pc5BwcZQuDv0PoaGz9TZsUpT59uXeQd1sbv +7O/tB9b03s6Ss62knNnx4jGubyLTMoUC0WSLFoJvoNpMYWAdN4PPjlgY BMN+rAvA44Bqj3K788wDANuL0qKElPpSf+Ezcf8IikZfEb+h3aKEOhI82 3qisOA14Y/SLxfrl8rIv8ZnRndMeDFZa3j3k7M98I2BFG5Fhe0Cl3Od+8 ODznk2zSdkrpS5wkgN8RCas8Khhln0ZC3kE+UzjPUlWoJcxWT48GmNY84 0QXcsUCs1go7QadRFT04IeFFbYS2fPdFmj3BsnzCjwomXfMf8s9LgTiXQ w==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="327779513" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="327779513" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="675567305" X-IronPort-AV: E=Sophos;i="5.98,283,1673942400"; d="scan'208";a="675567305" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 22:30:39 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org, broonie@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com, tiwai@suse.de Subject: [PATCH 20/20] soundwire: intel_ace2x: add new_peripheral_assigned callback Date: Thu, 23 Mar 2023 13:44:52 +0800 Message-Id: <20230323054452.1543233-21-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> References: <20230323054452.1543233-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761137211856250465?= X-GMAIL-MSGID: =?utf-8?q?1761137211856250465?= From: Pierre-Louis Bossart Add the abstraction needed to only program the LSDIID registers for the HDaudio extended links. It's perfectly fine to program this register multiple times in case devices lose sync and reattach. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/intel_ace2x.c | 12 ++++++++++++ drivers/soundwire/intel_auxdevice.c | 16 ++++++++++++++++ include/linux/soundwire/sdw_intel.h | 3 +++ 3 files changed, 31 insertions(+) diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c index a12fee8a5bfa..65deb4345354 100644 --- a/drivers/soundwire/intel_ace2x.c +++ b/drivers/soundwire/intel_ace2x.c @@ -350,6 +350,16 @@ static int intel_register_dai(struct sdw_intel *sdw) dais, num_dai); } +static void intel_program_sdi(struct sdw_intel *sdw, int dev_num) +{ + int ret; + + ret = hdac_bus_eml_sdw_set_lsdiid(sdw->link_res->hbus, sdw->instance, dev_num); + if (ret < 0) + dev_err(sdw->cdns.dev, "%s: could not set lsdiid for link %d %d\n", + __func__, sdw->instance, dev_num); +} + const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { .debugfs_init = intel_ace2x_debugfs_init, .debugfs_exit = intel_ace2x_debugfs_exit, @@ -372,6 +382,8 @@ const struct sdw_intel_hw_ops sdw_intel_lnl_hw_ops = { .sync_go_unlocked = intel_sync_go_unlocked, .sync_go = intel_sync_go, .sync_check_cmdsync_unlocked = intel_check_cmdsync_unlocked, + + .program_sdi = intel_program_sdi, }; EXPORT_SYMBOL_NS(sdw_intel_lnl_hw_ops, SOUNDWIRE_INTEL); diff --git a/drivers/soundwire/intel_auxdevice.c b/drivers/soundwire/intel_auxdevice.c index b02cef4f4b66..6e02782ef211 100644 --- a/drivers/soundwire/intel_auxdevice.c +++ b/drivers/soundwire/intel_auxdevice.c @@ -60,6 +60,21 @@ static int generic_post_bank_switch(struct sdw_bus *bus) return sdw->link_res->hw_ops->post_bank_switch(sdw); } +static void generic_new_peripheral_assigned(struct sdw_bus *bus, int dev_num) +{ + struct sdw_cdns *cdns = bus_to_cdns(bus); + struct sdw_intel *sdw = cdns_to_intel(cdns); + + /* paranoia check, this should never happen */ + if (dev_num < INTEL_DEV_NUM_IDA_MIN || dev_num > SDW_MAX_DEVICES) { + dev_err(bus->dev, "%s: invalid dev_num %d\n", __func__, dev_num); + return; + } + + if (sdw->link_res->hw_ops->program_sdi) + sdw->link_res->hw_ops->program_sdi(sdw, dev_num); +} + static int sdw_master_read_intel_prop(struct sdw_bus *bus) { struct sdw_master_prop *prop = &bus->prop; @@ -117,6 +132,7 @@ static struct sdw_master_ops sdw_intel_ops = { .pre_bank_switch = generic_pre_bank_switch, .post_bank_switch = generic_post_bank_switch, .read_ping_status = cdns_read_ping_status, + .new_peripheral_assigned = generic_new_peripheral_assigned, }; /* diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h index bafc6f2554b0..1a8f32059cd8 100644 --- a/include/linux/soundwire/sdw_intel.h +++ b/include/linux/soundwire/sdw_intel.h @@ -399,6 +399,7 @@ struct sdw_intel; * @sync_go: helper for multi-link synchronization * @sync_check_cmdsync_unlocked: helper for multi-link synchronization * and bank switch - shim_lock is assumed to be locked at higher level + * @program_sdi: helper for codec command/control based on dev_num */ struct sdw_intel_hw_ops { void (*debugfs_init)(struct sdw_intel *sdw); @@ -425,6 +426,8 @@ struct sdw_intel_hw_ops { int (*sync_go_unlocked)(struct sdw_intel *sdw); int (*sync_go)(struct sdw_intel *sdw); bool (*sync_check_cmdsync_unlocked)(struct sdw_intel *sdw); + + void (*program_sdi)(struct sdw_intel *sdw, int dev_num); }; extern const struct sdw_intel_hw_ops sdw_intel_cnl_hw_ops;