From patchwork Wed Feb 5 07:42:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 13960644 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C725228387; Wed, 5 Feb 2025 07:42:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738741364; cv=none; b=shVNMZ5o3woSkeUA9jfaWd8T4YDp8/amIHasQoWpLTo7ZttO0b7XQp67UTOoifNZEK04uJWjsJ/4Atp0jXfdcMDu/KsVT4kyfvLxpaivBEJlz0mQaGYEvCpJjce4Tm3oDFJn31oKw9fHQlSxzWvwbRAjg91fqx+gnYCnW/3YYm8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738741364; c=relaxed/simple; bh=p/XwvEtOayhUcVU2PTtulspq0uwJ29NZ9YwKbi0L6X4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OaUaDhClI4Il7pgAhWQL1u5UMM/XJg1EZfFfeogRmCcFvphkNtol6tXAuQaAfA1VSYaRXV3ANgjJ1/wFMCxPfaakiymFXmlYZWOhQ6uxGlTO3ogGUd2uGcp1obSJPKTlBIbbjLj4rYsLeIiya05h9HZeX4uuJAN18nQKlJu+Les= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=oJ5WS/mb; arc=none smtp.client-ip=192.198.163.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="oJ5WS/mb" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1738741363; x=1770277363; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=p/XwvEtOayhUcVU2PTtulspq0uwJ29NZ9YwKbi0L6X4=; b=oJ5WS/mbhAWLmEVe+kWFxDNL8icfcv/rNkeO9rBBL8HLDLPZP2qnlvqI hgZnpp9p7iJus1l4vkQtt4n5KtyMbL4288PSaNmh2Y2/WP8aJjPT+mFFO HlXEJQRszm5VE7MBvu4vVPbE3D0jx372Dr42XnX7eh5ElNStW//LWK9GI 2hm7UtWm3cabm4b/DR8CGZAhlutONd+zTz/+1oPImjhSpdHaACd3k6lO7 2jwEhn01usg5vdLD3XB/IDhCgtCgqOLhMxQFl7amRxhNegPNtDUQKwC8o AXSAuVO/YyF1qRCOB6/Bg47AzVN9bcvr1/u3X+wlAxbzl4uPStLg7NDrm A==; X-CSE-ConnectionGUID: eKzGdK7/QGWYBbIh3ZL9DA== X-CSE-MsgGUID: 1Ec/SBrPTnKAKoR48Muo/g== X-IronPort-AV: E=McAfee;i="6700,10204,11336"; a="38499680" X-IronPort-AV: E=Sophos;i="6.13,260,1732608000"; d="scan'208";a="38499680" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2025 23:42:42 -0800 X-CSE-ConnectionGUID: 7GS2XLmFTdSwWip8yyaaEA== X-CSE-MsgGUID: NyCqj0/mQxSPR6VRYHQjvw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,260,1732608000"; d="scan'208";a="111004880" Received: from mdroper-mobl2.amr.corp.intel.com (HELO yungchua-desk.intel.com) ([10.124.223.241]) by fmviesa008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2025 23:42:41 -0800 From: Bard Liao To: linux-sound@vger.kernel.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.dev, bard.liao@intel.com Subject: [PATCH 1/2] soundwire: cadence_master: set frame shape and divider based on actual clk freq Date: Wed, 5 Feb 2025 15:42:31 +0800 Message-ID: <20250205074232.87537-2-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250205074232.87537-1-yung-chuan.liao@linux.intel.com> References: <20250205074232.87537-1-yung-chuan.liao@linux.intel.com> Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Frame shape and curr_dr_freq could be updated by sdw_compute_bus_params(). Peripherals will set curr_dr_freq as their frequency. Managers should do the same. Then update frame shape according to the actual bus frequency. Signed-off-by: Bard Liao Reviewed-by: Ranjani Sridharan Reviewed-by: Péter Ujfalusi --- drivers/soundwire/cadence_master.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c index 35b28320f466..350c5fe927ed 100644 --- a/drivers/soundwire/cadence_master.c +++ b/drivers/soundwire/cadence_master.c @@ -1343,7 +1343,7 @@ static u32 cdns_set_initial_frame_shape(int n_rows, int n_cols) return val; } -static void cdns_init_clock_ctrl(struct sdw_cdns *cdns) +static int cdns_init_clock_ctrl(struct sdw_cdns *cdns) { struct sdw_bus *bus = &cdns->bus; struct sdw_master_prop *prop = &bus->prop; @@ -1357,14 +1357,25 @@ static void cdns_init_clock_ctrl(struct sdw_cdns *cdns) prop->default_row, prop->default_col); + if (!prop->default_frame_rate || !prop->default_row) { + dev_err(cdns->dev, "Default frame_rate %d or row %d is invalid\n", + prop->default_frame_rate, prop->default_row); + return -EINVAL; + } + /* Set clock divider */ - divider = (prop->mclk_freq / prop->max_clk_freq) - 1; + divider = (prop->mclk_freq * SDW_DOUBLE_RATE_FACTOR / + bus->params.curr_dr_freq) - 1; cdns_updatel(cdns, CDNS_MCP_CLK_CTRL0, CDNS_MCP_CLK_MCLKD_MASK, divider); cdns_updatel(cdns, CDNS_MCP_CLK_CTRL1, CDNS_MCP_CLK_MCLKD_MASK, divider); + /* Set frame shape base on the actual bus frequency. */ + prop->default_col = bus->params.curr_dr_freq / + prop->default_frame_rate / prop->default_row; + /* * Frame shape changes after initialization have to be done * with the bank switch mechanism @@ -1377,6 +1388,8 @@ static void cdns_init_clock_ctrl(struct sdw_cdns *cdns) ssp_interval = prop->default_frame_rate / SDW_CADENCE_GSYNC_HZ; cdns_writel(cdns, CDNS_MCP_SSP_CTRL0, ssp_interval); cdns_writel(cdns, CDNS_MCP_SSP_CTRL1, ssp_interval); + + return 0; } /** @@ -1410,9 +1423,12 @@ EXPORT_SYMBOL(sdw_cdns_soft_reset); */ int sdw_cdns_init(struct sdw_cdns *cdns) { + int ret; u32 val; - cdns_init_clock_ctrl(cdns); + ret = cdns_init_clock_ctrl(cdns); + if (ret) + return ret; sdw_cdns_check_self_clearing_bits(cdns, __func__, false, 0); From patchwork Wed Feb 5 07:42:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 13960645 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 559722288EC; Wed, 5 Feb 2025 07:42:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738741365; cv=none; b=HVNiPDN8vDHs6lWJ3h5BOxAMG0M2aAzXyGyvIZsqD/Hu8fGyUE9YcZt7H6ZceHpp+0XTzZmfjQOSNSeVuDYZEEfMp45Pg/o9fkMuTExlT24ncAah3IqYb8LPfdfr/dusmPqwL+/KiSsGU4oCj6E0LLz+U5hpBBtYoSZS9rchNgw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738741365; c=relaxed/simple; bh=RrCJfR2BB9gau+/RvmNFEMgvWMGS49Ta+AtEXTFWNCs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XWVzx4SEps5432IDgwuCAQh72ma4uqfvKgHCsts+E5LmCkJqyGw0mE7jc3Z1kFl4DxDD7s8IcbTAH1f/wOR6lLcbuZmlzjMWLEkXukJYhcK3SI/4u031EGzW7DMqhxdAisZihPJPCc53MVnj46hlIuw+dwY3654sEBCaXl1DRQs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Gbp0QkOn; arc=none smtp.client-ip=192.198.163.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Gbp0QkOn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1738741364; x=1770277364; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RrCJfR2BB9gau+/RvmNFEMgvWMGS49Ta+AtEXTFWNCs=; b=Gbp0QkOnX0rEaGOhB4sSHmJjt0YhJTVgcOe8++6KMhtO7+9myUiWuBTR nHoTQlPkSZBClk6I+a8qCgIxj1gHeK76Qb51QvFmI3NrWizIhTjcxcLuV 4ZJ5F7hkVhMIjN67YDKAKBxJZ8FCMcp6eBi6r5BqAyTn9KDuDuHbVIIgp DNFBEZDVvkyYb89J7+4iIehR7v8Jhht0RSuVy1nhDUl+cM8YWP8kz5N9b m+AHvFzkZm4BEp2OyfX737VNn12lPbQAMYlKvLH+XLuq3TfUMaZ4oIIhP QLdASHsZR7JX8m+d7cCHg6qgQjjRRcsXBpSN0HK42LUBDq1ARug+01OlW A==; X-CSE-ConnectionGUID: loZBdGzSSz+t3v2ZHKWoPQ== X-CSE-MsgGUID: tHqWrbQDS9qv9EjXHiRk1w== X-IronPort-AV: E=McAfee;i="6700,10204,11336"; a="38499688" X-IronPort-AV: E=Sophos;i="6.13,260,1732608000"; d="scan'208";a="38499688" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2025 23:42:43 -0800 X-CSE-ConnectionGUID: JwsJZCG0SJ2YO0xhdYdDCw== X-CSE-MsgGUID: qrhHcEtQQ4KbT00A78zViA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,260,1732608000"; d="scan'208";a="111004886" Received: from mdroper-mobl2.amr.corp.intel.com (HELO yungchua-desk.intel.com) ([10.124.223.241]) by fmviesa008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2025 23:42:42 -0800 From: Bard Liao To: linux-sound@vger.kernel.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.dev, bard.liao@intel.com Subject: [PATCH 2/2] Revert "soundwire: intel_auxdevice: start the bus at default frequency" Date: Wed, 5 Feb 2025 15:42:32 +0800 Message-ID: <20250205074232.87537-3-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250205074232.87537-1-yung-chuan.liao@linux.intel.com> References: <20250205074232.87537-1-yung-chuan.liao@linux.intel.com> Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Now, we can support more than 1 soundwire bus clock frequency. This reverts commit c326356188f1dc2d7a2c55b30dac6a8b76087bc6. Signed-off-by: Bard Liao Reviewed-by: Ranjani Sridharan Reviewed-by: Péter Ujfalusi --- drivers/soundwire/intel_auxdevice.c | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/drivers/soundwire/intel_auxdevice.c b/drivers/soundwire/intel_auxdevice.c index b34b897400fc..5ea6399e6c9b 100644 --- a/drivers/soundwire/intel_auxdevice.c +++ b/drivers/soundwire/intel_auxdevice.c @@ -243,30 +243,9 @@ static int sdw_master_read_intel_prop(struct sdw_bus *bus) static int intel_prop_read(struct sdw_bus *bus) { - struct sdw_master_prop *prop; - /* Initialize with default handler to read all DisCo properties */ sdw_master_read_prop(bus); - /* - * Only one bus frequency is supported so far, filter - * frequencies reported in the DSDT - */ - prop = &bus->prop; - if (prop->clk_freq && prop->num_clk_freq > 1) { - unsigned int default_bus_frequency; - - default_bus_frequency = - prop->default_frame_rate * - prop->default_row * - prop->default_col / - SDW_DOUBLE_RATE_FACTOR; - - prop->num_clk_freq = 1; - prop->clk_freq[0] = default_bus_frequency; - prop->max_clk_freq = default_bus_frequency; - } - /* read Intel-specific properties */ sdw_master_read_intel_prop(bus);