From patchwork Fri Mar 12 11:39:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 398570 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp1121162jai; Fri, 12 Mar 2021 03:40:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJwA4KZuEul+2aHiDPMOSTQMJ5vt6Dq1GtShG9T3HtTJ32bIAazcEAOzitgCEU/Lxzle7LD6 X-Received: by 2002:a17:907:3e9e:: with SMTP id hs30mr8221912ejc.66.1615549225129; Fri, 12 Mar 2021 03:40:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615549225; cv=none; d=google.com; s=arc-20160816; b=MZ0KRei8nl1Sc3XGAoRTXDdiIzlkftW/uWa9mGd10xg3syeTAnoYPBATF7eG/amaVP vbcLKICmKKn6fdBhUG0ZDWTxZAujAuyb9weHzst3yGuPlRsCqfJbK6UUNsa7EY/F7cVq sPDnmE4Xqsv/Iz5pF32n0scJF2w7Q7GBofS6If2REciPprbkxOAGSvUaCdPsFzxq3LWJ HjHPNQkt39Edx/40OvPzzmfWoJFFby2JKkyq+u0eve89ZAgY7pdf0ekwe/2YLvAcVez1 8ZxJBl3aaK3JB1NfmAyXoi88yugN2/vlnJcRw21d71+sBDgcknH4RFFb9Y3v62tfXaOf 3x1g== 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=6S4oc3H/pGD3ohc32wC+7IuRuvb/2oR7Yf16M/iJXA4=; b=FrXOLhaCU3RbWUyUErO95eO80i4+vK6YzLlpPu1h31ZWWhdXQCjujfhX3jbcjXi+ad 35VXYAMX5cnEYkfHY+Mgeh/n4slDxHMB8ZD2dauU4pK4jGde++lXVpWfWjb9NA8XMbjH ZkTrNzb9BR4JloKR+/HUfaKMMgWhDgP2jxrUjZx/VSxa0GwhrWDKoe+YlAiSt5rM1dD6 7HuiRxfKIfMzh6chnRHJ7qr3z4coSvNLlYRdSG8zjcsTnpAq8EADoVo6h/AUr8x3Ms5c M3pSixu8/LWwP88bunVEslYbphK5DHKxvafBB57lhXioYgvM2xkNUPnwqNqo8TAhkjQc 7FHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=un9b6szD; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b10si3831085edz.577.2021.03.12.03.40.24; Fri, 12 Mar 2021 03:40:25 -0800 (PST) Received-SPF: pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=un9b6szD; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230118AbhCLLjx (ORCPT + 6 others); Fri, 12 Mar 2021 06:39:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50596 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230302AbhCLLji (ORCPT ); Fri, 12 Mar 2021 06:39:38 -0500 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A559C061574 for ; Fri, 12 Mar 2021 03:39:38 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id d139-20020a1c1d910000b029010b895cb6f2so14987072wmd.5 for ; Fri, 12 Mar 2021 03:39:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6S4oc3H/pGD3ohc32wC+7IuRuvb/2oR7Yf16M/iJXA4=; b=un9b6szDn8WtZw3vwLqnQuMB4nFKl5WiH8RPl6NXlTV5rMBuoEd+uvRZareK9f9nUl H1OM3HdQZwto8kDdYFqT5YZeEnsmQzK0QpJ5B3GEaB6kmmyw81iKMDL/AqITE6XOYdQT j8VgBR7YRBWOECbXyqvy5XkJVDEHM5vi7gwEoKeoy95gEU9AwVZSqV1IE1U2nq0L8yHT 24si0axqGkv6z1IAQzkRAg/eEE9tHI+IqAdSFMeUoIUIzboH1McQC4hLS2QKboD0rCii 8yda9dFBsW8hj4ED3PISLMUZJelAclSXRZN1ytTxQFTLrG7F9WmA1sgwa+1kkw4MSTIp 1kUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6S4oc3H/pGD3ohc32wC+7IuRuvb/2oR7Yf16M/iJXA4=; b=eOhDLrqK6VPIf/LOzGZPifMeBdwCIsTUlMraGCOrJoNKAv0gHnZ/zfie63Wbv8PlCk Z2zwMFKxqcN4H3dhVgL69g5WCFounhGzqO7dwqrJS0yGgHMhxPESLonMJ4gSW9ePXC56 pDt4bW2KHa7vWXwqqzTXlKYHSAn6Wc37EtIrEBQgbirFyik2mnV3R746NTinhD3K2UcY +oHYKnAxxZnuAmKhD6vD61zQdNiDvDJYfpHaDHDDbINn2kZY+XqCdCI/1VSVBSBfXOK0 XEQEW5XhxTfFFaUoorTPVpB7Cao+YhF9DyJQMHWOnefVnBDk5wXHcUohXWkpZAIBGTK3 kutg== X-Gm-Message-State: AOAM532HV1vwpgyi2BNy1PJzVIcouUXA+qQi571AvniMhio/TvkR9+8Z Kx04TU9Xg7xdTexNc9X3gEepdw== X-Received: by 2002:a1c:2390:: with SMTP id j138mr12513940wmj.72.1615549176799; Fri, 12 Mar 2021 03:39:36 -0800 (PST) Received: from srini-hackbox.lan (cpc86377-aztw32-2-0-cust226.18-1.cable.virginm.net. [92.233.226.227]) by smtp.gmail.com with ESMTPSA id z1sm7412458wru.95.2021.03.12.03.39.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 03:39:36 -0800 (PST) From: Srinivas Kandagatla To: broonie@kernel.org, vkoul@kernel.org Cc: robh@kernel.org, devicetree@vger.kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.intel.com, sanyog.r.kale@intel.com, linux-kernel@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 3/5] soundwire: qcom: add static port map support Date: Fri, 12 Mar 2021 11:39:27 +0000 Message-Id: <20210312113929.17512-4-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20210312113929.17512-1-srinivas.kandagatla@linaro.org> References: <20210312113929.17512-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org SoundWire device ports are statically mapped to Controller ports during design. Add support to read these from SoundWire devices. This controller uses static port map info to setup bandwidth parameters for those ports. A generic port allocation is not possible in this cases! Signed-off-by: Srinivas Kandagatla --- drivers/soundwire/qcom.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) -- 2.21.0 diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c index 9e70c53e2c7b..39222b04a2e0 100644 --- a/drivers/soundwire/qcom.c +++ b/drivers/soundwire/qcom.c @@ -460,6 +460,8 @@ static int qcom_swrm_compute_params(struct sdw_bus *bus) struct sdw_slave_runtime *s_rt; struct sdw_port_runtime *p_rt; struct qcom_swrm_port_config *pcfg; + struct sdw_slave *slave; + unsigned int m_port; int i = 0; list_for_each_entry(m_rt, &bus->m_rt_list, bus_node) { @@ -473,8 +475,14 @@ static int qcom_swrm_compute_params(struct sdw_bus *bus) } list_for_each_entry(s_rt, &m_rt->slave_rt_list, m_rt_node) { + slave = s_rt->slave; list_for_each_entry(p_rt, &s_rt->port_list, port_node) { - pcfg = &ctrl->pconfig[i]; + m_port = slave->m_port_map[p_rt->num]; + /* port config starts at offset 0 so -1 from actual port number */ + if (m_port) + pcfg = &ctrl->pconfig[m_port - 1]; + else + pcfg = &ctrl->pconfig[i]; p_rt->transport_params.port_num = p_rt->num; p_rt->transport_params.sample_interval = pcfg->si + 1; @@ -535,8 +543,10 @@ static int qcom_swrm_stream_alloc_ports(struct qcom_swrm_ctrl *ctrl, struct sdw_master_runtime *m_rt; struct sdw_slave_runtime *s_rt; struct sdw_port_runtime *p_rt; + struct sdw_slave *slave; unsigned long *port_mask; int i, maxport, pn, nports = 0, ret = 0; + unsigned int m_port; mutex_lock(&ctrl->port_lock); list_for_each_entry(m_rt, &stream->master_list, stream_node) { @@ -549,9 +559,15 @@ static int qcom_swrm_stream_alloc_ports(struct qcom_swrm_ctrl *ctrl, } list_for_each_entry(s_rt, &m_rt->slave_rt_list, m_rt_node) { + slave = s_rt->slave; list_for_each_entry(p_rt, &s_rt->port_list, port_node) { + m_port = slave->m_port_map[p_rt->num]; /* Port numbers start from 1 - 14*/ - pn = find_first_zero_bit(port_mask, maxport); + if (m_port) + pn = m_port; + else + pn = find_first_zero_bit(port_mask, maxport); + if (pn > maxport) { dev_err(ctrl->dev, "All ports busy\n"); ret = -EBUSY;