From patchwork Fri Mar 12 12:22:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 398606 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp1149359jai; Fri, 12 Mar 2021 04:24:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJxs/Hmh0qfSr1XNpjE/bzy98fxYBmRpy2zOf4tIt2xNfonMOHXxkPLzAkntiMapgRqrKcyI X-Received: by 2002:a17:906:f12:: with SMTP id z18mr8255104eji.132.1615551843198; Fri, 12 Mar 2021 04:24:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615551843; cv=none; d=google.com; s=arc-20160816; b=EvgcWgpUv3zwQfgLYb61G5CImVk5PSAbG7zwJLnrNUgtkIlV1A263HHHKokqulghrW D/cT7w6HhSxKc3CChoU8cLFirydmPreNOAQQ6VPjHBZqeVSpK4JpgCo2QjycmVtZ/AmL FS9JH6fSUIQLUHwolNYXRaGbdkzXDoDNI5LpjZa67F5d0wm/Tqdgv8Nd+RjCBhBbk10U DQWfEmfaPhhbaoFHXboW1WHgfZyRk34wMndJwzE7YN3mmSpWzsT1AcPLa7FSuS8DK2+f gP+3xi7K3wIZuJSngSeyAcfXrp1trtnDFaimoYPvq+DJvFB4whCiwHX6WTjhSNLl9jjv t5pQ== 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=elxIAI0zY8aXu5mmDKvmE71368PnpWF1vB1iaNcqGqMSKTsQynQvpNRpWkO+K1wN3g +FLCl6bDENEYwivp9Hxy105dbqrrSbYej7UWiqOTo51A4MjaSNAcgvtZ837iWQNEZN4i TFQ3xJ+dtohpeC39fJc3DVMg2J/d/jANZUSsrBIrEVAmBmwLiB2sld6fzn92Y2fo0tef WCv66nB1KX1br+fFoGer5Gyv2BPQypoC/cc2bEsO5wkHFxvxH+sNhir+b4eG3kxsdwjl eG2DA3XQpfZfxzEE7NNfMHAVumwQdpiAKd7hYU76MSDbxButypUDfvKvxo6LCeh3WKP6 8G3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=YRawz45L; 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 qu25si4092931ejb.665.2021.03.12.04.24.02; Fri, 12 Mar 2021 04:24:03 -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=YRawz45L; 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 S229900AbhCLMX2 (ORCPT + 6 others); Fri, 12 Mar 2021 07:23:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231277AbhCLMXC (ORCPT ); Fri, 12 Mar 2021 07:23:02 -0500 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6057FC061574 for ; Fri, 12 Mar 2021 04:23:02 -0800 (PST) Received: by mail-wr1-x42e.google.com with SMTP id j2so4685938wrx.9 for ; Fri, 12 Mar 2021 04:23:02 -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=YRawz45LNtttk3HenoCONJFDTNNca+FzdessU2tg+yt1grzPilMT9kL/9Wh3yC/Ofe wpOC52qJcJSsHIbRBC4+CK/MUpraS78G8Ow2jtKaV6LjUWo7gzq535HIjhIhACv0A1z0 U1VOs3A7KyrcGJdKpckT/As/AEtmgme9cg3AZ0NP6p2RJyjfT8YhtxLLne7UPuHC0cpC 4MTVhMV+u6t7vPSVkCsHnjmVnsLMrgJIZUwsC5lXoVBQ0o/vjJu8dH3AGjtq2b0f9acM OiB4MkB2fPA6b/pl8NlLc2CNvMqZ/Cwi+ObLOWxvt3zwPL0+CWqRUCzBkDLYtqqQxXz7 uyHA== 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=DiD47yWfU9OCk+0qmD63NrxQODVUKm0U7VTSF2MOIp5lOmN4XtvM6nRivhei7NTaPU gLQ7kYmI+D1m6FzU+VwCHElIC22c2yYshHhGSLaMOwviAB4v4wRXU3xF9XVNfk36arQA YsSoDd1vdIaRNFVYjxIIWpK40JOoFqrwIEuIZy7sQQPOM8tBRXvv6moM1ZaPP2ui3yi5 k+xmu+Ssr3KnQKamyMNzw9F1rQoA6TUqbL0CO0t3VUM2r2L8ULzsI0CLKJXHfY4DO7eX ZBjSsR69elL8m3bEv42XorOlKLS951EqTc1Okneewbf3ODIY6PW5PHVwjuFvkfp3PsMR g5zA== X-Gm-Message-State: AOAM533CVM7epyyXkJ+NPHOmjdf22FuDEp/euDbyPlCx9x/VEQEbTC8w IrhB4IulvM7M398ACVPYCuSDmg== X-Received: by 2002:a05:6000:2aa:: with SMTP id l10mr13737171wry.368.1615551781175; Fri, 12 Mar 2021 04:23:01 -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 3sm8804329wry.72.2021.03.12.04.23.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 04:23:00 -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, alsa-devel@alsa-project.org, Srinivas Kandagatla Subject: [RESEND PATCH v3 3/5] soundwire: qcom: add static port map support Date: Fri, 12 Mar 2021 12:22:53 +0000 Message-Id: <20210312122255.3143-4-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20210312122255.3143-1-srinivas.kandagatla@linaro.org> References: <20210312122255.3143-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;