From patchwork Thu Feb 27 14:06:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 13994576 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17]) (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 28C81236A62; Thu, 27 Feb 2025 14:06:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.17 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740665220; cv=none; b=kn/IAwa/KGio1TqUSGoif/+XJ0NFX5wDNF7Y8S0ydGMOPfeeYrn0hSFsyS+tU881yFaxokXGlJ8GFM8FYi4oQ3ziyO6j2/6pWViq/RxVYOPCsu5AoqfXaOi9QUeIqQc1ldrms1KEU5DUApbqEWAcGnzJlvsU3Od8hXgxB6I3SPk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740665220; c=relaxed/simple; bh=V6z1mbHtzjhlkL0FbBMywzmI7KnvbrIMxHqOYIDsMhk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Ve1ff4sZDxBX99KtBhAhViQJfU6DYrjVGqnu8tucAOKn+SoB7hHvcaWI0uaCyFDS1bSNAmMICiIWDDH/cDcSHb4Nhh0U4eRuDhbwsZXn5af+EYq3c633QwAY5zBzaoatPV9YgZD6UkaBxmHdCr6g2hXdE0m4XVxIJ9CKZytD8pk= 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=GQ2tyXLv; arc=none smtp.client-ip=192.198.163.17 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="GQ2tyXLv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1740665219; x=1772201219; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=V6z1mbHtzjhlkL0FbBMywzmI7KnvbrIMxHqOYIDsMhk=; b=GQ2tyXLvXfBuFnNgSZ1eTEd1vSBQXGEMOlhgCYOjGZSQruhwh3dOgGto pcgmPXYiQKAi5NcxYOzH9T3WogLpf0Ge/vCc9zpsDc4Q0wZ7ehhCIu/Pm 8G3Eb8xc56LW2pffPz3LVN5HGBQJLwy+Z9VfJYVZPmJYWS1uchuHAPosF Lh3Ff9UKEfCIyNh4e1VMhl1D0Bcz5eElezEtdgCyO4sq/XsNNOJMp9wOZ oZAvSTVvNoyiQWL5eMsGB34ObQcyc91nbjAUHvM31Fm1SjVlPTfNAn1k5 PQY7gLWbyuPv7FHiHu72tqilz6ZE+5jHvN+Y9OjL4xtgU1NAbdDPyD7py w==; X-CSE-ConnectionGUID: YIKvOxF5SYKpXF0L9slb8A== X-CSE-MsgGUID: cWsemmOVShWu3eEuCqUt+w== X-IronPort-AV: E=McAfee;i="6700,10204,11358"; a="41437995" X-IronPort-AV: E=Sophos;i="6.13,319,1732608000"; d="scan'208";a="41437995" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Feb 2025 06:06:33 -0800 X-CSE-ConnectionGUID: OcWyuqeEQAe4rUxYYk5NaQ== X-CSE-MsgGUID: dWZyGo7bSoed2xsUVlKHrQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,319,1732608000"; d="scan'208";a="116831546" Received: from ssimmeri-mobl2.amr.corp.intel.com (HELO yungchua-desk.intel.com) ([10.124.220.154]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Feb 2025 06:06:30 -0800 From: Bard Liao To: linux-sound@vger.kernel.org, broonie@kernel.org, tiwai@suse.de, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.dev, bard.liao@intel.com Subject: [PATCH v4 02/16] soundwire: cadence: add BTP support for DP0 Date: Thu, 27 Feb 2025 22:06:01 +0800 Message-ID: <20250227140615.8147-3-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250227140615.8147-1-yung-chuan.liao@linux.intel.com> References: <20250227140615.8147-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 From: Pierre-Louis Bossart The register definitions are missing a BULK_ENABLE bitfield which must be set for DP0. In addition, the existing mapping from PDI to Data Port is 1:1. That's fine for PCM streams which are by construction in one direction only. The BTP/BRA protocol is bidirectional and relies on DP0 only, which breaks the 1:1 mapping. DP0 MUST be mapped to both PDI0 and PDI1, with PDI0 taking care of the TX direction and PDI1 of the RX direction. Signed-off-by: Pierre-Louis Bossart Signed-off-by: Bard Liao Reviewed-by: Péter Ujfalusi Reviewed-by: Liam Girdwood Reviewed-by: Ranjani Sridharan --- drivers/soundwire/cadence_master.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c index 68be8ff3f02b..b29929b59510 100644 --- a/drivers/soundwire/cadence_master.c +++ b/drivers/soundwire/cadence_master.c @@ -184,6 +184,7 @@ MODULE_PARM_DESC(cdns_mcp_int_mask, "Cadence MCP IntMask"); #define CDNS_PORTCTRL_TEST_FAILED BIT(1) #define CDNS_PORTCTRL_DIRN BIT(7) #define CDNS_PORTCTRL_BANK_INVERT BIT(8) +#define CDNS_PORTCTRL_BULK_ENABLE BIT(16) #define CDNS_PORT_OFFSET 0x80 @@ -1917,13 +1918,20 @@ void sdw_cdns_config_stream(struct sdw_cdns *cdns, if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL) val |= CDNS_PORTCTRL_TEST_FAILED; + } else if (pdi->num == 0 || pdi->num == 1) { + val |= CDNS_PORTCTRL_BULK_ENABLE; } offset = CDNS_PORTCTRL + pdi->num * CDNS_PORT_OFFSET; cdns_updatel(cdns, offset, - CDNS_PORTCTRL_DIRN | CDNS_PORTCTRL_TEST_FAILED, + CDNS_PORTCTRL_DIRN | CDNS_PORTCTRL_TEST_FAILED | + CDNS_PORTCTRL_BULK_ENABLE, val); - val = pdi->num; + /* The DataPort0 needs to be mapped to both PDI0 and PDI1 ! */ + if (pdi->num == 1) + val = 0; + else + val = pdi->num; val |= CDNS_PDI_CONFIG_SOFT_RESET; val |= FIELD_PREP(CDNS_PDI_CONFIG_CHANNEL, (1 << ch) - 1); cdns_writel(cdns, CDNS_PDI_CONFIG(pdi->num), val);